Beispiel #1
0
static void
aaline_delete_fs_state(struct pipe_context *pipe, void *fs)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   struct aaline_fragment_shader *aafs = (struct aaline_fragment_shader *) fs;
   /* pass-through */
   aaline->driver_delete_fs_state(aaline->pipe, aafs->driver_fs);
   FREE(aafs);
}
static void
aaline_bind_fs_state(struct pipe_context *pipe, void *fs)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   struct aaline_fragment_shader *aafs = (struct aaline_fragment_shader *) fs;

   /* save current */
   aaline->fs = aafs;
   /* pass-through */
   aaline->driver_bind_fs_state(pipe, (aafs ? aafs->driver_fs : NULL));
}
static void
aaline_bind_sampler_states(struct pipe_context *pipe,
                           unsigned num, void **sampler)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);

   /* save current */
   memcpy(aaline->state.sampler, sampler, num * sizeof(void *));
   aaline->num_samplers = num;

   /* pass-through */
   aaline->driver_bind_sampler_states(pipe, num, sampler);
}
Beispiel #4
0
/**
 * This function overrides the driver's create_fs_state() function and
 * will typically be called by the state tracker.
 */
static void *
aaline_create_fs_state(struct pipe_context *pipe,
                       const struct pipe_shader_state *fs)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   struct aaline_fragment_shader *aafs = CALLOC_STRUCT(aaline_fragment_shader);
   if (aafs == NULL)
      return NULL;

   aafs->state = *fs;

   /* pass-through */
   aafs->driver_fs = aaline->driver_create_fs_state(aaline->pipe, fs);

   return aafs;
}
Beispiel #5
0
static void
aaline_set_sampler_textures(struct pipe_context *pipe,
                            unsigned num, struct pipe_texture **texture)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   uint i;

   /* save current */
   for (i = 0; i < num; i++) {
      pipe_texture_reference(&aaline->state.texture[i], texture[i]);
   }
   for ( ; i < PIPE_MAX_SAMPLERS; i++) {
      pipe_texture_reference(&aaline->state.texture[i], NULL);
   }
   aaline->num_textures = num;

   /* pass-through */
   aaline->driver_set_sampler_textures(aaline->pipe, num, texture);
}
static void
aaline_set_sampler_views(struct pipe_context *pipe,
                         unsigned num,
                         struct pipe_sampler_view **views)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   uint i;

   /* save current */
   for (i = 0; i < num; i++) {
      pipe_sampler_view_reference(&aaline->state.sampler_views[i], views[i]);
   }
   for ( ; i < PIPE_MAX_SAMPLERS; i++) {
      pipe_sampler_view_reference(&aaline->state.sampler_views[i], NULL);
   }
   aaline->num_sampler_views = num;

   /* pass-through */
   aaline->driver_set_sampler_views(pipe, num, views);
}
Beispiel #7
0
static void
aaline_bind_sampler_states(struct pipe_context *pipe, unsigned shader,
                           unsigned start, unsigned num, void **sampler)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);

   assert(start == 0);

   if (aaline == NULL) {
      return;
   }

   if (shader == PIPE_SHADER_FRAGMENT) {
      /* save current */
      memcpy(aaline->state.sampler, sampler, num * sizeof(void *));
      aaline->num_samplers = num;
   }

   /* pass-through */
   aaline->driver_bind_sampler_states(pipe, shader, start, num, sampler);
}
Beispiel #8
0
static void
aaline_delete_fs_state(struct pipe_context *pipe, void *fs)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   struct aaline_fragment_shader *aafs = (struct aaline_fragment_shader *) fs;

   if (aafs == NULL) {
      return;
   }

   if (aaline != NULL) {
      /* pass-through */
      aaline->driver_delete_fs_state(pipe, aafs->driver_fs);

      if (aafs->aaline_fs)
         aaline->driver_delete_fs_state(pipe, aafs->aaline_fs);
   }

   FREE((void*)aafs->state.tokens);
   FREE(aafs);
}
Beispiel #9
0
static void
aaline_set_sampler_views(struct pipe_context *pipe, unsigned shader,
                         unsigned start, unsigned num,
                         struct pipe_sampler_view **views)
{
   struct aaline_stage *aaline = aaline_stage_from_pipe(pipe);
   uint i;

   if (aaline == NULL) {
      return;
   }

   if (shader == PIPE_SHADER_FRAGMENT) {
      /* save current */
      for (i = 0; i < num; i++) {
         pipe_sampler_view_reference(&aaline->state.sampler_views[start + i],
                                     views[i]);
      }
      aaline->num_sampler_views = num;
   }

   /* pass-through */
   aaline->driver_set_sampler_views(pipe, shader, start, num, views);
}