diff options
Diffstat (limited to 'src/gallium/drivers/trace')
| -rw-r--r-- | src/gallium/drivers/trace/README | 5 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_context.c | 199 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_context.h | 3 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_dump.c | 4 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_dump_state.c | 32 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_dump_state.h | 3 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_rbug.c | 26 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_screen.c | 4 | ||||
| -rw-r--r-- | src/gallium/drivers/trace/tr_state.h | 2 | 
9 files changed, 144 insertions, 134 deletions
| diff --git a/src/gallium/drivers/trace/README b/src/gallium/drivers/trace/README index 1000c31e49..203c3851bc 100644 --- a/src/gallium/drivers/trace/README +++ b/src/gallium/drivers/trace/README @@ -24,11 +24,10 @@ ensure the right libGL.so is being picked by doing   ldd progs/trivial/tri  -== Traceing == +== Tracing == -For traceing then do +For tracing then do - export XMESA_TRACE=y   GALLIUM_TRACE=tri.trace progs/trivial/tri  which should create a tri.trace file, which is an XML file. You can view copying  diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c index bf470b46ae..075e4f9a0b 100644 --- a/src/gallium/drivers/trace/tr_context.c +++ b/src/gallium/drivers/trace/tr_context.c @@ -52,6 +52,7 @@ trace_buffer_unwrap(struct trace_context *tr_ctx,     assert(tr_buf->buffer);     assert(tr_buf->buffer->screen == tr_scr->screen); +   (void) tr_scr;     return tr_buf->buffer;  } @@ -90,30 +91,12 @@ trace_surface_unwrap(struct trace_context *tr_ctx,     assert(tr_surf->surface);     assert(tr_surf->surface->texture->screen == tr_scr->screen); +   (void) tr_scr;     return tr_surf->surface;  }  static INLINE void -trace_context_set_edgeflags(struct pipe_context *_pipe, -                            const unsigned *bitfield) -{ -   struct trace_context *tr_ctx = trace_context(_pipe); -   struct pipe_context *pipe = tr_ctx->pipe; - -   trace_dump_call_begin("pipe_context", "set_edgeflags"); - -   trace_dump_arg(ptr, pipe); -   /* FIXME: we don't know how big this array is */ -   trace_dump_arg(ptr, bitfield); - -   pipe->set_edgeflags(pipe, bitfield);; - -   trace_dump_call_end(); -} - - -static INLINE void  trace_context_draw_block(struct trace_context *tr_ctx, int flag)  {     int k; @@ -143,10 +126,16 @@ trace_context_draw_block(struct trace_context *tr_ctx, int flag)           for (k = 0; k < tr_ctx->curr.nr_cbufs; k++)              if (tr_ctx->draw_rule.surf == tr_ctx->curr.cbufs[k])                 block = TRUE; -      if (tr_ctx->draw_rule.tex) +      if (tr_ctx->draw_rule.tex) {           for (k = 0; k < tr_ctx->curr.num_texs; k++)              if (tr_ctx->draw_rule.tex == tr_ctx->curr.tex[k])                 block = TRUE; +         for (k = 0; k < tr_ctx->curr.num_vert_texs; k++) { +            if (tr_ctx->draw_rule.tex == tr_ctx->curr.vert_tex[k]) { +               block = TRUE; +            } +         } +      }        if (block)           tr_ctx->draw_blocked |= (flag | 4); @@ -172,16 +161,15 @@ trace_context_draw_block(struct trace_context *tr_ctx, int flag)     pipe_mutex_unlock(tr_ctx->draw_mutex);  } -static INLINE boolean +static INLINE void  trace_context_draw_arrays(struct pipe_context *_pipe,                            unsigned mode, unsigned start, unsigned count)  {     struct trace_context *tr_ctx = trace_context(_pipe);     struct pipe_context *pipe = tr_ctx->pipe; -   boolean result;     if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled) -      return 0; +      return;     trace_context_draw_block(tr_ctx, 1); @@ -192,19 +180,15 @@ trace_context_draw_arrays(struct pipe_context *_pipe,     trace_dump_arg(uint, start);     trace_dump_arg(uint, count); -   result = pipe->draw_arrays(pipe, mode, start, count);; - -   trace_dump_ret(bool, result); +   pipe->draw_arrays(pipe, mode, start, count);     trace_dump_call_end();     trace_context_draw_block(tr_ctx, 2); - -   return result;  } -static INLINE boolean +static INLINE void  trace_context_draw_elements(struct pipe_context *_pipe,                            struct pipe_buffer *_indexBuffer,                            unsigned indexSize, @@ -214,10 +198,9 @@ trace_context_draw_elements(struct pipe_context *_pipe,     struct trace_buffer *tr_buf = trace_buffer(_indexBuffer);     struct pipe_context *pipe = tr_ctx->pipe;     struct pipe_buffer *indexBuffer = tr_buf->buffer; -   boolean result;     if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled) -      return 0; +      return;     trace_context_draw_block(tr_ctx, 1); @@ -232,19 +215,15 @@ trace_context_draw_elements(struct pipe_context *_pipe,     trace_dump_arg(uint, start);     trace_dump_arg(uint, count); -   result = pipe->draw_elements(pipe, indexBuffer, indexSize, mode, start, count);; - -   trace_dump_ret(bool, result); +   pipe->draw_elements(pipe, indexBuffer, indexSize, mode, start, count);     trace_dump_call_end();     trace_context_draw_block(tr_ctx, 2); - -   return result;  } -static INLINE boolean +static INLINE void  trace_context_draw_range_elements(struct pipe_context *_pipe,                                    struct pipe_buffer *_indexBuffer,                                    unsigned indexSize, @@ -258,10 +237,9 @@ trace_context_draw_range_elements(struct pipe_context *_pipe,     struct trace_buffer *tr_buf = trace_buffer(_indexBuffer);     struct pipe_context *pipe = tr_ctx->pipe;     struct pipe_buffer *indexBuffer = tr_buf->buffer; -   boolean result;     if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled) -      return 0; +      return;     trace_context_draw_block(tr_ctx, 1); @@ -278,18 +256,14 @@ trace_context_draw_range_elements(struct pipe_context *_pipe,     trace_dump_arg(uint, start);     trace_dump_arg(uint, count); -   result = pipe->draw_range_elements(pipe, -                                      indexBuffer, -                                      indexSize, minIndex, maxIndex, -                                      mode, start, count); - -   trace_dump_ret(bool, result); +   pipe->draw_range_elements(pipe, +                             indexBuffer, +                             indexSize, minIndex, maxIndex, +                             mode, start, count);     trace_dump_call_end();     trace_context_draw_block(tr_ctx, 2); - -   return result;  } @@ -306,7 +280,7 @@ trace_context_create_query(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(uint, query_type); -   result = pipe->create_query(pipe, query_type);; +   result = pipe->create_query(pipe, query_type);     trace_dump_ret(ptr, result); @@ -328,7 +302,7 @@ trace_context_destroy_query(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, query); -   pipe->destroy_query(pipe, query);; +   pipe->destroy_query(pipe, query);     trace_dump_call_end();  } @@ -346,7 +320,7 @@ trace_context_begin_query(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, query); -   pipe->begin_query(pipe, query);; +   pipe->begin_query(pipe, query);     trace_dump_call_end();  } @@ -385,7 +359,7 @@ trace_context_get_query_result(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe); -   _result = pipe->get_query_result(pipe, query, wait, presult);; +   _result = pipe->get_query_result(pipe, query, wait, presult);     result = *presult;     trace_dump_arg(uint, result); @@ -410,7 +384,7 @@ trace_context_create_blend_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(blend_state, state); -   result = pipe->create_blend_state(pipe, state);; +   result = pipe->create_blend_state(pipe, state);     trace_dump_ret(ptr, result); @@ -432,7 +406,7 @@ trace_context_bind_blend_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->bind_blend_state(pipe, state);; +   pipe->bind_blend_state(pipe, state);     trace_dump_call_end();  } @@ -450,7 +424,7 @@ trace_context_delete_blend_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->delete_blend_state(pipe, state);; +   pipe->delete_blend_state(pipe, state);     trace_dump_call_end();  } @@ -469,7 +443,7 @@ trace_context_create_sampler_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(sampler_state, state); -   result = pipe->create_sampler_state(pipe, state);; +   result = pipe->create_sampler_state(pipe, state);     trace_dump_ret(ptr, result); @@ -480,19 +454,40 @@ trace_context_create_sampler_state(struct pipe_context *_pipe,  static INLINE void -trace_context_bind_sampler_states(struct pipe_context *_pipe, -                                  unsigned num_states, void **states) +trace_context_bind_fragment_sampler_states(struct pipe_context *_pipe, +                                           unsigned num_states, +                                           void **states)  {     struct trace_context *tr_ctx = trace_context(_pipe);     struct pipe_context *pipe = tr_ctx->pipe; -   trace_dump_call_begin("pipe_context", "bind_sampler_states"); +   trace_dump_call_begin("pipe_context", "bind_fragment_sampler_states");     trace_dump_arg(ptr, pipe);     trace_dump_arg(uint, num_states);     trace_dump_arg_array(ptr, states, num_states); -   pipe->bind_sampler_states(pipe, num_states, states);; +   pipe->bind_fragment_sampler_states(pipe, num_states, states); + +   trace_dump_call_end(); +} + + +static INLINE void +trace_context_bind_vertex_sampler_states(struct pipe_context *_pipe, +                                         unsigned num_states, +                                         void **states) +{ +   struct trace_context *tr_ctx = trace_context(_pipe); +   struct pipe_context *pipe = tr_ctx->pipe; + +   trace_dump_call_begin("pipe_context", "bind_vertex_sampler_states"); + +   trace_dump_arg(ptr, pipe); +   trace_dump_arg(uint, num_states); +   trace_dump_arg_array(ptr, states, num_states); + +   pipe->bind_vertex_sampler_states(pipe, num_states, states);     trace_dump_call_end();  } @@ -510,7 +505,7 @@ trace_context_delete_sampler_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->delete_sampler_state(pipe, state);; +   pipe->delete_sampler_state(pipe, state);     trace_dump_call_end();  } @@ -529,7 +524,7 @@ trace_context_create_rasterizer_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(rasterizer_state, state); -   result = pipe->create_rasterizer_state(pipe, state);; +   result = pipe->create_rasterizer_state(pipe, state);     trace_dump_ret(ptr, result); @@ -551,7 +546,7 @@ trace_context_bind_rasterizer_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->bind_rasterizer_state(pipe, state);; +   pipe->bind_rasterizer_state(pipe, state);     trace_dump_call_end();  } @@ -569,7 +564,7 @@ trace_context_delete_rasterizer_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->delete_rasterizer_state(pipe, state);; +   pipe->delete_rasterizer_state(pipe, state);     trace_dump_call_end();  } @@ -585,7 +580,7 @@ trace_context_create_depth_stencil_alpha_state(struct pipe_context *_pipe,     trace_dump_call_begin("pipe_context", "create_depth_stencil_alpha_state"); -   result = pipe->create_depth_stencil_alpha_state(pipe, state);; +   result = pipe->create_depth_stencil_alpha_state(pipe, state);     trace_dump_arg(ptr, pipe);     trace_dump_arg(depth_stencil_alpha_state, state); @@ -610,7 +605,7 @@ trace_context_bind_depth_stencil_alpha_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->bind_depth_stencil_alpha_state(pipe, state);; +   pipe->bind_depth_stencil_alpha_state(pipe, state);     trace_dump_call_end();  } @@ -628,7 +623,7 @@ trace_context_delete_depth_stencil_alpha_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->delete_depth_stencil_alpha_state(pipe, state);; +   pipe->delete_depth_stencil_alpha_state(pipe, state);     trace_dump_call_end();  } @@ -647,7 +642,7 @@ trace_context_create_fs_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(shader_state, state); -   result = pipe->create_fs_state(pipe, state);; +   result = pipe->create_fs_state(pipe, state);     trace_dump_ret(ptr, result); @@ -750,7 +745,7 @@ trace_context_bind_vs_state(struct pipe_context *_pipe,     if (tr_shdr && tr_shdr->replaced)        state = tr_shdr->replaced; -   pipe->bind_vs_state(pipe, state);; +   pipe->bind_vs_state(pipe, state);     trace_dump_call_end();  } @@ -770,7 +765,7 @@ trace_context_delete_vs_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(ptr, state); -   pipe->delete_vs_state(pipe, state);; +   pipe->delete_vs_state(pipe, state);     trace_dump_call_end(); @@ -790,7 +785,7 @@ trace_context_set_blend_color(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(blend_color, state); -   pipe->set_blend_color(pipe, state);; +   pipe->set_blend_color(pipe, state);     trace_dump_call_end();  } @@ -808,7 +803,7 @@ trace_context_set_clip_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(clip_state, state); -   pipe->set_clip_state(pipe, state);; +   pipe->set_clip_state(pipe, state);     trace_dump_call_end();  } @@ -880,7 +875,7 @@ trace_context_set_framebuffer_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(framebuffer_state, state); -   pipe->set_framebuffer_state(pipe, state);; +   pipe->set_framebuffer_state(pipe, state);     trace_dump_call_end();  } @@ -898,7 +893,7 @@ trace_context_set_polygon_stipple(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(poly_stipple, state); -   pipe->set_polygon_stipple(pipe, state);; +   pipe->set_polygon_stipple(pipe, state);     trace_dump_call_end();  } @@ -916,7 +911,7 @@ trace_context_set_scissor_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(scissor_state, state); -   pipe->set_scissor_state(pipe, state);; +   pipe->set_scissor_state(pipe, state);     trace_dump_call_end();  } @@ -934,16 +929,16 @@ trace_context_set_viewport_state(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(viewport_state, state); -   pipe->set_viewport_state(pipe, state);; +   pipe->set_viewport_state(pipe, state);     trace_dump_call_end();  }  static INLINE void -trace_context_set_sampler_textures(struct pipe_context *_pipe, -                                   unsigned num_textures, -                                   struct pipe_texture **textures) +trace_context_set_fragment_sampler_textures(struct pipe_context *_pipe, +                                            unsigned num_textures, +                                            struct pipe_texture **textures)  {     struct trace_context *tr_ctx = trace_context(_pipe);     struct trace_texture *tr_tex; @@ -959,13 +954,44 @@ trace_context_set_sampler_textures(struct pipe_context *_pipe,     }     textures = unwrapped_textures; -   trace_dump_call_begin("pipe_context", "set_sampler_textures"); +   trace_dump_call_begin("pipe_context", "set_fragment_sampler_textures"); + +   trace_dump_arg(ptr, pipe); +   trace_dump_arg(uint, num_textures); +   trace_dump_arg_array(ptr, textures, num_textures); + +   pipe->set_fragment_sampler_textures(pipe, num_textures, textures); + +   trace_dump_call_end(); +} + + +static INLINE void +trace_context_set_vertex_sampler_textures(struct pipe_context *_pipe, +                                          unsigned num_textures, +                                          struct pipe_texture **textures) +{ +   struct trace_context *tr_ctx = trace_context(_pipe); +   struct trace_texture *tr_tex; +   struct pipe_context *pipe = tr_ctx->pipe; +   struct pipe_texture *unwrapped_textures[PIPE_MAX_VERTEX_SAMPLERS]; +   unsigned i; + +   tr_ctx->curr.num_vert_texs = num_textures; +   for(i = 0; i < num_textures; ++i) { +      tr_tex = trace_texture(textures[i]); +      tr_ctx->curr.vert_tex[i] = tr_tex; +      unwrapped_textures[i] = tr_tex ? tr_tex->texture : NULL; +   } +   textures = unwrapped_textures; + +   trace_dump_call_begin("pipe_context", "set_vertex_sampler_textures");     trace_dump_arg(ptr, pipe);     trace_dump_arg(uint, num_textures);     trace_dump_arg_array(ptr, textures, num_textures); -   pipe->set_sampler_textures(pipe, num_textures, textures);; +   pipe->set_vertex_sampler_textures(pipe, num_textures, textures);     trace_dump_call_end();  } @@ -1024,7 +1050,7 @@ trace_context_set_vertex_elements(struct pipe_context *_pipe,     trace_dump_struct_array(vertex_element, elements, num_elements);     trace_dump_arg_end(); -   pipe->set_vertex_elements(pipe, num_elements, elements);; +   pipe->set_vertex_elements(pipe, num_elements, elements);     trace_dump_call_end();  } @@ -1085,7 +1111,7 @@ trace_context_surface_fill(struct pipe_context *_pipe,     trace_dump_arg(uint, width);     trace_dump_arg(uint, height); -   pipe->surface_fill(pipe, dst, dstx, dsty, width, height, value);; +   pipe->surface_fill(pipe, dst, dstx, dsty, width, height, value);     trace_dump_call_end();  } @@ -1128,7 +1154,7 @@ trace_context_flush(struct pipe_context *_pipe,     trace_dump_arg(ptr, pipe);     trace_dump_arg(uint, flags); -   pipe->flush(pipe, flags, fence);; +   pipe->flush(pipe, flags, fence);     if(fence)        trace_dump_ret(ptr, *fence); @@ -1240,7 +1266,6 @@ trace_context_create(struct pipe_screen *_screen,     tr_ctx->base.winsys = _screen->winsys;     tr_ctx->base.screen = _screen;     tr_ctx->base.destroy = trace_context_destroy; -   tr_ctx->base.set_edgeflags = trace_context_set_edgeflags;     tr_ctx->base.draw_arrays = trace_context_draw_arrays;     tr_ctx->base.draw_elements = trace_context_draw_elements;     tr_ctx->base.draw_range_elements = trace_context_draw_range_elements; @@ -1253,7 +1278,8 @@ trace_context_create(struct pipe_screen *_screen,     tr_ctx->base.bind_blend_state = trace_context_bind_blend_state;     tr_ctx->base.delete_blend_state = trace_context_delete_blend_state;     tr_ctx->base.create_sampler_state = trace_context_create_sampler_state; -   tr_ctx->base.bind_sampler_states = trace_context_bind_sampler_states; +   tr_ctx->base.bind_fragment_sampler_states = trace_context_bind_fragment_sampler_states; +   tr_ctx->base.bind_vertex_sampler_states = trace_context_bind_vertex_sampler_states;     tr_ctx->base.delete_sampler_state = trace_context_delete_sampler_state;     tr_ctx->base.create_rasterizer_state = trace_context_create_rasterizer_state;     tr_ctx->base.bind_rasterizer_state = trace_context_bind_rasterizer_state; @@ -1274,7 +1300,8 @@ trace_context_create(struct pipe_screen *_screen,     tr_ctx->base.set_polygon_stipple = trace_context_set_polygon_stipple;     tr_ctx->base.set_scissor_state = trace_context_set_scissor_state;     tr_ctx->base.set_viewport_state = trace_context_set_viewport_state; -   tr_ctx->base.set_sampler_textures = trace_context_set_sampler_textures; +   tr_ctx->base.set_fragment_sampler_textures = trace_context_set_fragment_sampler_textures; +   tr_ctx->base.set_vertex_sampler_textures = trace_context_set_vertex_sampler_textures;     tr_ctx->base.set_vertex_buffers = trace_context_set_vertex_buffers;     tr_ctx->base.set_vertex_elements = trace_context_set_vertex_elements;     if (pipe->surface_copy) diff --git a/src/gallium/drivers/trace/tr_context.h b/src/gallium/drivers/trace/tr_context.h index 6febe4b411..852b480765 100644 --- a/src/gallium/drivers/trace/tr_context.h +++ b/src/gallium/drivers/trace/tr_context.h @@ -54,6 +54,9 @@ struct trace_context        struct trace_texture *tex[PIPE_MAX_SAMPLERS];        unsigned num_texs; +      struct trace_texture *vert_tex[PIPE_MAX_VERTEX_SAMPLERS]; +      unsigned num_vert_texs; +        unsigned nr_cbufs;        struct trace_texture *cbufs[PIPE_MAX_COLOR_BUFS];        struct trace_texture *zsbuf; diff --git a/src/gallium/drivers/trace/tr_dump.c b/src/gallium/drivers/trace/tr_dump.c index 7e2ccbcfdc..0f45e211a3 100644 --- a/src/gallium/drivers/trace/tr_dump.c +++ b/src/gallium/drivers/trace/tr_dump.c @@ -40,7 +40,7 @@  #include "pipe/p_config.h" -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE)  #include <stdlib.h>  #endif @@ -258,7 +258,7 @@ boolean trace_dump_trace_begin()        trace_dump_writes("<?xml-stylesheet type='text/xsl' href='trace.xsl'?>\n");        trace_dump_writes("<trace version='0.1'>\n"); -#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE)        /* Linux applications rarely cleanup GL / Gallium resources so catch         * application exit here */        atexit(trace_dump_trace_close); diff --git a/src/gallium/drivers/trace/tr_dump_state.c b/src/gallium/drivers/trace/tr_dump_state.c index bcf6751af4..86237e03bc 100644 --- a/src/gallium/drivers/trace/tr_dump_state.c +++ b/src/gallium/drivers/trace/tr_dump_state.c @@ -43,19 +43,6 @@ void trace_dump_format(enum pipe_format format)  } -void trace_dump_block(const struct pipe_format_block *block) -{ -   if (!trace_dumping_enabled_locked()) -      return; - -   trace_dump_struct_begin("pipe_format_block"); -   trace_dump_member(uint, block, size); -   trace_dump_member(uint, block, width); -   trace_dump_member(uint, block, height); -   trace_dump_struct_end(); -} - -  static void trace_dump_reference(const struct pipe_reference *reference)  {     if (!trace_dumping_enabled_locked()) @@ -83,19 +70,15 @@ void trace_dump_template(const struct pipe_texture *templat)     trace_dump_member(format, templat, format);     trace_dump_member_begin("width"); -   trace_dump_array(uint, templat->width, 1); +   trace_dump_uint(templat->width0);     trace_dump_member_end();     trace_dump_member_begin("height"); -   trace_dump_array(uint, templat->height, 1); +   trace_dump_uint(templat->height0);     trace_dump_member_end();     trace_dump_member_begin("depth"); -   trace_dump_array(uint, templat->depth, 1); -   trace_dump_member_end(); - -   trace_dump_member_begin("block"); -   trace_dump_block(&templat->block); +   trace_dump_uint(templat->depth0);     trace_dump_member_end();     trace_dump_member(uint, templat, last_level); @@ -426,7 +409,7 @@ void trace_dump_sampler_state(const struct pipe_sampler_state *state)     trace_dump_member(uint, state, min_img_filter);     trace_dump_member(uint, state, min_mip_filter);     trace_dump_member(uint, state, mag_img_filter); -   trace_dump_member(bool, state, compare_mode); +   trace_dump_member(uint, state, compare_mode);     trace_dump_member(uint, state, compare_func);     trace_dump_member(bool, state, normalized_coords);     trace_dump_member(uint, state, prefilter); @@ -483,16 +466,9 @@ void trace_dump_transfer(const struct pipe_transfer *state)     trace_dump_struct_begin("pipe_transfer"); -   trace_dump_member(format, state, format);     trace_dump_member(uint, state, width);     trace_dump_member(uint, state, height); -   trace_dump_member_begin("block"); -   trace_dump_block(&state->block); -   trace_dump_member_end(); - -   trace_dump_member(uint, state, nblocksx); -   trace_dump_member(uint, state, nblocksy);     trace_dump_member(uint, state, stride);     trace_dump_member(uint, state, usage); diff --git a/src/gallium/drivers/trace/tr_dump_state.h b/src/gallium/drivers/trace/tr_dump_state.h index 05b821adb6..07ad6fbb20 100644 --- a/src/gallium/drivers/trace/tr_dump_state.h +++ b/src/gallium/drivers/trace/tr_dump_state.h @@ -35,11 +35,8 @@  void trace_dump_format(enum pipe_format format); -void trace_dump_block(const struct pipe_format_block *block); -  void trace_dump_template(const struct pipe_texture *templat); -  void trace_dump_rasterizer_state(const struct pipe_rasterizer_state *state);  void trace_dump_poly_stipple(const struct pipe_poly_stipple *state); diff --git a/src/gallium/drivers/trace/tr_rbug.c b/src/gallium/drivers/trace/tr_rbug.c index 81e0a6f3b0..0546aad9b5 100644 --- a/src/gallium/drivers/trace/tr_rbug.c +++ b/src/gallium/drivers/trace/tr_rbug.c @@ -26,6 +26,7 @@   **************************************************************************/ +#include "util/u_format.h"  #include "util/u_string.h"  #include "util/u_memory.h"  #include "util/u_simple_list.h" @@ -44,7 +45,7 @@  #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)  #  define sleep Sleep -#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) +#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_APPLE)  void usleep(int);  #  define sleep usleep  #else @@ -179,7 +180,7 @@ static int  trace_rbug_texture_info(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)  {     struct trace_screen *tr_scr = tr_rbug->tr_scr; -   struct trace_texture *tr_tex; +   struct trace_texture *tr_tex = NULL;     struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header;     struct tr_list *ptr;     struct pipe_texture *t; @@ -200,10 +201,12 @@ trace_rbug_texture_info(struct trace_rbug *tr_rbug, struct rbug_header *header,     t = tr_tex->texture;     rbug_send_texture_info_reply(tr_rbug->con, serial,                                 t->target, t->format, -                               t->width, t->last_level + 1, -                               t->height, t->last_level + 1, -                               t->depth, t->last_level + 1, -                               t->block.width, t->block.height, t->block.size, +                               &t->width0, 1, +                               &t->height0, 1, +                               &t->depth0, 1, +                               util_format_get_blockwidth(t->format), +                               util_format_get_blockheight(t->format), +                               util_format_get_blocksize(t->format),                                 t->last_level,                                 t->nr_samples,                                 t->tex_usage, @@ -220,7 +223,7 @@ trace_rbug_texture_read(struct trace_rbug *tr_rbug, struct rbug_header *header,     struct rbug_proto_texture_read *gptr = (struct rbug_proto_texture_read *)header;     struct trace_screen *tr_scr = tr_rbug->tr_scr; -   struct trace_texture *tr_tex; +   struct trace_texture *tr_tex = NULL;     struct tr_list *ptr;     struct pipe_screen *screen = tr_scr->screen; @@ -251,9 +254,12 @@ trace_rbug_texture_read(struct trace_rbug *tr_rbug, struct rbug_header *header,     map = screen->transfer_map(screen, t);     rbug_send_texture_read_reply(tr_rbug->con, serial, -                                t->format, -                                t->block.width, t->block.height, t->block.size, -                                (uint8_t*)map, t->stride * t->nblocksy, +                                t->texture->format, +                                util_format_get_blockwidth(t->texture->format), +                                util_format_get_blockheight(t->texture->format), +                                util_format_get_blocksize(t->texture->format), +                                (uint8_t*)map, +                                t->stride * util_format_get_nblocksy(t->texture->format, t->height),                                  t->stride,                                  NULL); diff --git a/src/gallium/drivers/trace/tr_screen.c b/src/gallium/drivers/trace/tr_screen.c index 7da9bd3866..117503aaff 100644 --- a/src/gallium/drivers/trace/tr_screen.c +++ b/src/gallium/drivers/trace/tr_screen.c @@ -25,6 +25,7 @@   *   **************************************************************************/ +#include "util/u_format.h"  #include "util/u_memory.h"  #include "util/u_simple_list.h" @@ -35,6 +36,7 @@  #include "tr_screen.h"  #include "pipe/p_inlines.h" +#include "pipe/p_format.h"  static boolean trace = FALSE; @@ -424,7 +426,7 @@ trace_screen_transfer_unmap(struct pipe_screen *_screen,     struct pipe_transfer *transfer = tr_trans->transfer;     if(tr_trans->map) { -      size_t size = transfer->nblocksy * transfer->stride; +      size_t size = util_format_get_nblocksy(transfer->texture->format, transfer->height) * transfer->stride;        trace_dump_call_begin("pipe_screen", "transfer_write"); diff --git a/src/gallium/drivers/trace/tr_state.h b/src/gallium/drivers/trace/tr_state.h index 1c16042ee5..e2f981d051 100644 --- a/src/gallium/drivers/trace/tr_state.h +++ b/src/gallium/drivers/trace/tr_state.h @@ -32,7 +32,7 @@ struct tgsi_token;  enum trace_shader_type {     TRACE_SHADER_FRAGMENT = 0,     TRACE_SHADER_VERTEX   = 1, -   TRACE_SHADER_GEOMETRY = 2, +   TRACE_SHADER_GEOMETRY = 2  };  struct trace_shader | 
