From a3549d7f7abe5bc6c5eaf7f854bd617a225d07f1 Mon Sep 17 00:00:00 2001 From: Julia Tatz Date: Thu, 3 Aug 2023 21:28:31 -0400 Subject: [PATCH] aux/trace: trace video_buffer method return vals Part-of: --- src/gallium/auxiliary/driver_trace/tr_dump.h | 7 +++++++ src/gallium/auxiliary/driver_trace/tr_video.c | 24 +++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/gallium/auxiliary/driver_trace/tr_dump.h b/src/gallium/auxiliary/driver_trace/tr_dump.h index 9155440..7a8ea39 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump.h +++ b/src/gallium/auxiliary/driver_trace/tr_dump.h @@ -219,6 +219,13 @@ bool trace_dump_is_triggered(void); trace_dump_arg_end(); \ } while(0) +#define trace_dump_ret_array(_type, _arg, _size) \ + do { \ + trace_dump_ret_begin(); \ + trace_dump_array(_type, _arg, _size); \ + trace_dump_ret_end(); \ + } while(0) + #define trace_dump_ret_array_val(_type, _arg, _size) \ do { \ trace_dump_ret_begin(); \ diff --git a/src/gallium/auxiliary/driver_trace/tr_video.c b/src/gallium/auxiliary/driver_trace/tr_video.c index 3a21653..156c5dc 100644 --- a/src/gallium/auxiliary/driver_trace/tr_video.c +++ b/src/gallium/auxiliary/driver_trace/tr_video.c @@ -410,10 +410,12 @@ trace_video_buffer_get_resources(struct pipe_video_buffer *_buffer, struct pipe_ trace_dump_call_begin("pipe_video_buffer", "get_resources"); trace_dump_arg(ptr, buffer); - trace_dump_arg(ptr, resources); - trace_dump_call_end(); buffer->get_resources(buffer, resources); + + // TODO: A `trace_dump_ret_arg` style of function would be more appropriate + trace_dump_arg_array(ptr, resources, VL_NUM_COMPONENTS); + trace_dump_call_end(); } static struct pipe_sampler_view ** @@ -428,18 +430,18 @@ trace_video_buffer_get_sampler_view_planes(struct pipe_video_buffer *_buffer) struct pipe_sampler_view **view_planes = buffer->get_sampler_view_planes(buffer); - trace_dump_ret(ptr, view_planes); + trace_dump_ret_array(ptr, view_planes, VL_NUM_COMPONENTS); trace_dump_call_end(); for (int i=0; i < VL_NUM_COMPONENTS; i++) { - if (!view_planes[i]) { + if (!view_planes || !view_planes[i]) { pipe_sampler_view_reference(&tr_vbuffer->sampler_view_planes[i], NULL); } else if (tr_vbuffer->sampler_view_planes[i] == NULL || (trace_sampler_view(tr_vbuffer->sampler_view_planes[i])->sampler_view != view_planes[i])) { pipe_sampler_view_reference(&tr_vbuffer->sampler_view_planes[i], trace_sampler_view_create(tr_ctx, view_planes[i]->texture, view_planes[i])); } } - return tr_vbuffer->sampler_view_planes; + return view_planes ? tr_vbuffer->sampler_view_planes : NULL; } static struct pipe_sampler_view ** @@ -454,18 +456,18 @@ trace_video_buffer_get_sampler_view_components(struct pipe_video_buffer *_buffer struct pipe_sampler_view **view_components = buffer->get_sampler_view_components(buffer); - trace_dump_ret(ptr, view_components); + trace_dump_ret_array(ptr, view_components, VL_NUM_COMPONENTS); trace_dump_call_end(); for (int i=0; i < VL_NUM_COMPONENTS; i++) { - if (!view_components[i]) { + if (!view_components || !view_components[i]) { pipe_sampler_view_reference(&tr_vbuffer->sampler_view_components[i], NULL); } else if (tr_vbuffer->sampler_view_components[i] == NULL || (trace_sampler_view(tr_vbuffer->sampler_view_components[i])->sampler_view != view_components[i])) { pipe_sampler_view_reference(&tr_vbuffer->sampler_view_components[i], trace_sampler_view_create(tr_ctx, view_components[i]->texture, view_components[i])); } } - return tr_vbuffer->sampler_view_components; + return view_components ? tr_vbuffer->sampler_view_components : NULL; } static struct pipe_surface ** @@ -480,18 +482,18 @@ trace_video_buffer_get_surfaces(struct pipe_video_buffer *_buffer) struct pipe_surface **surfaces = buffer->get_surfaces(buffer); - trace_dump_ret(ptr, surfaces); + trace_dump_ret_array(ptr, surfaces, VL_MAX_SURFACES); trace_dump_call_end(); for (int i=0; i < VL_MAX_SURFACES; i++) { - if (!surfaces[i]) { + if (!surfaces || !surfaces[i]) { pipe_surface_reference(&tr_vbuffer->surfaces[i], NULL); } else if (tr_vbuffer->surfaces[i] == NULL || (trace_surface(tr_vbuffer->surfaces[i])->surface != surfaces[i])){ pipe_surface_reference(&tr_vbuffer->surfaces[i], trace_surf_create(tr_ctx, surfaces[i]->texture, surfaces[i])); } } - return tr_vbuffer->surfaces; + return surfaces ? tr_vbuffer->surfaces : NULL; } -- 2.7.4