aux/trace: add context video methods
authorJulia Tatz <tatz.j@northeastern.edu>
Fri, 4 Aug 2023 01:28:16 +0000 (21:28 -0400)
committerMarge Bot <emma+marge@anholt.net>
Wed, 16 Aug 2023 00:11:30 +0000 (00:11 +0000)
Preliminary support without wrapping video_codec or video_buffer

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24482>

src/gallium/auxiliary/driver_trace/tr_context.c
src/gallium/auxiliary/driver_trace/tr_context.h
src/gallium/auxiliary/driver_trace/tr_dump_defines.h
src/gallium/auxiliary/driver_trace/tr_dump_state.c
src/gallium/auxiliary/driver_trace/tr_dump_state.h
src/util/format/u_format.h

index 66a2966..24d8f45 100644 (file)
@@ -2070,6 +2070,73 @@ trace_context_resource_commit(struct pipe_context *_context,
    return context->resource_commit(context, resource, level, box, commit);
 }
 
+static struct pipe_video_codec *
+trace_context_create_video_codec(struct pipe_context *_context,
+                                 const struct pipe_video_codec *templat)
+{
+   struct trace_context *tr_context = trace_context(_context);
+   struct pipe_context *context = tr_context->pipe;
+   struct pipe_video_codec *result;
+
+   trace_dump_call_begin("pipe_context", "create_video_codec");
+
+   trace_dump_arg(ptr, context);
+   trace_dump_arg(video_codec_template, templat);
+
+   result = context->create_video_codec(context, templat);
+
+   trace_dump_ret(ptr, result);
+   trace_dump_call_end();
+
+   return result;
+}
+
+static struct pipe_video_buffer *
+trace_context_create_video_buffer_with_modifiers(struct pipe_context *_context,
+                                                 const struct pipe_video_buffer *templat,
+                                                 const uint64_t *modifiers,
+                                                 unsigned int modifiers_count)
+{
+   struct trace_context *tr_context = trace_context(_context);
+   struct pipe_context *context = tr_context->pipe;
+   struct pipe_video_buffer *result;
+
+   trace_dump_call_begin("pipe_screen", "create_video_buffer_with_modifiers");
+
+   trace_dump_arg(ptr, context);
+   trace_dump_arg(video_buffer_template, templat);
+   trace_dump_arg_array(uint, modifiers, modifiers_count);
+   trace_dump_arg(uint, modifiers_count);
+
+   result = context->create_video_buffer_with_modifiers(context, templat, modifiers, modifiers_count);
+
+   trace_dump_ret(ptr, result);
+   trace_dump_call_end();
+
+   return result;
+}
+
+static struct pipe_video_buffer *
+trace_context_create_video_buffer(struct pipe_context *_context,
+                                  const struct pipe_video_buffer *templat)
+{
+   struct trace_context *tr_context = trace_context(_context);
+   struct pipe_context *context = tr_context->pipe;
+   struct pipe_video_buffer *result;
+
+   trace_dump_call_begin("pipe_screen", "create_video_buffer");
+
+   trace_dump_arg(ptr, context);
+   trace_dump_arg(video_buffer_template, templat);
+
+   result = context->create_video_buffer(context, templat);
+
+   trace_dump_ret(ptr, result);
+   trace_dump_call_end();
+
+   return result;
+}
+
 static void
 trace_context_set_tess_state(struct pipe_context *_context,
                              const float default_outer_level[4],
@@ -2443,6 +2510,9 @@ trace_context_create(struct trace_screen *tr_scr,
    TR_CTX_INIT(texture_barrier);
    TR_CTX_INIT(memory_barrier);
    TR_CTX_INIT(resource_commit);
+   TR_CTX_INIT(create_video_codec);
+   TR_CTX_INIT(create_video_buffer_with_modifiers);
+   TR_CTX_INIT(create_video_buffer);
    TR_CTX_INIT(set_tess_state);
    TR_CTX_INIT(set_patch_vertices);
    TR_CTX_INIT(set_shader_buffers);
index 14b2b8a..0d947ab 100644 (file)
@@ -33,6 +33,7 @@
 #include "util/u_debug.h"
 #include "util/hash_table.h"
 #include "pipe/p_context.h"
+#include "pipe/p_video_codec.h"
 #include "util/u_threaded_context.h"
 
 #include "tr_screen.h"
index ca3d3b9..7f0a63d 100644 (file)
@@ -43,6 +43,14 @@ trace_dump_format(enum pipe_format format)
    trace_dump_enum(util_format_name(format));
 }
 
+static inline void
+trace_dump_chroma_format(enum pipe_video_chroma_format chroma_format)
+{
+   if (!trace_dumping_enabled_locked())
+      return;
+
+   trace_dump_enum(util_chroma_format_name(chroma_format));
+}
 
 static inline void
 trace_dump_query_type(unsigned value)
index 08b2d21..8a05225 100644 (file)
@@ -79,6 +79,53 @@ void trace_dump_resource_template(const struct pipe_resource *templat)
 }
 
 
+void trace_dump_video_codec_template(const struct pipe_video_codec *templat)
+{
+   if (!trace_dumping_enabled_locked())
+      return;
+
+   if (!templat) {
+      trace_dump_null();
+      return;
+   }
+
+   trace_dump_struct_begin("pipe_video_codec");
+
+   trace_dump_member_enum(pipe_video_profile, templat, profile);
+   trace_dump_member(uint, templat, level);
+   trace_dump_member_enum(pipe_video_entrypoint, templat, entrypoint);
+   trace_dump_member(chroma_format, templat, chroma_format);
+   trace_dump_member(uint, templat, width);
+   trace_dump_member(uint, templat, height);
+   trace_dump_member(uint, templat, max_references);
+   trace_dump_member(bool, templat, expect_chunked_decode);
+
+   trace_dump_struct_end();
+}
+
+
+void trace_dump_video_buffer_template(const struct pipe_video_buffer *templat)
+{
+   if (!trace_dumping_enabled_locked())
+      return;
+
+   if (!templat) {
+      trace_dump_null();
+      return;
+   }
+
+   trace_dump_struct_begin("pipe_video_buffer");
+
+   trace_dump_member(format, templat, buffer_format);
+   trace_dump_member(uint, templat, width);
+   trace_dump_member(uint, templat, height);
+   trace_dump_member(bool, templat, interlaced);
+   trace_dump_member(uint, templat, bind);
+
+   trace_dump_struct_end();
+}
+
+
 void trace_dump_box(const struct pipe_box *box)
 {
    if (!trace_dumping_enabled_locked())
index 44b8b9f..10033d0 100644 (file)
 
 #include "pipe/p_state.h"
 #include "pipe/p_shader_tokens.h"
+#include "pipe/p_video_codec.h"
 
 struct winsys_handle;
 
 void trace_dump_resource_template(const struct pipe_resource *templat);
 
+void trace_dump_video_codec_template(const struct pipe_video_codec *templat);
+
+void trace_dump_video_buffer_template(const struct pipe_video_buffer *templat);
+
 void trace_dump_box(const struct pipe_box *box);
 
 void trace_dump_rasterizer_state(const struct pipe_rasterizer_state *state);
index 982ae3e..93de204 100644 (file)
@@ -465,6 +465,25 @@ util_format_short_name(enum pipe_format format)
    return desc->short_name;
 }
 
+static inline const char *
+util_chroma_format_name(enum pipe_video_chroma_format chroma_format)
+{
+   switch (chroma_format) {
+   case PIPE_VIDEO_CHROMA_FORMAT_400:
+      return "PIPE_VIDEO_CHROMA_FORMAT_400";
+   case PIPE_VIDEO_CHROMA_FORMAT_420:
+      return "PIPE_VIDEO_CHROMA_FORMAT_420";
+   case PIPE_VIDEO_CHROMA_FORMAT_422:
+      return "PIPE_VIDEO_CHROMA_FORMAT_422";
+   case PIPE_VIDEO_CHROMA_FORMAT_444:
+      return "PIPE_VIDEO_CHROMA_FORMAT_444";
+   case PIPE_VIDEO_CHROMA_FORMAT_NONE:
+      return "PIPE_VIDEO_CHROMA_FORMAT_NONE";
+   default:
+      return "PIPE_VIDEO_CHROMA_FORMAT_???";
+   }
+}
+
 /**
  * Whether this format is plain, see UTIL_FORMAT_LAYOUT_PLAIN for more info.
  */