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); }
/** * 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; }
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); }
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); }
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); }
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); }