From 62f9ba1bf2eaad056104ffa63128bf1face4b60d Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Mon, 16 Sep 2019 14:55:13 +0200 Subject: [PATCH] rbug: unwrap index buffer resource All resources passed to the drivers below rbug need to be unwrapped before being passed down. We missed to do this for the index buffer resource when this was made part of the draw_info structure. Fixes: 330d0607ed60 (gallium: remove pipe_index_buffer and set_index_buffer) Signed-off-by: Lucas Stach (cherry picked from commit a75eb888e0ceeaa61b3583668c05cc1f5f5786ce) --- src/gallium/auxiliary/driver_rbug/rbug_context.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/driver_rbug/rbug_context.c b/src/gallium/auxiliary/driver_rbug/rbug_context.c index adf3493aab5..436fd8bd83e 100644 --- a/src/gallium/auxiliary/driver_rbug/rbug_context.c +++ b/src/gallium/auxiliary/driver_rbug/rbug_context.c @@ -114,10 +114,15 @@ rbug_draw_block_locked(struct rbug_context *rb_pipe, int flag) } static void -rbug_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *info) +rbug_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *_info) { struct rbug_context *rb_pipe = rbug_context(_pipe); struct pipe_context *pipe = rb_pipe->pipe; + struct pipe_draw_info info; + + info = *_info; + if(_info->index_size && !_info->has_user_indices) + info.index.resource = rbug_resource_unwrap(_info->index.resource); mtx_lock(&rb_pipe->draw_mutex); rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_BEFORE); @@ -127,7 +132,7 @@ rbug_draw_vbo(struct pipe_context *_pipe, const struct pipe_draw_info *info) if (!(rb_pipe->curr.shader[PIPE_SHADER_FRAGMENT] && rb_pipe->curr.shader[PIPE_SHADER_FRAGMENT]->disabled) && !(rb_pipe->curr.shader[PIPE_SHADER_GEOMETRY] && rb_pipe->curr.shader[PIPE_SHADER_GEOMETRY]->disabled) && !(rb_pipe->curr.shader[PIPE_SHADER_VERTEX] && rb_pipe->curr.shader[PIPE_SHADER_VERTEX]->disabled)) - pipe->draw_vbo(pipe, info); + pipe->draw_vbo(pipe, &info); mtx_unlock(&rb_pipe->call_mutex); rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_AFTER);