static void galahad_context_surface_destroy(struct pipe_context *_pipe, struct pipe_surface *_surface) { galahad_surface_destroy(galahad_context(_pipe), galahad_surface(_surface)); }
static void galahad_context_bind_sampler_states(struct pipe_context *_pipe, unsigned shader, unsigned start, unsigned num_samplers, void **samplers) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; if (num_samplers > PIPE_MAX_SAMPLERS) { glhd_error("%u samplers requested, " "but only %u are permitted by API", num_samplers, PIPE_MAX_SAMPLERS); } switch (shader) { case PIPE_SHADER_VERTEX: pipe->bind_vertex_sampler_states(pipe, num_samplers, samplers); break; case PIPE_SHADER_FRAGMENT: pipe->bind_fragment_sampler_states(pipe, num_samplers, samplers); break; default: assert(0); } }
static void galahad_context_transfer_destroy(struct pipe_context *_pipe, struct pipe_transfer *_transfer) { galahad_transfer_destroy(galahad_context(_pipe), galahad_transfer(_transfer)); }
static void galahad_context_set_sampler_views(struct pipe_context *_pipe, unsigned shader, unsigned start, unsigned num, struct pipe_sampler_view **_views) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS]; struct pipe_sampler_view **views = NULL; unsigned i; if (_views) { for (i = 0; i < num; i++) unwrapped_views[i] = galahad_sampler_view_unwrap(_views[i]); for (; i < PIPE_MAX_SAMPLERS; i++) unwrapped_views[i] = NULL; views = unwrapped_views; } switch (shader) { case PIPE_SHADER_VERTEX: pipe->set_vertex_sampler_views(pipe, num, views); break; case PIPE_SHADER_FRAGMENT: pipe->set_fragment_sampler_views(pipe, num, views); break; default: assert(0); } }
static void galahad_context_sampler_view_destroy(struct pipe_context *_pipe, struct pipe_sampler_view *_view) { galahad_sampler_view_destroy(galahad_context(_pipe), galahad_sampler_view(_view)); }
static void galahad_set_index_buffer(struct pipe_context *_pipe, const struct pipe_index_buffer *_ib) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; struct pipe_index_buffer unwrapped_ib, *ib = NULL; if (_ib->buffer) { switch (_ib->index_size) { case 1: case 2: case 4: break; default: glhd_warn("index buffer %p has unrecognized index size %d", (void *) _ib->buffer, _ib->index_size); break; } } else if (_ib->offset || _ib->index_size) { glhd_warn("non-indexed state with index offset %d and index size %d", _ib->offset, _ib->index_size); } if (_ib) { unwrapped_ib = *_ib; unwrapped_ib.buffer = galahad_resource_unwrap(_ib->buffer); ib = &unwrapped_ib; } pipe->set_index_buffer(pipe, ib); }
static void galahad_set_framebuffer_state(struct pipe_context *_pipe, const struct pipe_framebuffer_state *_state) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; struct pipe_framebuffer_state unwrapped_state; struct pipe_framebuffer_state *state = NULL; unsigned i; if (_state->nr_cbufs > PIPE_MAX_COLOR_BUFS) { glhd_error("%d render targets bound, but only %d are permitted by API", _state->nr_cbufs, PIPE_MAX_COLOR_BUFS); } else if (_state->nr_cbufs > pipe->screen->get_param(pipe->screen, PIPE_CAP_MAX_RENDER_TARGETS)) { glhd_warn("%d render targets bound, but only %d are supported", _state->nr_cbufs, pipe->screen->get_param(pipe->screen, PIPE_CAP_MAX_RENDER_TARGETS)); } /* unwrap the input state */ if (_state) { memcpy(&unwrapped_state, _state, sizeof(unwrapped_state)); for(i = 0; i < _state->nr_cbufs; i++) unwrapped_state.cbufs[i] = galahad_surface_unwrap(_state->cbufs[i]); for (; i < PIPE_MAX_COLOR_BUFS; i++) unwrapped_state.cbufs[i] = NULL; unwrapped_state.zsbuf = galahad_surface_unwrap(_state->zsbuf); state = &unwrapped_state; } pipe->set_framebuffer_state(pipe, state); }
static void galahad_clear_depth_stencil(struct pipe_context *_pipe, struct pipe_surface *_dst, unsigned clear_flags, double depth, unsigned stencil, unsigned dstx, unsigned dsty, unsigned width, unsigned height) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct galahad_surface *glhd_surface_dst = galahad_surface(_dst); struct pipe_context *pipe = glhd_pipe->pipe; struct pipe_surface *dst = glhd_surface_dst->surface; pipe->clear_depth_stencil(pipe, dst, clear_flags, depth, stencil, dstx, dsty, width, height); }
static void galahad_set_constant_buffer(struct pipe_context *_pipe, uint shader, uint index, struct pipe_resource *_resource) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; struct pipe_resource *unwrapped_resource; struct pipe_resource *resource = NULL; if (shader >= PIPE_SHADER_TYPES) { glhd_error("Unknown shader type %u", shader); } if (index && index >= pipe->screen->get_shader_param(pipe->screen, shader, PIPE_SHADER_CAP_MAX_CONST_BUFFERS)) { glhd_error("Access to constant buffer %u requested, " "but only %d are supported", index, pipe->screen->get_shader_param(pipe->screen, shader, PIPE_SHADER_CAP_MAX_CONST_BUFFERS)); } /* XXX hmm? unwrap the input state */ if (_resource) { unwrapped_resource = galahad_resource_unwrap(_resource); resource = unwrapped_resource; } pipe->set_constant_buffer(pipe, shader, index, resource); }
static void galahad_set_scissor_state(struct pipe_context *_pipe, const struct pipe_scissor_state *scissor) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_scissor_state(pipe, scissor); }
static void galahad_set_polygon_stipple(struct pipe_context *_pipe, const struct pipe_poly_stipple *poly_stipple) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_polygon_stipple(pipe, poly_stipple); }
static void galahad_set_sample_mask(struct pipe_context *_pipe, unsigned sample_mask) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_sample_mask(pipe, sample_mask); }
static void galahad_set_clip_state(struct pipe_context *_pipe, const struct pipe_clip_state *clip) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_clip_state(pipe, clip); }
static void * galahad_create_depth_stencil_alpha_state(struct pipe_context *_pipe, const struct pipe_depth_stencil_alpha_state *depth_stencil_alpha) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; return pipe->create_depth_stencil_alpha_state(pipe, depth_stencil_alpha); }
static void galahad_delete_vertex_elements_state(struct pipe_context *_pipe, void *velems) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_vertex_elements_state(pipe, velems); }
static void galahad_bind_vs_state(struct pipe_context *_pipe, void *vs) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->bind_vs_state(pipe, vs); }
static void galahad_destroy(struct pipe_context *_pipe) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->destroy(pipe); FREE(glhd_pipe); }
static void * galahad_create_vs_state(struct pipe_context *_pipe, const struct pipe_shader_state *vs) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; return pipe->create_vs_state(pipe, vs); }
static void galahad_delete_fs_state(struct pipe_context *_pipe, void *fs) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_fs_state(pipe, fs); }
static void galahad_delete_depth_stencil_alpha_state(struct pipe_context *_pipe, void *depth_stencil_alpha) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_depth_stencil_alpha_state(pipe, depth_stencil_alpha); }
static void galahad_set_viewport_state(struct pipe_context *_pipe, const struct pipe_viewport_state *viewport) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_viewport_state(pipe, viewport); }
static void galahad_delete_sampler_state(struct pipe_context *_pipe, void *sampler) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_sampler_state(pipe, sampler); }
static void galahad_delete_blend_state(struct pipe_context *_pipe, void *blend) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_blend_state(pipe, blend); }
static void galahad_delete_rasterizer_state(struct pipe_context *_pipe, void *rasterizer) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->delete_rasterizer_state(pipe, rasterizer); }
static void galahad_flush(struct pipe_context *_pipe, struct pipe_fence_handle **fence) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->flush(pipe, fence); }
static void * galahad_create_sampler_state(struct pipe_context *_pipe, const struct pipe_sampler_state *sampler) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; return pipe->create_sampler_state(pipe, sampler); }
static void galahad_set_blend_color(struct pipe_context *_pipe, const struct pipe_blend_color *blend_color) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_blend_color(pipe, blend_color); }
static void galahad_context_render_condition(struct pipe_context *_context, struct pipe_query *query, uint mode) { struct galahad_context *glhd_context = galahad_context(_context); struct pipe_context *context = glhd_context->pipe; context->render_condition(context, query, mode); }
static void galahad_begin_query(struct pipe_context *_pipe, struct pipe_query *query) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->begin_query(pipe, query); }
static void galahad_set_stencil_ref(struct pipe_context *_pipe, const struct pipe_stencil_ref *stencil_ref) { struct galahad_context *glhd_pipe = galahad_context(_pipe); struct pipe_context *pipe = glhd_pipe->pipe; pipe->set_stencil_ref(pipe, stencil_ref); }