diff --git a/.pick_status.json b/.pick_status.json index 785367c51d8..6f9ea8726db 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -9324,7 +9324,7 @@ "description": "aux/trace: fix winsys handle dumping", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.c b/src/gallium/auxiliary/driver_trace/tr_dump_state.c index 8561f71cba4..fe48ab89076 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump_state.c +++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.c @@ -30,7 +30,7 @@ #include "util/u_memory.h" #include "util/format/u_format.h" #include "tgsi/tgsi_dump.h" - +#include "frontend/winsys_handle.h" #include "tr_dump.h" #include "tr_dump_defines.h" #include "tr_dump_state.h" @@ -1097,3 +1097,31 @@ void trace_dump_grid_info(const struct pipe_grid_info *state) trace_dump_struct_end(); } +void trace_dump_winsys_handle(const struct winsys_handle *whandle) +{ + if (!trace_dumping_enabled_locked()) + return; + + if (!whandle) { + trace_dump_null(); + return; + } + + trace_dump_struct_begin("winsys_handle"); + + trace_dump_member(uint, whandle, type); + trace_dump_member(uint, whandle, layer); + trace_dump_member(uint, whandle, plane); +#ifdef _WIN32 + trace_dump_member(ptr, whandle, handle); +#else + trace_dump_member(uint, whandle, handle); +#endif + trace_dump_member(uint, whandle, stride); + trace_dump_member(uint, whandle, offset); + trace_dump_member(format, whandle, format); + trace_dump_member(uint, whandle, modifier); + trace_dump_member(uint, whandle, size); + + trace_dump_struct_end(); +} diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.h b/src/gallium/auxiliary/driver_trace/tr_dump_state.h index cb0fc5a82d3..44b8b9fba42 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump_state.h +++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.h @@ -31,6 +31,7 @@ #include "pipe/p_state.h" #include "pipe/p_shader_tokens.h" +struct winsys_handle; void trace_dump_resource_template(const struct pipe_resource *templat); @@ -101,4 +102,6 @@ void trace_dump_grid_info(const struct pipe_grid_info *state); void trace_dump_image_view(const struct pipe_image_view *view); void trace_dump_memory_info(const struct pipe_memory_info *state); + +void trace_dump_winsys_handle(const struct winsys_handle *whandle); #endif /* TR_STATE_H */ diff --git a/src/gallium/auxiliary/driver_trace/tr_screen.c b/src/gallium/auxiliary/driver_trace/tr_screen.c index 9a5c4e06a0b..24e530c57e9 100644 --- a/src/gallium/auxiliary/driver_trace/tr_screen.c +++ b/src/gallium/auxiliary/driver_trace/tr_screen.c @@ -783,7 +783,7 @@ trace_screen_resource_from_handle(struct pipe_screen *_screen, trace_dump_arg(ptr, screen); trace_dump_arg(resource_template, templ); - trace_dump_arg(ptr, handle); + trace_dump_arg(winsys_handle, handle); trace_dump_arg(uint, usage); result = screen->resource_from_handle(screen, templ, handle, usage); @@ -823,11 +823,11 @@ trace_screen_resource_get_handle(struct pipe_screen *_screen, trace_dump_arg(ptr, screen); trace_dump_arg(ptr, resource); - trace_dump_arg(ptr, handle); trace_dump_arg(uint, usage); result = screen->resource_get_handle(screen, pipe, resource, handle, usage); + trace_dump_arg(winsys_handle, handle); trace_dump_ret(bool, result); trace_dump_call_end();