[Mesa-dev] [PATCH] trace: add missing set_shader_images()
Nicolai Hähnle
nhaehnle at gmail.com
Wed Apr 6 00:24:56 UTC 2016
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
On 05.04.2016 12:37, Samuel Pitoiset wrote:
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/gallium/drivers/trace/tr_context.c | 39 ++++++++++++++++++++++++++++++
> src/gallium/drivers/trace/tr_dump_state.c | 40 +++++++++++++++++++++++++++++++
> src/gallium/drivers/trace/tr_dump_state.h | 2 ++
> 3 files changed, 81 insertions(+)
>
> diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c
> index 57f8518..08b1d32 100644
> --- a/src/gallium/drivers/trace/tr_context.c
> +++ b/src/gallium/drivers/trace/tr_context.c
> @@ -1686,6 +1686,44 @@ static void trace_context_set_shader_buffers(struct pipe_context *_context,
> FREE(_buffers);
> }
>
> +static void trace_context_set_shader_images(struct pipe_context *_context,
> + unsigned shader,
> + unsigned start, unsigned nr,
> + struct pipe_image_view *images)
> +{
> + struct trace_context *tr_context = trace_context(_context);
> + struct pipe_context *context = tr_context->pipe;
> + struct pipe_image_view *_images = NULL;
> +
> + trace_dump_call_begin("pipe_context", "set_shader_images");
> + trace_dump_arg(ptr, context);
> + trace_dump_arg(uint, shader);
> + trace_dump_arg(uint, start);
> + trace_dump_arg_begin("images");
> + trace_dump_struct_array(image_view, images, nr);
> + trace_dump_arg_end();
> + trace_dump_call_end();
> +
> + if (images) {
> + int i;
> +
> + _images = MALLOC(nr * sizeof(struct pipe_image_view));
> + if (!_images)
> + return;
> +
> + for (i = 0; i < nr; i++) {
> + _images[i] = images[i];
> + _images[i].resource = trace_resource_unwrap(tr_context,
> + _images[i].resource);
> + }
> + }
> +
> + context->set_shader_images(context, shader, start, nr, _images);
> +
> + if (_images)
> + FREE(_images);
> +}
> +
> static void trace_context_launch_grid(struct pipe_context *_pipe,
> const struct pipe_grid_info *info)
> {
> @@ -1809,6 +1847,7 @@ trace_context_create(struct trace_screen *tr_scr,
> TR_CTX_INIT(set_tess_state);
> TR_CTX_INIT(set_shader_buffers);
> TR_CTX_INIT(launch_grid);
> + TR_CTX_INIT(set_shader_images);
>
> TR_CTX_INIT(transfer_map);
> TR_CTX_INIT(transfer_unmap);
> diff --git a/src/gallium/drivers/trace/tr_dump_state.c b/src/gallium/drivers/trace/tr_dump_state.c
> index b53d7db..3466831 100644
> --- a/src/gallium/drivers/trace/tr_dump_state.c
> +++ b/src/gallium/drivers/trace/tr_dump_state.c
> @@ -738,6 +738,46 @@ void trace_dump_shader_buffer(const struct pipe_shader_buffer *state)
> }
>
>
> +void trace_dump_image_view(const struct pipe_image_view *state)
> +{
> + if (!trace_dumping_enabled_locked())
> + return;
> +
> + if(!state) {
> + trace_dump_null();
> + return;
> + }
> +
> + trace_dump_struct_begin("pipe_image_view");
> + trace_dump_member(resource_ptr, state, resource);
> + trace_dump_member(uint, state, format);
> + trace_dump_member(uint, state, access);
> +
> + trace_dump_member_begin("u");
> + trace_dump_struct_begin(""); /* anonymous */
> + if (state->resource->target == PIPE_BUFFER) {
> + trace_dump_member_begin("buf");
> + trace_dump_struct_begin(""); /* anonymous */
> + trace_dump_member(uint, &state->u.buf, first_element);
> + trace_dump_member(uint, &state->u.buf, last_element);
> + trace_dump_struct_end(); /* anonymous */
> + trace_dump_member_end(); /* buf */
> + } else {
> + trace_dump_member_begin("tex");
> + trace_dump_struct_begin(""); /* anonymous */
> + trace_dump_member(uint, &state->u.tex, first_layer);
> + trace_dump_member(uint, &state->u.tex, last_layer);
> + trace_dump_member(uint, &state->u.tex, level);
> + trace_dump_struct_end(); /* anonymous */
> + trace_dump_member_end(); /* tex */
> + }
> + trace_dump_struct_end(); /* anonymous */
> + trace_dump_member_end(); /* u */
> +
> + trace_dump_struct_end();
> +}
> +
> +
> void trace_dump_draw_info(const struct pipe_draw_info *state)
> {
> if (!trace_dumping_enabled_locked())
> diff --git a/src/gallium/drivers/trace/tr_dump_state.h b/src/gallium/drivers/trace/tr_dump_state.h
> index ee0720d..fd2bc50 100644
> --- a/src/gallium/drivers/trace/tr_dump_state.h
> +++ b/src/gallium/drivers/trace/tr_dump_state.h
> @@ -91,4 +91,6 @@ void trace_dump_query_result(unsigned query_type,
>
> void trace_dump_grid_info(const struct pipe_grid_info *state);
>
> +void trace_dump_image_view(const struct pipe_image_view *view);
> +
> #endif /* TR_STATE_H */
>
More information about the mesa-dev
mailing list