X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Frbug%2Frbug_context.c;h=0e7badb1d0fe7abe36cb4311a11846b53982dcd5;hb=bad8871e524cf518bc5da4ac52c1618a115054a7;hp=28f300877cf9cbda4a990d929b118c2290f72945;hpb=e73bf3b805de78299f1a652668ba4e6eab9bac94;p=mesa.git diff --git a/src/gallium/drivers/rbug/rbug_context.c b/src/gallium/drivers/rbug/rbug_context.c index 28f300877cf..0e7badb1d0f 100644 --- a/src/gallium/drivers/rbug/rbug_context.c +++ b/src/gallium/drivers/rbug/rbug_context.c @@ -60,7 +60,7 @@ rbug_draw_block_locked(struct rbug_context *rb_pipe, int flag) rb_pipe->draw_blocked |= flag; } else if ((rb_pipe->draw_rule.blocker & flag) && (rb_pipe->draw_blocker & RBUG_BLOCK_RULE)) { - int k; + unsigned k; boolean block = FALSE; unsigned sh; @@ -263,32 +263,15 @@ rbug_create_sampler_state(struct pipe_context *_pipe, } static void -rbug_bind_fragment_sampler_states(struct pipe_context *_pipe, - unsigned num_samplers, - void **samplers) +rbug_bind_sampler_states(struct pipe_context *_pipe, unsigned shader, + unsigned start, unsigned count, + void **samplers) { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; pipe_mutex_lock(rb_pipe->call_mutex); - pipe->bind_fragment_sampler_states(pipe, - num_samplers, - samplers); - pipe_mutex_unlock(rb_pipe->call_mutex); -} - -static void -rbug_bind_vertex_sampler_states(struct pipe_context *_pipe, - unsigned num_samplers, - void **samplers) -{ - struct rbug_context *rb_pipe = rbug_context(_pipe); - struct pipe_context *pipe = rb_pipe->pipe; - - pipe_mutex_lock(rb_pipe->call_mutex); - pipe->bind_vertex_sampler_states(pipe, - num_samplers, - samplers); + pipe->bind_sampler_states(pipe, shader, start, count, samplers); pipe_mutex_unlock(rb_pipe->call_mutex); } @@ -693,28 +676,30 @@ rbug_set_polygon_stipple(struct pipe_context *_pipe, } static void -rbug_set_scissor_state(struct pipe_context *_pipe, - const struct pipe_scissor_state *scissor) +rbug_set_scissor_states(struct pipe_context *_pipe, + unsigned start_slot, + unsigned num_scissors, + const struct pipe_scissor_state *scissor) { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; pipe_mutex_lock(rb_pipe->call_mutex); - pipe->set_scissor_state(pipe, - scissor); + pipe->set_scissor_states(pipe, start_slot, num_scissors, scissor); pipe_mutex_unlock(rb_pipe->call_mutex); } static void -rbug_set_viewport_state(struct pipe_context *_pipe, - const struct pipe_viewport_state *viewport) +rbug_set_viewport_states(struct pipe_context *_pipe, + unsigned start_slot, + unsigned num_viewports, + const struct pipe_viewport_state *viewport) { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; pipe_mutex_lock(rb_pipe->call_mutex); - pipe->set_viewport_state(pipe, - viewport); + pipe->set_viewport_states(pipe, start_slot, num_viewports, viewport); pipe_mutex_unlock(rb_pipe->call_mutex); } @@ -727,7 +712,7 @@ rbug_set_sampler_views(struct pipe_context *_pipe, { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; - struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS]; + struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SHADER_SAMPLER_VIEWS]; struct pipe_sampler_view **views = NULL; unsigned i; @@ -751,36 +736,11 @@ rbug_set_sampler_views(struct pipe_context *_pipe, 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); - } + pipe->set_sampler_views(pipe, shader, start, num, views); pipe_mutex_unlock(rb_pipe->call_mutex); } -static void -rbug_set_vertex_sampler_views(struct pipe_context *_pipe, - unsigned num, - struct pipe_sampler_view **_views) -{ - rbug_set_sampler_views(_pipe, PIPE_SHADER_VERTEX, 0, num, _views); -} - -static void -rbug_set_fragment_sampler_views(struct pipe_context *_pipe, - unsigned num, - struct pipe_sampler_view **_views) -{ - rbug_set_sampler_views(_pipe, PIPE_SHADER_FRAGMENT, 0, num, _views); -} - static void rbug_set_vertex_buffers(struct pipe_context *_pipe, unsigned start_slot, unsigned num_buffers, @@ -870,6 +830,20 @@ rbug_resource_copy_region(struct pipe_context *_pipe, pipe_mutex_unlock(rb_pipe->call_mutex); } +static void +rbug_flush_resource(struct pipe_context *_pipe, + struct pipe_resource *_res) +{ + struct rbug_context *rb_pipe = rbug_context(_pipe); + struct rbug_resource *rb_resource_res = rbug_resource(_res); + struct pipe_context *pipe = rb_pipe->pipe; + struct pipe_resource *res = rb_resource_res->resource; + + pipe_mutex_lock(rb_pipe->call_mutex); + pipe->flush_resource(pipe, res); + pipe_mutex_unlock(rb_pipe->call_mutex); +} + static void rbug_clear(struct pipe_context *_pipe, unsigned buffers, @@ -941,14 +915,14 @@ rbug_clear_depth_stencil(struct pipe_context *_pipe, static void rbug_flush(struct pipe_context *_pipe, - struct pipe_fence_handle **fence) + struct pipe_fence_handle **fence, + unsigned flags) { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; pipe_mutex_lock(rb_pipe->call_mutex); - pipe->flush(pipe, - fence); + pipe->flush(pipe, fence, flags); pipe_mutex_unlock(rb_pipe->call_mutex); } @@ -1144,8 +1118,7 @@ rbug_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) rb_pipe->base.bind_blend_state = rbug_bind_blend_state; rb_pipe->base.delete_blend_state = rbug_delete_blend_state; rb_pipe->base.create_sampler_state = rbug_create_sampler_state; - rb_pipe->base.bind_fragment_sampler_states = rbug_bind_fragment_sampler_states; - rb_pipe->base.bind_vertex_sampler_states = rbug_bind_vertex_sampler_states; + rb_pipe->base.bind_sampler_states = rbug_bind_sampler_states; rb_pipe->base.delete_sampler_state = rbug_delete_sampler_state; rb_pipe->base.create_rasterizer_state = rbug_create_rasterizer_state; rb_pipe->base.bind_rasterizer_state = rbug_bind_rasterizer_state; @@ -1171,14 +1144,14 @@ rbug_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) rb_pipe->base.set_constant_buffer = rbug_set_constant_buffer; rb_pipe->base.set_framebuffer_state = rbug_set_framebuffer_state; rb_pipe->base.set_polygon_stipple = rbug_set_polygon_stipple; - rb_pipe->base.set_scissor_state = rbug_set_scissor_state; - rb_pipe->base.set_viewport_state = rbug_set_viewport_state; - rb_pipe->base.set_fragment_sampler_views = rbug_set_fragment_sampler_views; - rb_pipe->base.set_vertex_sampler_views = rbug_set_vertex_sampler_views; + rb_pipe->base.set_scissor_states = rbug_set_scissor_states; + rb_pipe->base.set_viewport_states = rbug_set_viewport_states; + rb_pipe->base.set_sampler_views = rbug_set_sampler_views; rb_pipe->base.set_vertex_buffers = rbug_set_vertex_buffers; rb_pipe->base.set_index_buffer = rbug_set_index_buffer; rb_pipe->base.set_sample_mask = rbug_set_sample_mask; rb_pipe->base.resource_copy_region = rbug_resource_copy_region; + rb_pipe->base.flush_resource = rbug_flush_resource; rb_pipe->base.clear = rbug_clear; rb_pipe->base.clear_render_target = rbug_clear_render_target; rb_pipe->base.clear_depth_stencil = rbug_clear_depth_stencil;