xref: /aosp_15_r20/external/libva/va/va_trace.c (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1 
2 /*
3  * Copyright (c) 2009-2024 Intel Corporation. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sub license, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice (including the
14  * next paragraph) shall be included in all copies or substantial portions
15  * of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24  */
25 
26 #define _GNU_SOURCE 1
27 #include "sysdeps.h"
28 #include "va.h"
29 #include "va_enc_h264.h"
30 #include "va_backend.h"
31 #include "va_internal.h"
32 #include "va_trace.h"
33 #include "va_enc_h264.h"
34 #include "va_enc_jpeg.h"
35 #include "va_enc_vp8.h"
36 #include "va_dec_jpeg.h"
37 #include "va_dec_vp8.h"
38 #include "va_dec_vp9.h"
39 #include "va_dec_hevc.h"
40 #include "va_dec_vvc.h"
41 #include "va_str.h"
42 #include "va_vpp.h"
43 #include <assert.h>
44 #include <stdarg.h>
45 #include <stdlib.h>
46 #include <stdio.h>
47 #include <string.h>
48 #include <fcntl.h>
49 #include "va_drmcommon.h"
50 #if defined(_WIN32)
51 #include "win32/va_win32.h"
52 #include "compat_win32.h"
53 #else
54 #include <dlfcn.h>
55 #include <unistd.h>
56 #include <sys/types.h>
57 #include <sys/stat.h>
58 #include <pthread.h>
59 #include <sys/time.h>
60 #include <errno.h>
61 #endif
62 
63 #if defined(__linux__)
64 #include <sys/syscall.h>
65 #elif defined(__DragonFly__) || defined(__FreeBSD__)
66 #include <pthread_np.h>
67 #elif defined(__NetBSD__)
68 #include <lwp.h>
69 #elif defined(__sun)
70 #include <thread.h>
71 #endif
72 
73 /* bionic, glibc >= 2.30, musl >= 1.3 have gettid(), so add va_ prefix */
va_gettid()74 static pid_t va_gettid()
75 {
76 #if defined(_WIN32)
77     return GetCurrentThreadId();
78 #elif defined(__linux__)
79     return syscall(__NR_gettid);
80 #elif defined(__DragonFly__) || defined(__FreeBSD__)
81     return pthread_getthreadid_np();
82 #elif defined(__NetBSD__)
83     return _lwp_self();
84 #elif defined(__OpenBSD__)
85     return getthrid();
86 #elif defined(__sun)
87     return thr_self();
88 #else
89 #warning "Cannot get kernel thread identifier on this platform."
90     return (intptr_t)pthread_self();
91 #endif
92 }
93 
94 /*
95  * Env. to debug some issue, e.g. the decode/encode issue in a video conference scenerio:
96  * .LIBVA_TRACE=log_file: general VA parameters saved into log_file
97  * .LIBVA_TRACE=FTRACE: trace general VA parameters into linux ftrace framework, use trace-cmd to capture and parse by tracetool in libva-utils
98  * .LIBVA_TRACE_BUFDATA: dump all VA data buffer into log_file
99  *                       when LIBVA_TRACE in FTRACE mode, all data are redirected to linux ftrace, finally parsed by tracetool
100  * .LIBVA_TRACE_CODEDBUF=coded_clip_file: save the coded clip into file coded_clip_file
101  * .LIBVA_TRACE_SURFACE=yuv_file: save surface YUV into file yuv_file. Use file name to determine
102  *                                decode/encode or jpeg surfaces
103  * .LIBVA_TRACE_SURFACE_GEOMETRY=WIDTHxHEIGHT+XOFF+YOFF: only save part of surface context into file
104  *                                due to storage bandwidth limitation
105  */
106 
107 /* global settings */
108 
109 /* LIBVA_TRACE */
110 int va_trace_flag = 0;
111 
112 #define MAX_TRACE_CTX_NUM   64
113 #define TRACE_CTX_ID_MASK      (MAX_TRACE_CTX_NUM - 1)
114 
115 #define MAX_TRACE_THREAD_NUM   64
116 
117 #define MAX_TRACE_BUF_INFO_HASH_SIZE     1024 // 1<<10
118 #define MAX_TRACE_BUF_INFO_HASH_LEVEL    3
119 #define TRACE_BUF_INFO_HASH_ID_MASK         (MAX_TRACE_BUF_INFO_HASH_SIZE - 1)
120 
121 struct trace_buf_info {
122     int valid;
123 
124     VABufferID buf_id;
125     VAContextID ctx_id;
126 };
127 
128 struct trace_buf_manager {
129     struct trace_buf_info *pbuf_info[MAX_TRACE_BUF_INFO_HASH_LEVEL];
130 };
131 
132 struct trace_log_file {
133     pid_t thread_id;
134     int used;
135 
136     char *fn_log;
137     FILE *fp_log;
138 };
139 
140 struct trace_log_files_manager {
141     struct trace_log_file log_file[MAX_TRACE_THREAD_NUM];
142 };
143 
144 /* per context settings */
145 struct trace_context {
146     struct trace_log_file *plog_file;
147     struct trace_log_file *plog_file_list[MAX_TRACE_THREAD_NUM];
148 
149     /* LIBVA_TRACE_CODEDBUF */
150     FILE *trace_fp_codedbuf; /* save the encode result into a file */
151     char *trace_codedbuf_fn; /* file name */
152 
153     /* LIBVA_TRACE_SURFACE */
154     FILE *trace_fp_surface; /* save the surface YUV into a file */
155     char *trace_surface_fn; /* file name */
156 
157     VAContextID  trace_context; /* current context */
158 
159     VASurfaceID  trace_rendertarget; /* current render target */
160     VAProfile trace_profile; /* current profile for buffers */
161     VAEntrypoint trace_entrypoint; /* current entrypoint */
162 
163     unsigned int trace_frame_no; /* current frame NO */
164     unsigned int trace_slice_no; /* current slice NO */
165     unsigned int trace_slice_size; /* current slice buffer size */
166 
167     unsigned int trace_surface_width; /* surface dumping geometry */
168     unsigned int trace_surface_height;
169     unsigned int trace_surface_xoff;
170     unsigned int trace_surface_yoff;
171 
172     unsigned int trace_frame_width; /* current frame width */
173     unsigned int trace_frame_height; /* current frame height */
174 
175     unsigned int pts; /* IVF header information */
176 
177     pid_t created_thd_id;
178 };
179 
180 struct trace_config_info {
181     int valid;
182     VAConfigID config_id;
183 
184     VAProfile trace_profile;
185     VAEntrypoint trace_entrypoint;
186 
187     pid_t created_thd_id;
188 };
189 
190 struct va_trace {
191     struct trace_context *ptra_ctx[MAX_TRACE_CTX_NUM + 1];
192     int context_num;
193     struct trace_buf_manager buf_manager;
194     struct trace_log_files_manager log_files_manager;
195     struct trace_config_info config_info[MAX_TRACE_CTX_NUM];
196 
197     char *fn_log_env;
198     char *fn_codedbuf_env;
199     char *fn_surface_env;
200     pthread_mutex_t resource_mutex;
201     pthread_mutex_t context_mutex;
202     VADisplay dpy;
203     int ftrace_fd;
204 };
205 
206 #define LOCK_RESOURCE(pva_trace)                                    \
207     if(pva_trace)                                                   \
208         pthread_mutex_lock(&pva_trace->resource_mutex)
209 
210 #define UNLOCK_RESOURCE(pva_trace)                                  \
211     if(pva_trace)                                                   \
212         pthread_mutex_unlock(&pva_trace->resource_mutex)
213 
214 #define LOCK_CONTEXT(pva_trace)                                     \
215         if(pva_trace)                                               \
216             pthread_mutex_lock(&pva_trace->context_mutex)
217 
218 #define UNLOCK_CONTEXT(pva_trace)                                   \
219         if(pva_trace)                                               \
220             pthread_mutex_unlock(&pva_trace->context_mutex)
221 
222 #define DPY2TRACECTX(dpy, context, buf_id)                                  \
223     struct va_trace *pva_trace = NULL;                                      \
224     struct trace_context *trace_ctx = NULL;                                 \
225     VAContextID ctx_id = context;                                           \
226                                                                             \
227     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);     \
228     if(!pva_trace)                                                          \
229         return;                                                             \
230                                                                             \
231     if(ctx_id == VA_INVALID_ID) {                                           \
232         if(buf_id != VA_INVALID_ID)                                         \
233             ctx_id = get_ctx_by_buf(pva_trace, buf_id);                     \
234         else                                                                \
235             return;                                                         \
236     }                                                                       \
237                                                                             \
238     if (ctx_id != VA_INVALID_ID) {                                          \
239         int temp_idx = get_valid_ctx_idx(pva_trace, ctx_id);                \
240         if(temp_idx < MAX_TRACE_CTX_NUM)                                    \
241             trace_ctx = pva_trace->ptra_ctx[temp_idx];                      \
242     }                                                                       \
243                                                                             \
244     if(!trace_ctx                                                           \
245         || trace_ctx->trace_context != context) {                           \
246         return;                                                             \
247     }                                                                       \
248     refresh_log_file(pva_trace, trace_ctx)
249 
250 #define DPY2TRACE_VIRCTX(dpy)                                               \
251     struct va_trace *pva_trace = NULL;                                      \
252     struct trace_context *trace_ctx = NULL;                                 \
253                                                                             \
254     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);     \
255     if(!pva_trace)                                                          \
256         return;                                                             \
257                                                                             \
258     LOCK_CONTEXT(pva_trace);                                                \
259     trace_ctx = pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM];                     \
260     if(!trace_ctx) {                                                        \
261         UNLOCK_CONTEXT(pva_trace);                                          \
262         return;                                                             \
263     }                                                                       \
264     refresh_log_file(pva_trace, trace_ctx)
265 
266 #define DPY2TRACE_VIRCTX_EXIT(pva_trace)                                \
267     UNLOCK_CONTEXT(pva_trace)
268 
269 #define TRACE_FUNCNAME(idx)    va_TraceMsg(trace_ctx, "==========%s\n", __func__);
270 
271 #define TRACE_NEWLINE() do { \
272     va_TracePrint(trace_ctx, "\n"); \
273     va_TraceMsg(trace_ctx, "") ; \
274 } while (0)
275 
276 
277 #define VA_TRACE_MAX_SIZE          (1024)
278 #define VA_TRACE_HEADER_SIZE       (sizeof(uint32_t)*3)
279 #define VA_TRACE_ID                (0x45544156)   // VATraceEvent in little endian
280 #define FTRACE_ENTRY               "/sys/kernel/debug/tracing/trace_marker_raw"
281 
282 VAStatus vaBufferInfo(
283     VADisplay dpy,
284     VAContextID context,        /* in */
285     VABufferID buf_id,          /* in */
286     VABufferType *type,         /* out */
287     unsigned int *size,         /* out */
288     unsigned int *num_elements  /* out */
289 );
290 
291 VAStatus vaLockSurface(VADisplay dpy,
292                        VASurfaceID surface,
293                        unsigned int *fourcc, /* following are output argument */
294                        unsigned int *luma_stride,
295                        unsigned int *chroma_u_stride,
296                        unsigned int *chroma_v_stride,
297                        unsigned int *luma_offset,
298                        unsigned int *chroma_u_offset,
299                        unsigned int *chroma_v_offset,
300                        unsigned int *buffer_name,
301                        void **buffer
302                       );
303 
304 VAStatus vaUnlockSurface(VADisplay dpy,
305                          VASurfaceID surface
306                         );
307 
get_valid_config_idx(struct va_trace * pva_trace,VAConfigID config_id)308 static int get_valid_config_idx(
309     struct va_trace *pva_trace,
310     VAConfigID config_id)
311 {
312     int idx = MAX_TRACE_CTX_NUM;
313 
314     LOCK_RESOURCE(pva_trace);
315 
316     for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
317         if (pva_trace->config_info[idx].valid &&
318             pva_trace->config_info[idx].config_id == config_id)
319             break;
320     }
321 
322     UNLOCK_RESOURCE(pva_trace);
323 
324     return idx;
325 }
326 
add_trace_config_info(struct va_trace * pva_trace,VAConfigID config_id,VAProfile profile,VAEntrypoint entrypoint)327 static void add_trace_config_info(
328     struct va_trace *pva_trace,
329     VAConfigID config_id,
330     VAProfile profile,
331     VAEntrypoint entrypoint)
332 {
333     struct trace_config_info *pconfig_info;
334     int idx = 0;
335     pid_t thd_id = va_gettid();
336 
337     LOCK_RESOURCE(pva_trace);
338 
339     for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
340         if (!pva_trace->config_info[idx].valid ||
341             pva_trace->config_info[idx].config_id == config_id)
342             break;
343     }
344 
345     if (idx < MAX_TRACE_CTX_NUM) {
346         pconfig_info = &pva_trace->config_info[idx];
347 
348         pconfig_info->valid = 1;
349         pconfig_info->config_id = config_id;
350         pconfig_info->trace_profile = profile;
351         pconfig_info->trace_entrypoint = entrypoint;
352         pconfig_info->created_thd_id = thd_id;
353     }
354 
355     UNLOCK_RESOURCE(pva_trace);
356 }
357 
delete_trace_config_info(struct va_trace * pva_trace,VAConfigID config_id)358 static void delete_trace_config_info(
359     struct va_trace *pva_trace,
360     VAConfigID config_id)
361 {
362     struct trace_config_info *pconfig_info;
363     int idx = 0;
364 
365     LOCK_RESOURCE(pva_trace);
366 
367     for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++) {
368         if (pva_trace->config_info[idx].valid &&
369             pva_trace->config_info[idx].config_id == config_id)
370             break;
371     }
372 
373     if (idx < MAX_TRACE_CTX_NUM) {
374         pconfig_info = &pva_trace->config_info[idx];
375 
376         pconfig_info->valid = 0;
377         pconfig_info->config_id = -1;
378     }
379 
380     UNLOCK_RESOURCE(pva_trace);
381 }
382 
get_ctx_by_buf(struct va_trace * pva_trace,VABufferID buf_id)383 static VAContextID get_ctx_by_buf(
384     struct va_trace *pva_trace,
385     VABufferID buf_id)
386 {
387     struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
388     struct trace_buf_info *pbuf_info = pbuf_mgr->pbuf_info[0];
389     VAContextID context = VA_INVALID_ID;
390     int i = 0, idx = 0;
391 
392     LOCK_RESOURCE(pva_trace);
393 
394     idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
395     for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
396         pbuf_info = pbuf_mgr->pbuf_info[i];
397         if (!pbuf_info)
398             break;
399 
400         if (pbuf_info[idx].valid
401             && pbuf_info[idx].buf_id == buf_id) {
402             context = pbuf_info[idx].ctx_id;
403             break;
404         }
405     }
406 
407     UNLOCK_RESOURCE(pva_trace);
408 
409     return context;
410 }
411 
add_trace_buf_info(struct va_trace * pva_trace,VAContextID context,VABufferID buf_id)412 static void add_trace_buf_info(
413     struct va_trace *pva_trace,
414     VAContextID context,
415     VABufferID buf_id)
416 {
417     struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
418     struct trace_buf_info *pbuf_info = NULL;
419     int i = 0, idx = 0;
420 
421     LOCK_RESOURCE(pva_trace);
422 
423     idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
424     for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
425         pbuf_info = pbuf_mgr->pbuf_info[i];
426         if (!pbuf_info) {
427             pbuf_info = (struct trace_buf_info *)calloc(
428                             sizeof(struct trace_buf_info) * MAX_TRACE_BUF_INFO_HASH_SIZE,
429                             1);
430             if (!pbuf_info)
431                 break;
432 
433             pbuf_mgr->pbuf_info[i] = pbuf_info;
434         }
435 
436         if (pbuf_info[idx].valid
437             && pbuf_info[idx].buf_id != buf_id)
438             continue;
439 
440         pbuf_info[idx].buf_id = buf_id;
441         pbuf_info[idx].ctx_id = context;
442         pbuf_info[idx].valid = 1;
443         break;
444     }
445 
446     if (i >= MAX_TRACE_BUF_INFO_HASH_LEVEL)
447         va_errorMessage(pva_trace->dpy, "Add buf info failed\n");
448 
449     UNLOCK_RESOURCE(pva_trace);
450 }
451 
delete_trace_buf_info(struct va_trace * pva_trace,VABufferID buf_id)452 static void delete_trace_buf_info(
453     struct va_trace *pva_trace,
454     VABufferID buf_id)
455 {
456     struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
457     struct trace_buf_info *pbuf_info = NULL;
458     int i = 0, idx = 0;
459 
460     LOCK_RESOURCE(pva_trace);
461 
462     idx = buf_id & TRACE_BUF_INFO_HASH_ID_MASK;
463     for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++) {
464         pbuf_info = pbuf_mgr->pbuf_info[i];
465         if (!pbuf_info)
466             break;
467 
468         if (pbuf_info[idx].valid
469             && pbuf_info[idx].buf_id == buf_id) {
470             pbuf_info[idx].valid = 0;
471             break;
472         }
473     }
474 
475     UNLOCK_RESOURCE(pva_trace);
476 }
477 
478 /*
479 static void delete_trace_all_context_buf(
480     struct va_trace *pva_trace,
481     VAContextID context)
482 {
483     struct trace_buf_manager *pbuf_mgr = &pva_trace->buf_manager;
484     struct trace_buf_info *pbuf_info = NULL;
485     int i = 0, j = 0;
486 
487     LOCK_RESOURCE(pva_trace);
488 
489     for(i = 0;i < MAX_TRACE_BUF_INFO_HASH_LEVEL;i++) {
490         pbuf_info = pbuf_mgr->pbuf_info[i];
491         if(!pbuf_info)
492             break;
493 
494         for(j = 0;j < MAX_TRACE_BUF_INFO_HASH_SIZE;j++)
495             if(pbuf_info[j].valid
496                 && pbuf_info[j].ctx_id == context)
497                 pbuf_info[j].valid = 0;
498     }
499 
500     UNLOCK_RESOURCE(pva_trace);
501 }
502 */
503 
get_free_ctx_idx(struct va_trace * pva_trace,VAContextID context)504 static int get_free_ctx_idx(
505     struct va_trace *pva_trace,
506     VAContextID context)
507 {
508     int idx;
509 
510     LOCK_RESOURCE(pva_trace);
511 
512     for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++)
513         if (!pva_trace->ptra_ctx[idx] ||
514             pva_trace->ptra_ctx[idx]->trace_context == context)
515             break;
516 
517     UNLOCK_RESOURCE(pva_trace);
518 
519     return idx;
520 }
521 
get_valid_ctx_idx(struct va_trace * pva_trace,VAContextID context)522 static int get_valid_ctx_idx(
523     struct va_trace *pva_trace,
524     VAContextID context)
525 {
526     int idx;
527 
528     LOCK_RESOURCE(pva_trace);
529 
530     for (idx = 0; idx < MAX_TRACE_CTX_NUM; idx++)
531         if (pva_trace->ptra_ctx[idx] &&
532             pva_trace->ptra_ctx[idx]->trace_context == context)
533             break;
534 
535     UNLOCK_RESOURCE(pva_trace);
536 
537     return idx;
538 }
539 
FILE_NAME_SUFFIX(char * env_value,int max_size,char * suffix_str,unsigned int suffix_handle)540 static void FILE_NAME_SUFFIX(
541     char *env_value,
542     int max_size,
543     char *suffix_str,
544     unsigned int suffix_handle)
545 {
546     int tmp = strnlen(env_value, max_size);
547     int left = max_size - tmp;
548     struct timeval tv;
549     int size = 0;
550 
551     if (suffix_str)
552         size = strlen(suffix_str);
553 
554     if (left < (size + 8 + 10))
555         return;
556 
557     if (gettimeofday(&tv, NULL) == 0) {
558         sprintf(env_value + tmp,
559                 ".%02d%02d%02d.",
560                 (unsigned int)(tv.tv_sec / 3600) % 24,
561                 (unsigned int)(tv.tv_sec / 60) % 60,
562                 (unsigned int)tv.tv_sec % 60);
563 
564         tmp += 8;
565         left -= 8;
566     }
567 
568     if (suffix_str) {
569         strcat(env_value + tmp,
570                suffix_str);
571 
572         tmp += size;
573         left -= size;
574     }
575 
576     if (suffix_handle) {
577         sprintf(env_value + tmp,
578                 "0x%08x",
579                 suffix_handle);
580     }
581 }
582 
open_tracing_specil_file(struct va_trace * pva_trace,struct trace_context * ptra_ctx,int type)583 static int open_tracing_specil_file(
584     struct va_trace *pva_trace,
585     struct trace_context *ptra_ctx,
586     int type) // 0: codedbuf, 1: surface
587 {
588     char *fn_env = type == 0 ?
589                    pva_trace->fn_codedbuf_env : pva_trace->fn_surface_env;
590     char env_value[1024];
591     FILE *fp = NULL;
592 
593     strncpy(env_value, fn_env, 1024);
594     env_value[1023] = '\0';
595     FILE_NAME_SUFFIX(env_value, 1024,
596                      "ctx-", (unsigned int)ptra_ctx->trace_context);
597 
598     fn_env = strdup(env_value);
599     if (!fn_env)
600         return -1;
601 
602     fp = fopen(fn_env, "w");
603     if (!fp) {
604         free(fn_env);
605 
606         return -1;
607     }
608 
609     if (type == 0) {
610         ptra_ctx->trace_codedbuf_fn = fn_env;
611         ptra_ctx->trace_fp_codedbuf = fp;
612         va_infoMessage(pva_trace->dpy, "LIBVA_TRACE_CODEDBUF is on, save codedbuf into %s\n",
613                        fn_env);
614     } else {
615         ptra_ctx->trace_surface_fn = fn_env;
616         ptra_ctx->trace_fp_surface = fp;
617         va_infoMessage(pva_trace->dpy, "LIBVA_TRACE_SURFACE is on, save surface into %s\n",
618                        fn_env);
619     }
620 
621     return 0;
622 }
623 
open_tracing_log_file(struct va_trace * pva_trace,struct trace_log_file * plog_file,pid_t thd_id)624 static int open_tracing_log_file(
625     struct va_trace *pva_trace,
626     struct trace_log_file *plog_file,
627     pid_t thd_id)
628 {
629     FILE *pfp = NULL;
630     int new_fn_flag = 0;
631 
632     if (plog_file->used && plog_file->thread_id != thd_id) {
633         va_errorMessage(pva_trace->dpy, "Try to open a busy log file occupied by other thread\n");
634 
635         return -1;
636     }
637 
638     if (plog_file->thread_id != thd_id) {
639         char env_value[1024];
640 
641         strncpy(env_value, pva_trace->fn_log_env, 1024);
642         env_value[1023] = '\0';
643         FILE_NAME_SUFFIX(env_value, 1024,
644                          "thd-", (unsigned int)thd_id);
645 
646         if (plog_file->fn_log)
647             free(plog_file->fn_log);
648 
649         plog_file->fn_log = strdup(env_value);
650         if (!plog_file->fn_log)
651             goto FAIL;
652 
653         new_fn_flag = 1;
654     }
655 
656     if (!plog_file->used) {
657         if (new_fn_flag)
658             pfp = fopen(plog_file->fn_log, "w");
659         else
660             pfp = fopen(plog_file->fn_log, "a");
661 
662         if (!pfp)
663             goto FAIL;
664 
665         va_infoMessage(pva_trace->dpy, "%s %s for the thread 0x%08x\n",
666                        new_fn_flag ? "Open new log file" : "Append to log file",
667                        plog_file->fn_log, thd_id);
668 
669         plog_file->fp_log = pfp;
670         plog_file->thread_id = thd_id;
671     }
672 
673     plog_file->used++;
674     return 0;
675 
676 FAIL:
677     if (plog_file->fn_log) {
678         free(plog_file->fn_log);
679         plog_file->fn_log = NULL;
680     }
681 
682     return -1;
683 }
684 
get_log_file_idx_by_thd(struct trace_log_files_manager * plog_files_mgr,pid_t thd_id)685 static int get_log_file_idx_by_thd(
686     struct trace_log_files_manager *plog_files_mgr,
687     pid_t thd_id)
688 {
689     struct trace_log_file *plog_file = plog_files_mgr->log_file;
690     int first_free_idx = MAX_TRACE_THREAD_NUM;
691     int i = 0;
692 
693     for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
694         if (plog_file[i].thread_id == thd_id)
695             break;
696         else if (!plog_file[i].used &&
697                  first_free_idx >= MAX_TRACE_THREAD_NUM)
698             first_free_idx = i;
699     }
700 
701     if (i >= MAX_TRACE_THREAD_NUM)
702         i = first_free_idx;
703 
704     return i;
705 }
706 
start_tracing2log_file(struct va_trace * pva_trace)707 static struct trace_log_file *start_tracing2log_file(
708     struct va_trace *pva_trace)
709 {
710     struct trace_log_files_manager *plog_files_mgr = NULL;
711     struct trace_log_file *plog_file = NULL;
712     pid_t thd_id = va_gettid();
713     int i = 0;
714 
715     LOCK_RESOURCE(pva_trace);
716 
717     plog_files_mgr = &pva_trace->log_files_manager;
718     i = get_log_file_idx_by_thd(plog_files_mgr, thd_id);
719     if (i < MAX_TRACE_THREAD_NUM) {
720         plog_file = &plog_files_mgr->log_file[i];
721         if (open_tracing_log_file(pva_trace, plog_file, thd_id) < 0) {
722             plog_file = NULL;
723         }
724     }
725 
726     UNLOCK_RESOURCE(pva_trace);
727     return plog_file;
728 }
729 
stop_tracing2log_file(struct va_trace * pva_trace,struct trace_log_file * plog_file)730 static void stop_tracing2log_file(
731     struct va_trace *pva_trace,
732     struct trace_log_file *plog_file)
733 {
734     LOCK_RESOURCE(pva_trace);
735 
736     if (--plog_file->used <= 0) {
737         if (plog_file->fp_log) {
738             fclose(plog_file->fp_log);
739             plog_file->fp_log = NULL;
740         }
741     }
742 
743     UNLOCK_RESOURCE(pva_trace);
744 }
745 
refresh_log_file(struct va_trace * pva_trace,struct trace_context * ptra_ctx)746 static void refresh_log_file(
747     struct va_trace *pva_trace,
748     struct trace_context *ptra_ctx)
749 {
750     struct trace_log_file *plog_file = NULL;
751     pid_t thd_id = va_gettid();
752     int i = 0;
753 
754     plog_file = ptra_ctx->plog_file;
755     if (plog_file && plog_file->thread_id != thd_id) {
756         plog_file = start_tracing2log_file(pva_trace);
757         if (plog_file) {
758             int first_free_idx = -1;
759 
760             ptra_ctx->plog_file = plog_file;
761 
762             for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
763                 if (!ptra_ctx->plog_file_list[i]) {
764                     if (first_free_idx < 0)
765                         first_free_idx = i;
766                 } else if (ptra_ctx->plog_file_list[i]->thread_id == thd_id)
767                     break;
768             }
769 
770             if (i > MAX_TRACE_THREAD_NUM
771                 && first_free_idx >= 0)
772                 ptra_ctx->plog_file_list[first_free_idx] = plog_file;
773         }
774     }
775 }
776 
va_TraceInit(VADisplay dpy)777 void va_TraceInit(VADisplay dpy)
778 {
779     char env_value[1024];
780     struct va_trace *pva_trace = calloc(sizeof(struct va_trace), 1);
781     struct trace_context *trace_ctx = calloc(sizeof(struct trace_context), 1);
782 
783     if (pva_trace == NULL || trace_ctx == NULL) {
784         free(pva_trace);
785         free(trace_ctx);
786 
787         return;
788     }
789 
790     pva_trace->dpy = dpy;
791     pva_trace->ftrace_fd = -1;
792 
793     pthread_mutex_init(&pva_trace->resource_mutex, NULL);
794     pthread_mutex_init(&pva_trace->context_mutex, NULL);
795 
796 
797     if (va_parseConfig("LIBVA_TRACE", &env_value[0]) == 0) {
798         pva_trace->fn_log_env = strdup(env_value);
799         if (strcmp(env_value, "FTRACE") == 0) {
800             pva_trace->ftrace_fd = open(FTRACE_ENTRY, O_WRONLY);
801             if (pva_trace->ftrace_fd >= 0) {
802                 va_trace_flag = VA_TRACE_FLAG_FTRACE;
803                 va_infoMessage(dpy, "LIBVA_TRACE is active in ftrace mode, use trace-cmd to capture\n");
804             } else {
805                 va_errorMessage(dpy, "Open ftrace entry failed (%s)\n", strerror(errno));
806             }
807         } else {
808             trace_ctx->plog_file = start_tracing2log_file(pva_trace);
809             if (trace_ctx->plog_file) {
810                 trace_ctx->plog_file_list[0] = trace_ctx->plog_file;
811                 va_trace_flag = VA_TRACE_FLAG_LOG;
812 
813                 va_infoMessage(dpy, "LIBVA_TRACE is on, save log into %s\n",
814                                trace_ctx->plog_file->fn_log);
815             } else {
816                 va_errorMessage(dpy, "Open file %s failed (%s)\n", env_value, strerror(errno));
817             }
818         }
819     }
820 
821     /* may re-get the global settings for multiple context */
822     if ((va_trace_flag & (VA_TRACE_FLAG_LOG | VA_TRACE_FLAG_FTRACE)) && (va_parseConfig("LIBVA_TRACE_BUFDATA", NULL) == 0)) {
823         va_trace_flag |= VA_TRACE_FLAG_BUFDATA;
824 
825         va_infoMessage(dpy, "LIBVA_TRACE_BUFDATA is on, dump buffer into log file\n");
826     }
827 
828     /* per-context setting */
829     if (va_parseConfig("LIBVA_TRACE_CODEDBUF", &env_value[0]) == 0) {
830         pva_trace->fn_codedbuf_env = strdup(env_value);
831         va_trace_flag |= VA_TRACE_FLAG_CODEDBUF;
832     }
833 
834     if (va_parseConfig("LIBVA_TRACE_SURFACE", &env_value[0]) == 0) {
835         pva_trace->fn_surface_env = strdup(env_value);
836 
837         /* for surface data dump, it is time-consume, and may
838          * cause some side-effect, so only trace the needed surfaces
839          * to trace encode surface, set the trace file name to sth like *enc*
840          * to trace decode surface, set the trace file name to sth like *dec*
841          * if no dec/enc in file name, set both
842          */
843         if (strstr(env_value, "dec"))
844             va_trace_flag |= VA_TRACE_FLAG_SURFACE_DECODE;
845         if (strstr(env_value, "enc"))
846             va_trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE;
847         if (strstr(env_value, "jpeg") || strstr(env_value, "jpg"))
848             va_trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG;
849 
850         if (va_parseConfig("LIBVA_TRACE_SURFACE_GEOMETRY", &env_value[0]) == 0) {
851             char *p = env_value, *q;
852 
853             trace_ctx->trace_surface_width = (unsigned int) strtod(p, &q);
854             p = q + 1; /* skip "x" */
855             trace_ctx->trace_surface_height = (unsigned int) strtod(p, &q);
856             p = q + 1; /* skip "+" */
857             trace_ctx->trace_surface_xoff = (unsigned int) strtod(p, &q);
858             p = q + 1; /* skip "+" */
859             trace_ctx->trace_surface_yoff = (unsigned int) strtod(p, &q);
860 
861             va_infoMessage(dpy, "LIBVA_TRACE_SURFACE_GEOMETRY is on, only dump surface %dx%d+%d+%d content\n",
862                            trace_ctx->trace_surface_width,
863                            trace_ctx->trace_surface_height,
864                            trace_ctx->trace_surface_xoff,
865                            trace_ctx->trace_surface_yoff);
866         }
867     }
868 
869     trace_ctx->trace_context = VA_INVALID_ID;
870     pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM] = trace_ctx;
871 
872     ((VADisplayContextP)dpy)->vatrace = (void *)pva_trace;
873 
874     if (!va_trace_flag)
875         va_TraceEnd(dpy);
876 }
877 
va_TraceEnd(VADisplay dpy)878 void va_TraceEnd(VADisplay dpy)
879 {
880     struct va_trace *pva_trace = NULL;
881     int i = 0;
882 
883     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
884     if (!pva_trace)
885         return;
886 
887     if (pva_trace->fn_log_env)
888         free(pva_trace->fn_log_env);
889 
890     if (pva_trace->fn_codedbuf_env)
891         free(pva_trace->fn_codedbuf_env);
892 
893     if (pva_trace->fn_surface_env)
894         free(pva_trace->fn_surface_env);
895 
896     for (i = 0; i < MAX_TRACE_BUF_INFO_HASH_LEVEL; i++)
897         if (pva_trace->buf_manager.pbuf_info[i])
898             free(pva_trace->buf_manager.pbuf_info[i]);
899 
900     for (i = 0; i < MAX_TRACE_THREAD_NUM; i++) {
901         struct trace_log_file *plog_file = NULL;
902 
903         plog_file = &pva_trace->log_files_manager.log_file[i];
904         if (plog_file) {
905             if (plog_file->fn_log)
906                 free(plog_file->fn_log);
907 
908             if (plog_file->fp_log)
909                 fclose(plog_file->fp_log);
910         }
911     }
912 
913     for (i = 0; i < MAX_TRACE_CTX_NUM; i++) {
914         struct trace_context *trace_ctx = NULL;
915 
916         if (pva_trace->context_num <= 0)
917             break;
918 
919         trace_ctx = pva_trace->ptra_ctx[i];
920         if (trace_ctx) {
921             if (trace_ctx->trace_codedbuf_fn)
922                 free(trace_ctx->trace_codedbuf_fn);
923 
924             if (trace_ctx->trace_fp_codedbuf)
925                 fclose(trace_ctx->trace_fp_codedbuf);
926 
927             if (trace_ctx->trace_surface_fn)
928                 free(trace_ctx->trace_surface_fn);
929 
930             if (trace_ctx->trace_fp_surface)
931                 fclose(trace_ctx->trace_fp_surface);
932 
933             free(pva_trace->ptra_ctx[i]);
934             pva_trace->context_num--;
935         }
936     }
937     free(pva_trace->ptra_ctx[MAX_TRACE_CTX_NUM]);
938     // close ftrace file if have
939     if (pva_trace->ftrace_fd >= 0) {
940         close(pva_trace->ftrace_fd);
941     }
942 
943     pva_trace->dpy = NULL;
944     pthread_mutex_destroy(&pva_trace->resource_mutex);
945     pthread_mutex_destroy(&pva_trace->context_mutex);
946     free(pva_trace);
947     ((VADisplayContextP)dpy)->vatrace = NULL;
948 }
949 
va_TraceVPrint(struct trace_context * trace_ctx,const char * msg,va_list args)950 static void va_TraceVPrint(struct trace_context *trace_ctx, const char *msg, va_list args)
951 {
952     FILE *fp = NULL;
953 
954     if (!(va_trace_flag & VA_TRACE_FLAG_LOG)
955         || !trace_ctx->plog_file)
956         return;
957 
958     fp = trace_ctx->plog_file->fp_log;
959     if (msg)  {
960         vfprintf(fp, msg, args);
961     } else
962         fflush(fp);
963 }
964 
va_TracePrint(struct trace_context * trace_ctx,const char * msg,...)965 static void va_TracePrint(struct trace_context *trace_ctx, const char *msg, ...)
966 {
967     va_list args;
968     va_start(args, msg);
969     va_TraceVPrint(trace_ctx, msg, args);
970     va_end(args);
971 }
972 
va_TraceMsg(struct trace_context * trace_ctx,const char * msg,...)973 static void va_TraceMsg(struct trace_context *trace_ctx, const char *msg, ...)
974 {
975     va_list args;
976     struct timeval tv;
977 
978     if (!msg) {
979         va_TracePrint(trace_ctx, msg);
980         return;
981     }
982 
983     if (gettimeofday(&tv, NULL) == 0)
984         va_TracePrint(trace_ctx, "[%04d.%06d]",
985                       (unsigned int)tv.tv_sec & 0xffff, (unsigned int)tv.tv_usec);
986 
987     if (trace_ctx->trace_context != VA_INVALID_ID)
988         va_TracePrint(trace_ctx,
989                       "[ctx 0x%08x]", trace_ctx->trace_context);
990     else
991         va_TracePrint(trace_ctx, "[ctx       none]");
992 
993     va_start(args, msg);
994     va_TraceVPrint(trace_ctx, msg, args);
995     va_end(args);
996 }
997 
va_TraceSurface(VADisplay dpy,VAContextID context)998 static void va_TraceSurface(VADisplay dpy, VAContextID context)
999 {
1000     unsigned int i;
1001     unsigned int fourcc; /* following are output argument */
1002     unsigned int luma_stride;
1003     unsigned int chroma_u_stride;
1004     unsigned int chroma_v_stride;
1005     unsigned int luma_offset;
1006     unsigned int chroma_u_offset;
1007     unsigned int chroma_v_offset;
1008     unsigned int buffer_name;
1009     void *buffer = NULL;
1010     unsigned char *Y_data, *UV_data, *tmp;
1011     unsigned int pixel_byte;
1012     VAStatus va_status;
1013     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1014 
1015     if (!trace_ctx->trace_fp_surface)
1016         return;
1017 
1018     va_TraceMsg(trace_ctx, "==========dump surface data in file %s\n", trace_ctx->trace_surface_fn);
1019 
1020     va_TraceMsg(trace_ctx, NULL);
1021 
1022     va_status = vaLockSurface(
1023                     dpy,
1024                     trace_ctx->trace_rendertarget,
1025                     &fourcc,
1026                     &luma_stride, &chroma_u_stride, &chroma_v_stride,
1027                     &luma_offset, &chroma_u_offset, &chroma_v_offset,
1028                     &buffer_name, &buffer);
1029 
1030     if (va_status != VA_STATUS_SUCCESS) {
1031         va_TraceMsg(trace_ctx, "Error:vaLockSurface failed\n");
1032         return;
1033     }
1034 
1035     va_TraceMsg(trace_ctx, "\tfourcc = 0x%08x\n", fourcc);
1036     va_TraceMsg(trace_ctx, "\twidth = %d\n", trace_ctx->trace_frame_width);
1037     va_TraceMsg(trace_ctx, "\theight = %d\n", trace_ctx->trace_frame_height);
1038     va_TraceMsg(trace_ctx, "\tluma_stride = %d\n", luma_stride);
1039     va_TraceMsg(trace_ctx, "\tchroma_u_stride = %d\n", chroma_u_stride);
1040     va_TraceMsg(trace_ctx, "\tchroma_v_stride = %d\n", chroma_v_stride);
1041     va_TraceMsg(trace_ctx, "\tluma_offset = %d\n", luma_offset);
1042     va_TraceMsg(trace_ctx, "\tchroma_u_offset = %d\n", chroma_u_offset);
1043     va_TraceMsg(trace_ctx, "\tchroma_v_offset = %d\n", chroma_v_offset);
1044 
1045     if (buffer == NULL) {
1046         va_TraceMsg(trace_ctx, "Error:vaLockSurface return NULL buffer\n");
1047         va_TraceMsg(trace_ctx, NULL);
1048 
1049         vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
1050         return;
1051     }
1052     va_TraceMsg(trace_ctx, "\tbuffer location = 0x%p\n", buffer);
1053     va_TraceMsg(trace_ctx, NULL);
1054 
1055     Y_data = (unsigned char*)buffer;
1056     UV_data = (unsigned char*)buffer + chroma_u_offset;
1057 
1058     if (fourcc == VA_FOURCC_P010)
1059         pixel_byte = 2;
1060     else
1061         pixel_byte = 1;
1062 
1063     tmp = Y_data + luma_stride * trace_ctx->trace_surface_yoff;
1064 
1065     for (i = 0; i < trace_ctx->trace_surface_height; i++) {
1066         fwrite(tmp + trace_ctx->trace_surface_xoff,
1067                trace_ctx->trace_surface_width,
1068                pixel_byte, trace_ctx->trace_fp_surface);
1069 
1070         tmp += luma_stride;
1071     }
1072 
1073     tmp = UV_data + chroma_u_stride * trace_ctx->trace_surface_yoff / 2;
1074     if (fourcc == VA_FOURCC_NV12 || fourcc == VA_FOURCC_P010) {
1075         for (i = 0; i < trace_ctx->trace_surface_height / 2; i++) {
1076             fwrite(tmp + trace_ctx->trace_surface_xoff,
1077                    trace_ctx->trace_surface_width,
1078                    pixel_byte, trace_ctx->trace_fp_surface);
1079 
1080             tmp += chroma_u_stride;
1081         }
1082     }
1083 
1084     fflush(trace_ctx->trace_fp_surface);
1085 
1086     vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
1087 
1088     va_TraceMsg(trace_ctx, NULL);
1089 }
1090 
1091 
va_TraceInitialize(VADisplay dpy,int * major_version,int * minor_version)1092 void va_TraceInitialize(
1093     VADisplay dpy,
1094     int *major_version,     /* out */
1095     int *minor_version      /* out */
1096 )
1097 {
1098     DPY2TRACE_VIRCTX(dpy);
1099     TRACE_FUNCNAME(idx);
1100 
1101     const char* vendor_string = vaQueryVendorString(dpy);
1102     if (vendor_string)
1103         va_TraceMsg(trace_ctx, "==========\tVA-API vendor string: %s\n", vendor_string);
1104 
1105     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1106 }
1107 
va_TraceTerminate(VADisplay dpy)1108 void va_TraceTerminate(
1109     VADisplay dpy
1110 )
1111 {
1112     DPY2TRACE_VIRCTX(dpy);
1113     TRACE_FUNCNAME(idx);
1114     va_TraceMsg(trace_ctx, NULL);
1115     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1116 }
1117 
1118 
va_TraceCreateConfig(VADisplay dpy,VAProfile profile,VAEntrypoint entrypoint,VAConfigAttrib * attrib_list,int num_attribs,VAConfigID * config_id)1119 void va_TraceCreateConfig(
1120     VADisplay dpy,
1121     VAProfile profile,
1122     VAEntrypoint entrypoint,
1123     VAConfigAttrib *attrib_list,
1124     int num_attribs,
1125     VAConfigID *config_id /* out */
1126 )
1127 {
1128     int i;
1129 
1130     DPY2TRACE_VIRCTX(dpy);
1131 
1132     TRACE_FUNCNAME(idx);
1133 
1134     va_TraceMsg(trace_ctx, "\tprofile = %d, %s\n", profile, vaProfileStr(profile));
1135     va_TraceMsg(trace_ctx, "\tentrypoint = %d, %s\n", entrypoint, vaEntrypointStr(entrypoint));
1136     va_TraceMsg(trace_ctx, "\tnum_attribs = %d\n", num_attribs);
1137     if (attrib_list) {
1138         for (i = 0; i < num_attribs; i++) {
1139             va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].type = 0x%08x, %s\n", i, attrib_list[i].type, vaConfigAttribTypeStr(attrib_list[i].type));
1140             va_TraceMsg(trace_ctx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value);
1141         }
1142     }
1143     va_TraceMsg(trace_ctx, NULL);
1144 
1145     add_trace_config_info(pva_trace, *config_id, profile, entrypoint);
1146 
1147     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1148 }
1149 
va_TraceDestroyConfig(VADisplay dpy,VAConfigID config_id)1150 void va_TraceDestroyConfig(
1151     VADisplay dpy,
1152     VAConfigID config_id
1153 )
1154 {
1155     DPY2TRACE_VIRCTX(dpy);
1156 
1157     TRACE_FUNCNAME(idx);
1158 
1159     va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config_id);
1160     va_TraceMsg(trace_ctx, NULL);
1161 
1162     delete_trace_config_info(pva_trace, config_id);
1163 
1164     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1165 }
1166 
va_TraceSurfaceAttributes(struct trace_context * trace_ctx,VASurfaceAttrib * attrib_list,unsigned int * num_attribs,unsigned int num_surfaces)1167 static void va_TraceSurfaceAttributes(
1168     struct trace_context *trace_ctx,
1169     VASurfaceAttrib    *attrib_list,
1170     unsigned int       *num_attribs,
1171     unsigned int       num_surfaces
1172 )
1173 {
1174     int i, num;
1175     VASurfaceAttrib *p;
1176 
1177     if (!attrib_list || !num_attribs)
1178         return;
1179 
1180     /* Try to detect VASurfaceAttribMemoryType here, so it's available in case it is
1181        sent in attrib_list after the VASurfaceAttribExternalBufferDescriptor */
1182     int32_t memtype = 0;
1183     for (i = 0; i < *num_attribs; i++) {
1184         if (attrib_list[i].type == VASurfaceAttribMemoryType) {
1185             memtype = attrib_list[i].value.value.i;
1186             break;
1187         }
1188     }
1189 
1190     p = attrib_list;
1191     num = *num_attribs;
1192     if (num > VASurfaceAttribCount)
1193         num = VASurfaceAttribCount;
1194 
1195     for (i = 0; i < num; i++) {
1196         int type = p->value.type;
1197 
1198         va_TraceMsg(trace_ctx, "\tattrib_list[%i] =\n", i);
1199 
1200         va_TraceMsg(trace_ctx, "\t\ttype = %d\n", p->type);
1201         va_TraceMsg(trace_ctx, "\t\tflags = %d\n", p->flags);
1202         va_TraceMsg(trace_ctx, "\t\tvalue.type = %d\n", type);
1203         switch (type) {
1204         case VAGenericValueTypeInteger:
1205             va_TraceMsg(trace_ctx, "\t\tvalue.value.i = 0x%08x\n", p->value.value.i);
1206             break;
1207         case VAGenericValueTypeFloat:
1208             va_TraceMsg(trace_ctx, "\t\tvalue.value.f = %f\n", p->value.value.f);
1209             break;
1210         case VAGenericValueTypePointer:
1211             va_TraceMsg(trace_ctx, "\t\tvalue.value.p = %p\n", p->value.value.p);
1212             if ((p->type == VASurfaceAttribExternalBufferDescriptor) && p->value.value.p) {
1213                 /* Use memtype to distinguish type as specified in VASurfaceAttribExternalBufferDescriptor docs */
1214                 /* If not otherwise stated, the common VASurfaceAttribExternalBuffers should be used. */
1215                 if (memtype == 0 /* unspecified in attrib_list */ || memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME) {
1216                     VASurfaceAttribExternalBuffers *tmp = (VASurfaceAttribExternalBuffers *) p->value.value.p;
1217                     uint32_t j;
1218 
1219                     va_TraceMsg(trace_ctx, "\t\t--VASurfaceAttribExternalBufferDescriptor\n");
1220                     va_TraceMsg(trace_ctx, "\t\t  pixel_format=0x%08x\n", tmp->pixel_format);
1221                     va_TraceMsg(trace_ctx, "\t\t  width=%d\n", tmp->width);
1222                     va_TraceMsg(trace_ctx, "\t\t  height=%d\n", tmp->height);
1223                     va_TraceMsg(trace_ctx, "\t\t  data_size=%d\n", tmp->data_size);
1224                     va_TraceMsg(trace_ctx, "\t\t  num_planes=%d\n", tmp->num_planes);
1225                     va_TraceMsg(trace_ctx, "\t\t  pitches[4]=%d %d %d %d\n",
1226                                 tmp->pitches[0], tmp->pitches[1], tmp->pitches[2], tmp->pitches[3]);
1227                     va_TraceMsg(trace_ctx, "\t\t  offsets[4]=%d %d %d %d\n",
1228                                 tmp->offsets[0], tmp->offsets[1], tmp->offsets[2], tmp->offsets[3]);
1229                     va_TraceMsg(trace_ctx, "\t\t  flags=0x%08x\n", tmp->flags);
1230                     va_TraceMsg(trace_ctx, "\t\t  num_buffers=0x%08x\n", tmp->num_buffers);
1231                     va_TraceMsg(trace_ctx, "\t\t  buffers=%p\n", tmp->buffers);
1232                     for (j = 0; j < tmp->num_buffers; j++) {
1233                         va_TraceMsg(trace_ctx, "\t\t\tbuffers[%d]=%p\n", j, tmp->buffers[j]);
1234                     }
1235                 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2) {
1236                     VADRMPRIMESurfaceDescriptor *tmp = (VADRMPRIMESurfaceDescriptor *) p->value.value.p;
1237                     uint32_t j, k;
1238 
1239                     va_TraceMsg(trace_ctx, "\t\t--VADRMPRIMESurfaceDescriptor\n");
1240                     va_TraceMsg(trace_ctx, "\t\t  pixel_format=0x%08x\n", tmp->fourcc);
1241                     va_TraceMsg(trace_ctx, "\t\t  width=%d\n", tmp->width);
1242                     va_TraceMsg(trace_ctx, "\t\t  height=%d\n", tmp->height);
1243                     va_TraceMsg(trace_ctx, "\t\t  num_objects=0x%08x\n", tmp->num_objects);
1244                     for (j = 0; j < tmp->num_objects && tmp->num_objects <= 4; j++) {
1245                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].fd=%d\n", j, tmp->objects[j].fd);
1246                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].size=%d\n", j, tmp->objects[j].size);
1247                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].drm_format_modifier=%llx\n", j, tmp->objects[j].drm_format_modifier);
1248                     }
1249                     va_TraceMsg(trace_ctx, "\t\t  num_layers=%d\n", tmp->num_layers);
1250                     for (j = 0; j < tmp->num_layers && tmp->num_layers <= 4; j++) {
1251                         va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].drm_format=0x%08x\n", j, tmp->layers[j].drm_format);
1252                         va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].num_planes=0x%d\n", j, tmp->layers[j].num_planes);
1253                         for (k = 0; k < 4; k++) {
1254                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].object_index[%d]=0x%d\n", j, k, tmp->layers[j].object_index[k]);
1255                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].offset[%d]=0x%d\n", j, k, tmp->layers[j].offset[k]);
1256                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].pitch[%d]=0x%d\n", j, k, tmp->layers[j].pitch[k]);
1257                         }
1258                     }
1259                 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3) {
1260                     VADRMPRIME3SurfaceDescriptor *tmp = (VADRMPRIME3SurfaceDescriptor *) p->value.value.p;
1261                     uint32_t j, k;
1262 
1263                     va_TraceMsg(trace_ctx, "\t\t--VADRMPRIME3SurfaceDescriptor\n");
1264                     va_TraceMsg(trace_ctx, "\t\t  pixel_format=0x%08x\n", tmp->fourcc);
1265                     va_TraceMsg(trace_ctx, "\t\t  width=%d\n", tmp->width);
1266                     va_TraceMsg(trace_ctx, "\t\t  height=%d\n", tmp->height);
1267                     va_TraceMsg(trace_ctx, "\t\t  num_objects=0x%08x\n", tmp->num_objects);
1268                     va_TraceMsg(trace_ctx, "\t\t  flags=0x%08x\n", tmp->flags);
1269                     for (j = 0; j < tmp->num_objects && tmp->num_objects <= 4; j++) {
1270                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].fd=%d\n", j, tmp->objects[j].fd);
1271                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].size=%d\n", j, tmp->objects[j].size);
1272                         va_TraceMsg(trace_ctx, "\t\t\tobjects[%d].drm_format_modifier=%llx\n", j, tmp->objects[j].drm_format_modifier);
1273                     }
1274                     va_TraceMsg(trace_ctx, "\t\t  num_layers=%d\n", tmp->num_layers);
1275                     for (j = 0; j < tmp->num_layers && tmp->num_layers <= 4; j++) {
1276                         va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].drm_format=0x%08x\n", j, tmp->layers[j].drm_format);
1277                         va_TraceMsg(trace_ctx, "\t\t\tlayers[%d].num_planes=0x%d\n", j, tmp->layers[j].num_planes);
1278                         for (k = 0; k < 4; k++) {
1279                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].object_index[%d]=0x%d\n", j, k, tmp->layers[j].object_index[k]);
1280                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].offset[%d]=0x%d\n", j, k, tmp->layers[j].offset[k]);
1281                             va_TraceMsg(trace_ctx, "\t\t\t\tlayers[%d].pitch[%d]=0x%d\n", j, k, tmp->layers[j].pitch[k]);
1282                         }
1283                     }
1284 #if defined(_WIN32)
1285                 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_NTHANDLE) {
1286                     va_TraceMsg(trace_ctx, "\t\t--Win32 %d surfaces\n", num_surfaces);
1287                     HANDLE* surfaces = (HANDLE *) p->value.value.p;
1288                     for (uint32_t j = 0; j < num_surfaces; j++) {
1289                         va_TraceMsg(trace_ctx, "\t\t\tSurface[%d]: 0x%p (type: HANDLE)\n", j, surfaces[j]);
1290                     }
1291                 } else if (memtype == VA_SURFACE_ATTRIB_MEM_TYPE_D3D12_RESOURCE) {
1292                     va_TraceMsg(trace_ctx, "\t\t--Win32 %d surfaces\n", num_surfaces);
1293                     void** surfaces = (void**) p->value.value.p;
1294                     for (uint32_t j = 0; j < num_surfaces; j++) {
1295                         va_TraceMsg(trace_ctx, "\t\t\tSurface[%d]: 0x%p (type: ID3D12Resource*)\n", j, surfaces[j]);
1296                     }
1297 #endif
1298                 }
1299             }
1300             break;
1301         case VAGenericValueTypeFunc:
1302             va_TraceMsg(trace_ctx, "\t\tvalue.value.fn = %p\n", p->value.value.fn);
1303             break;
1304         default:
1305             break;
1306         }
1307 
1308         p++;
1309     }
1310 }
1311 
va_TraceCreateSurfaces(VADisplay dpy,int width,int height,int format,int num_surfaces,VASurfaceID * surfaces,VASurfaceAttrib * attrib_list,unsigned int num_attribs)1312 void va_TraceCreateSurfaces(
1313     VADisplay dpy,
1314     int width,
1315     int height,
1316     int format,
1317     int num_surfaces,
1318     VASurfaceID *surfaces,    /* out */
1319     VASurfaceAttrib    *attrib_list,
1320     unsigned int        num_attribs
1321 )
1322 {
1323     int i;
1324     DPY2TRACE_VIRCTX(dpy);
1325 
1326     TRACE_FUNCNAME(idx);
1327 
1328     va_TraceMsg(trace_ctx, "\twidth = %d\n", width);
1329     va_TraceMsg(trace_ctx, "\theight = %d\n", height);
1330     va_TraceMsg(trace_ctx, "\tformat = %d\n", format);
1331     va_TraceMsg(trace_ctx, "\tnum_surfaces = %d\n", num_surfaces);
1332 
1333     if (surfaces) {
1334         for (i = 0; i < num_surfaces; i++)
1335             va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]);
1336     }
1337 
1338     va_TraceSurfaceAttributes(trace_ctx, attrib_list, &num_attribs, num_surfaces);
1339 
1340     va_TraceMsg(trace_ctx, NULL);
1341 
1342     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1343 }
1344 
va_TraceDestroySurfaces(VADisplay dpy,VASurfaceID * surface_list,int num_surfaces)1345 void va_TraceDestroySurfaces(
1346     VADisplay dpy,
1347     VASurfaceID *surface_list,
1348     int num_surfaces
1349 )
1350 {
1351     int i;
1352     DPY2TRACE_VIRCTX(dpy);
1353 
1354     TRACE_FUNCNAME(idx);
1355 
1356     if (surface_list) {
1357         for (i = 0; i < num_surfaces; i++)
1358             va_TraceMsg(trace_ctx, "\t\tsurfaces[%d] = 0x%08x\n", i, surface_list[i]);
1359     }
1360 
1361     va_TraceMsg(trace_ctx, NULL);
1362 
1363     DPY2TRACE_VIRCTX_EXIT(pva_trace);
1364 }
1365 
1366 
internal_TraceUpdateContext(struct va_trace * pva_trace,int tra_ctx_idx,struct trace_context * new_trace_ctx,VAContextID context,int destroy_flag)1367 static void internal_TraceUpdateContext(
1368     struct va_trace *pva_trace,
1369     int tra_ctx_idx,
1370     struct trace_context *new_trace_ctx,
1371     VAContextID context,
1372     int destroy_flag
1373 )
1374 {
1375     struct trace_context *trace_ctx = NULL;
1376     int i = 0, delete = 1;
1377     pid_t thd_id = va_gettid();
1378 
1379     if (tra_ctx_idx >= MAX_TRACE_CTX_NUM)
1380         return;
1381 
1382     LOCK_RESOURCE(pva_trace);
1383 
1384     trace_ctx = pva_trace->ptra_ctx[tra_ctx_idx];
1385     if (trace_ctx) {
1386         if (!new_trace_ctx &&
1387             trace_ctx->created_thd_id != thd_id
1388             && !destroy_flag) {
1389             delete = 0;
1390         } else {
1391             pva_trace->context_num--;
1392             pva_trace->ptra_ctx[tra_ctx_idx] = NULL;
1393         }
1394     }
1395 
1396     if (new_trace_ctx) {
1397         new_trace_ctx->created_thd_id = thd_id;
1398         pva_trace->ptra_ctx[tra_ctx_idx] = new_trace_ctx;
1399         pva_trace->context_num++;
1400     }
1401 
1402     UNLOCK_RESOURCE(pva_trace);
1403 
1404     if (trace_ctx && delete) {
1405         for (i = 0; i < MAX_TRACE_THREAD_NUM; i++)
1406             if (trace_ctx->plog_file_list[i])
1407                 stop_tracing2log_file(pva_trace, trace_ctx->plog_file_list[i]);
1408 
1409         if (trace_ctx->trace_codedbuf_fn)
1410             free(trace_ctx->trace_codedbuf_fn);
1411 
1412         if (trace_ctx->trace_fp_codedbuf)
1413             fclose(trace_ctx->trace_fp_codedbuf);
1414 
1415         if (trace_ctx->trace_surface_fn)
1416             free(trace_ctx->trace_surface_fn);
1417 
1418         if (trace_ctx->trace_fp_surface)
1419             fclose(trace_ctx->trace_fp_surface);
1420 
1421         //delete_trace_all_context_buf(pva_trace, context);
1422 
1423         free(trace_ctx);
1424     }
1425 }
1426 
va_TraceCreateContext(VADisplay dpy,VAConfigID config_id,int picture_width,int picture_height,int flag,VASurfaceID * render_targets,int num_render_targets,VAContextID * context)1427 void va_TraceCreateContext(
1428     VADisplay dpy,
1429     VAConfigID config_id,
1430     int picture_width,
1431     int picture_height,
1432     int flag,
1433     VASurfaceID *render_targets,
1434     int num_render_targets,
1435     VAContextID *context        /* out */
1436 )
1437 {
1438     struct va_trace *pva_trace = NULL;
1439     struct trace_context *trace_ctx = NULL;
1440     int tra_ctx_id = 0;
1441     int encode = 0, decode = 0, jpeg = 0;
1442     int i;
1443 
1444     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
1445     if (!context
1446         || *context == VA_INVALID_ID
1447         || !pva_trace) {
1448         va_errorMessage(dpy, "Invalid context id 0x%08x\n",
1449                         context == NULL ? 0 : (int)*context);
1450         return;
1451     }
1452 
1453     LOCK_CONTEXT(pva_trace);
1454 
1455     tra_ctx_id = get_free_ctx_idx(pva_trace, *context);
1456     if (tra_ctx_id >= MAX_TRACE_CTX_NUM) {
1457         va_errorMessage(dpy, "Can't get trace context for ctx 0x%08x\n",
1458                         *context);
1459 
1460         goto FAIL;
1461     }
1462 
1463     trace_ctx = calloc(sizeof(struct trace_context), 1);
1464     if (trace_ctx == NULL) {
1465         va_errorMessage(dpy, "Allocate trace context failed for ctx 0x%08x\n",
1466                         *context);
1467 
1468         goto FAIL;
1469     }
1470 
1471     i = get_valid_config_idx(pva_trace, config_id);
1472     if (i >= MAX_TRACE_CTX_NUM) {
1473         va_errorMessage(dpy, "Can't get trace config id for ctx 0x%08x cfg %x\n",
1474                         *context, config_id);
1475 
1476         goto FAIL;
1477     }
1478     trace_ctx->trace_profile = pva_trace->config_info[i].trace_profile;
1479     trace_ctx->trace_entrypoint = pva_trace->config_info[i].trace_entrypoint;
1480 
1481     if (va_trace_flag & VA_TRACE_FLAG_LOG) {
1482         trace_ctx->plog_file = start_tracing2log_file(pva_trace);
1483         if (!trace_ctx->plog_file) {
1484             va_errorMessage(dpy, "Can't get trace log file for ctx 0x%08x\n",
1485                             *context);
1486 
1487             goto FAIL;
1488         } else
1489             va_infoMessage(dpy, "Save context 0x%08x into log file %s\n", *context,
1490                            trace_ctx->plog_file->fn_log);
1491 
1492         trace_ctx->plog_file_list[0] = trace_ctx->plog_file;
1493     }
1494 
1495     trace_ctx->trace_context = *context;
1496     TRACE_FUNCNAME(idx);
1497     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x va_trace_flag 0x%x\n", *context, va_trace_flag);
1498     va_TraceMsg(trace_ctx, "\tprofile = %d,%s entrypoint = %d,%s\n", trace_ctx->trace_profile,
1499                 vaProfileStr(trace_ctx->trace_profile), trace_ctx->trace_entrypoint,
1500                 vaEntrypointStr(trace_ctx->trace_entrypoint));
1501     va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config_id);
1502     va_TraceMsg(trace_ctx, "\twidth = %d\n", picture_width);
1503     va_TraceMsg(trace_ctx, "\theight = %d\n", picture_height);
1504     va_TraceMsg(trace_ctx, "\tflag = 0x%08x\n", flag);
1505     va_TraceMsg(trace_ctx, "\tnum_render_targets = %d\n", num_render_targets);
1506     if (render_targets) {
1507         for (i = 0; i < num_render_targets; i++)
1508             va_TraceMsg(trace_ctx, "\t\trender_targets[%d] = 0x%08x\n", i, render_targets[i]);
1509     }
1510 
1511     trace_ctx->trace_frame_no = 0;
1512     trace_ctx->trace_slice_no = 0;
1513 
1514     trace_ctx->trace_frame_width = picture_width;
1515     trace_ctx->trace_frame_height = picture_height;
1516 
1517     if (trace_ctx->trace_surface_width == 0)
1518         trace_ctx->trace_surface_width = picture_width;
1519     if (trace_ctx->trace_surface_height == 0)
1520         trace_ctx->trace_surface_height = picture_height;
1521 
1522     /* avoid to create so many empty files */
1523     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
1524     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
1525     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
1526     if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
1527         (decode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
1528         (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
1529         if (open_tracing_specil_file(pva_trace, trace_ctx, 1) < 0) {
1530             va_errorMessage(dpy, "Open surface fail failed for ctx 0x%08x\n", *context);
1531 
1532             va_trace_flag &= ~(VA_TRACE_FLAG_SURFACE);
1533         }
1534     }
1535 
1536     if (encode && (va_trace_flag & VA_TRACE_FLAG_CODEDBUF)) {
1537         if (open_tracing_specil_file(pva_trace, trace_ctx, 0) < 0) {
1538             va_errorMessage(dpy, "Open codedbuf fail failed for ctx 0x%08x\n", *context);
1539 
1540             va_trace_flag &= ~(VA_TRACE_FLAG_CODEDBUF);
1541         }
1542     }
1543 
1544     internal_TraceUpdateContext(pva_trace, tra_ctx_id, trace_ctx, *context, 0);
1545 
1546     UNLOCK_CONTEXT(pva_trace);
1547     return;
1548 
1549 FAIL:
1550     internal_TraceUpdateContext(pva_trace, tra_ctx_id, NULL, *context, 1);
1551 
1552     UNLOCK_CONTEXT(pva_trace);
1553 
1554     if (trace_ctx)
1555         free(trace_ctx);
1556 }
1557 
va_TraceDestroyContext(VADisplay dpy,VAContextID context)1558 void va_TraceDestroyContext(
1559     VADisplay dpy,
1560     VAContextID context
1561 )
1562 {
1563     struct va_trace *pva_trace = NULL;
1564     struct trace_context *trace_ctx = NULL;
1565     int ctx_id = 0;
1566 
1567     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
1568 
1569     if (!pva_trace)
1570         return;
1571 
1572     LOCK_CONTEXT(pva_trace);
1573 
1574     ctx_id = get_valid_ctx_idx(pva_trace, context);
1575     if (ctx_id < MAX_TRACE_CTX_NUM) {
1576         trace_ctx = pva_trace->ptra_ctx[ctx_id];
1577 
1578         if (trace_ctx) {
1579             refresh_log_file(pva_trace, trace_ctx);
1580 
1581             internal_TraceUpdateContext(pva_trace,
1582                                         get_valid_ctx_idx(pva_trace, context),
1583                                         NULL, context, 0);
1584         }
1585     }
1586 
1587     UNLOCK_CONTEXT(pva_trace);
1588 }
1589 
va_TraceCreateMFContext(VADisplay dpy,VAMFContextID * mf_context)1590 void va_TraceCreateMFContext(
1591     VADisplay dpy,
1592     VAMFContextID *mf_context    /* out */
1593 )
1594 {
1595     DPY2TRACECTX(dpy, VA_INVALID_ID, VA_INVALID_ID);
1596     TRACE_FUNCNAME(idx);
1597     if (mf_context) {
1598         va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", *mf_context);
1599         trace_ctx->trace_context = *mf_context;
1600     } else
1601         trace_ctx->trace_context = VA_INVALID_ID;
1602 }
1603 
va_TraceMFAddContext(VADisplay dpy,VAMFContextID mf_context,VAContextID context)1604 void va_TraceMFAddContext(
1605     VADisplay dpy,
1606     VAMFContextID mf_context,
1607     VAContextID context
1608 )
1609 {
1610     DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1611 
1612     TRACE_FUNCNAME(idx);
1613     va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1614     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
1615 }
1616 
va_TraceMFReleaseContext(VADisplay dpy,VAMFContextID mf_context,VAContextID context)1617 void va_TraceMFReleaseContext(
1618     VADisplay dpy,
1619     VAMFContextID mf_context,
1620     VAContextID context
1621 )
1622 {
1623     DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1624 
1625     TRACE_FUNCNAME(idx);
1626     va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1627     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
1628 }
1629 
va_TraceMFSubmit(VADisplay dpy,VAMFContextID mf_context,VAContextID * contexts,int num_contexts)1630 void va_TraceMFSubmit(
1631     VADisplay dpy,
1632     VAMFContextID mf_context,
1633     VAContextID *contexts,
1634     int num_contexts
1635 )
1636 {
1637     int i;
1638 
1639     DPY2TRACECTX(dpy, mf_context, VA_INVALID_ID);
1640 
1641     TRACE_FUNCNAME(idx);
1642     va_TraceMsg(trace_ctx, "\tmf_context = 0x%08x\n", mf_context);
1643 
1644     for (i = 0; i < num_contexts; i++) {
1645         va_TraceMsg(trace_ctx, "\t\tcontext[%d] = 0x%08x\n", i, contexts[i]);
1646     }
1647 }
1648 
va_TraceCreateBuffer(VADisplay dpy,VAContextID context,VABufferType type,unsigned int size,unsigned int num_elements,void * data,VABufferID * buf_id)1649 void va_TraceCreateBuffer(
1650     VADisplay dpy,
1651     VAContextID context,    /* in */
1652     VABufferType type,      /* in */
1653     unsigned int size,      /* in */
1654     unsigned int num_elements,  /* in */
1655     void *data,         /* in */
1656     VABufferID *buf_id      /* out */
1657 )
1658 {
1659     if (!buf_id || *buf_id == VA_INVALID_ID)
1660         return;
1661 
1662     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1663 
1664     add_trace_buf_info(pva_trace, context, *buf_id);
1665 
1666     /* only trace CodedBuffer */
1667     if (type != VAEncCodedBufferType)
1668         return;
1669 
1670     TRACE_FUNCNAME(idx);
1671     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1672     if (buf_id)
1673         va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", *buf_id);
1674     va_TraceMsg(trace_ctx, "\tsize=%u\n", size);
1675     va_TraceMsg(trace_ctx, "\tnum_elements=%u\n", num_elements);
1676 
1677     va_TraceMsg(trace_ctx, NULL);
1678 }
1679 
va_TraceDestroyBuffer(VADisplay dpy,VABufferID buf_id)1680 void va_TraceDestroyBuffer(
1681     VADisplay dpy,
1682     VABufferID buf_id    /* in */
1683 )
1684 {
1685     VABufferType type;
1686     unsigned int size;
1687     unsigned int num_elements;
1688 
1689     if (buf_id == VA_INVALID_ID)
1690         return;
1691 
1692     DPY2TRACECTX(dpy, VA_INVALID_ID, buf_id);
1693 
1694     vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
1695 
1696     delete_trace_buf_info(pva_trace, buf_id);
1697 
1698     /* only trace CodedBuffer */
1699     if (type != VAEncCodedBufferType)
1700         return;
1701 
1702     TRACE_FUNCNAME(idx);
1703     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1704     va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
1705     va_TraceMsg(trace_ctx, "\tsize=%u\n", size);
1706     va_TraceMsg(trace_ctx, "\tnum_elements=%u\n", num_elements);
1707 
1708     va_TraceMsg(trace_ctx, NULL);
1709 }
1710 
1711 
mem_put_le16(char * mem,unsigned int val)1712 static void mem_put_le16(char *mem, unsigned int val)
1713 {
1714     mem[0] = val;
1715     mem[1] = val >> 8;
1716 }
1717 
mem_put_le32(char * mem,unsigned int val)1718 static void mem_put_le32(char *mem, unsigned int val)
1719 {
1720     mem[0] = val;
1721     mem[1] = val >> 8;
1722     mem[2] = val >> 16;
1723     mem[3] = val >> 24;
1724 }
1725 
va_TraceCodedBufferIVFHeader(struct trace_context * trace_ctx,void ** pbuf)1726 static void va_TraceCodedBufferIVFHeader(struct trace_context *trace_ctx, void **pbuf)
1727 {
1728     VACodedBufferSegment *buf_list;
1729     unsigned int frame_length = 0;
1730     char header[32];
1731 
1732     buf_list = (VACodedBufferSegment *)(*pbuf);
1733 
1734     if (ftell(trace_ctx->trace_fp_codedbuf) == 0) { /* write ivf header */
1735         header[0] = 'D';
1736         header[1] = 'K';
1737         header[2] = 'I';
1738         header[3] = 'F';
1739         mem_put_le16(header + 4,  0);                   /* version */
1740         mem_put_le16(header + 6,  32);                  /* headersize */
1741         mem_put_le32(header + 8,  0x30385056);          /* headersize */
1742         /* write width and height of the first rc_param to IVF file header */
1743         mem_put_le16(header + 12, trace_ctx->trace_frame_width); /* width */
1744         mem_put_le16(header + 14, trace_ctx->trace_frame_height); /* height */
1745         mem_put_le32(header + 16, 30);          /* rate */
1746         mem_put_le32(header + 20, 1);                   /* scale */
1747         mem_put_le32(header + 24, 0xffffffff);          /* length */
1748         mem_put_le32(header + 28, 0);                   /* unused */
1749         fwrite(header, 1, 32, trace_ctx->trace_fp_codedbuf);
1750     }
1751 
1752     /* write frame header */
1753     while (buf_list != NULL) {
1754         frame_length += buf_list->size;
1755         buf_list = (VACodedBufferSegment *) buf_list->next;
1756     }
1757     mem_put_le32(header, frame_length);
1758     mem_put_le32(header + 4, trace_ctx->pts & 0xFFFFFFFF);
1759     mem_put_le32(header + 8, 0);
1760     fwrite(header, 1, 12, trace_ctx->trace_fp_codedbuf);
1761     trace_ctx->pts++;
1762 
1763     fflush(trace_ctx->trace_fp_codedbuf);
1764 }
1765 
va_TraceMapBuffer(VADisplay dpy,VABufferID buf_id,void ** pbuf,uint32_t flags)1766 void va_TraceMapBuffer(
1767     VADisplay dpy,
1768     VABufferID buf_id,    /* in */
1769     void **pbuf,          /* out */
1770     uint32_t flags       /* in */
1771 )
1772 {
1773     VABufferType type;
1774     unsigned int size;
1775     unsigned int num_elements;
1776 
1777     VACodedBufferSegment *buf_list;
1778     int i = 0;
1779 
1780     DPY2TRACECTX(dpy, VA_INVALID_ID, buf_id);
1781 
1782     vaBufferInfo(dpy, trace_ctx->trace_context, buf_id, &type, &size, &num_elements);
1783 
1784     /* only trace CodedBuffer */
1785     if (type != VAEncCodedBufferType)
1786         return;
1787 
1788     TRACE_FUNCNAME(idx);
1789     va_TraceMsg(trace_ctx, "\tbuf_id=0x%x\n", buf_id);
1790     va_TraceMsg(trace_ctx, "\tbuf_type=%s\n", vaBufferTypeStr(type));
1791     va_TraceMsg(trace_ctx, "\tflags = 0x%x\n", flags);
1792     if ((pbuf == NULL) || (*pbuf == NULL))
1793         return;
1794 
1795     if (trace_ctx->trace_profile == VAProfileVP8Version0_3) {
1796         va_TraceMsg(trace_ctx, "\tAdd IVF header information\n");
1797         va_TraceCodedBufferIVFHeader(trace_ctx, pbuf);
1798     }
1799 
1800     buf_list = (VACodedBufferSegment *)(*pbuf);
1801     while (buf_list != NULL) {
1802         va_TraceMsg(trace_ctx, "\tCodedbuf[%d] =\n", i++);
1803 
1804         va_TraceMsg(trace_ctx, "\t   size = %u\n", buf_list->size);
1805         va_TraceMsg(trace_ctx, "\t   bit_offset = %u\n", buf_list->bit_offset);
1806         va_TraceMsg(trace_ctx, "\t   status = 0x%08x\n", buf_list->status);
1807         va_TraceMsg(trace_ctx, "\t   reserved = 0x%08x\n", buf_list->reserved);
1808         va_TraceMsg(trace_ctx, "\t   buf = 0x%p\n", buf_list->buf);
1809 
1810         if (trace_ctx->trace_fp_codedbuf) {
1811             va_TraceMsg(trace_ctx, "\tDump the content to file\n");
1812             fwrite(buf_list->buf, buf_list->size, 1, trace_ctx->trace_fp_codedbuf);
1813 
1814             fflush(trace_ctx->trace_fp_codedbuf);
1815         }
1816 
1817         buf_list = buf_list->next;
1818     }
1819     va_TraceMsg(trace_ctx, NULL);
1820 }
1821 
va_TraceVABuffers(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)1822 static void va_TraceVABuffers(
1823     VADisplay dpy,
1824     VAContextID context,
1825     VABufferID buffer,
1826     VABufferType type,
1827     unsigned int size,
1828     unsigned int num_elements,
1829     void *pbuf
1830 )
1831 {
1832     unsigned int i;
1833     unsigned char *p = pbuf;
1834     FILE *fp = NULL;
1835 
1836     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1837 
1838     va_TraceMsg(trace_ctx, "--%s\n", vaBufferTypeStr(type));
1839 
1840     if (trace_ctx->plog_file)
1841         fp = trace_ctx->plog_file->fp_log;
1842 
1843     if ((va_trace_flag & VA_TRACE_FLAG_BUFDATA) && fp) {
1844         for (i = 0; i < size; i++) {
1845             unsigned char value =  p[i];
1846 
1847             if (i == 0)
1848                 fprintf(fp, "\t\t0x%04x:", i);
1849             else if ((i % 16) == 0)
1850                 fprintf(fp, "\n\t\t0x%04x:", i);
1851 
1852             fprintf(fp, " %02x", value);
1853         }
1854         fprintf(fp, "\n");
1855     }
1856 
1857     va_TraceMsg(trace_ctx, NULL);
1858 
1859     return;
1860 }
1861 
1862 
va_TraceVAPictureParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1863 static void va_TraceVAPictureParameterBufferMPEG2(
1864     VADisplay dpy,
1865     VAContextID context,
1866     VABufferID buffer,
1867     VABufferType type,
1868     unsigned int size,
1869     unsigned int num_elements,
1870     void *data)
1871 {
1872     VAPictureParameterBufferMPEG2 *p = (VAPictureParameterBufferMPEG2 *)data;
1873     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1874 
1875     va_TraceMsg(trace_ctx, "VAPictureParameterBufferMPEG2\n");
1876 
1877     va_TraceMsg(trace_ctx, "\thorizontal size= %d\n", p->horizontal_size);
1878     va_TraceMsg(trace_ctx, "\tvertical size= %d\n", p->vertical_size);
1879     va_TraceMsg(trace_ctx, "\tforward reference picture= %d\n", p->forward_reference_picture);
1880     va_TraceMsg(trace_ctx, "\tbackward reference picture= %d\n", p->backward_reference_picture);
1881     va_TraceMsg(trace_ctx, "\tpicture coding type= %d\n", p->picture_coding_type);
1882     va_TraceMsg(trace_ctx, "\tf mode= %d\n", p->f_code);
1883 
1884     va_TraceMsg(trace_ctx, "\tpicture coding extension = %d\n", p->picture_coding_extension.value);
1885     va_TraceMsg(trace_ctx, "\tintra_dc_precision= %d\n", p->picture_coding_extension.bits.intra_dc_precision);
1886     va_TraceMsg(trace_ctx, "\tpicture_structure= %d\n", p->picture_coding_extension.bits.picture_structure);
1887     va_TraceMsg(trace_ctx, "\ttop_field_first= %d\n", p->picture_coding_extension.bits.top_field_first);
1888     va_TraceMsg(trace_ctx, "\tframe_pred_frame_dct= %d\n", p->picture_coding_extension.bits.frame_pred_frame_dct);
1889     va_TraceMsg(trace_ctx, "\tconcealment_motion_vectors= %d\n", p->picture_coding_extension.bits.concealment_motion_vectors);
1890     va_TraceMsg(trace_ctx, "\tq_scale_type= %d\n", p->picture_coding_extension.bits.q_scale_type);
1891     va_TraceMsg(trace_ctx, "\tintra_vlc_format= %d\n", p->picture_coding_extension.bits.intra_vlc_format);
1892     va_TraceMsg(trace_ctx, "\talternate_scan= %d\n", p->picture_coding_extension.bits.alternate_scan);
1893     va_TraceMsg(trace_ctx, "\trepeat_first_field= %d\n", p->picture_coding_extension.bits.repeat_first_field);
1894     va_TraceMsg(trace_ctx, "\tprogressive_frame= %d\n", p->picture_coding_extension.bits.progressive_frame);
1895     va_TraceMsg(trace_ctx, "\tis_first_field= %d\n", p->picture_coding_extension.bits.is_first_field);
1896     va_TraceMsg(trace_ctx, NULL);
1897 
1898     return;
1899 }
1900 
1901 
va_TraceVAIQMatrixBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1902 static void va_TraceVAIQMatrixBufferMPEG2(
1903     VADisplay dpy,
1904     VAContextID context,
1905     VABufferID buffer,
1906     VABufferType type,
1907     unsigned int size,
1908     unsigned int num_elements,
1909     void *data)
1910 {
1911     VAIQMatrixBufferMPEG2 *p = (VAIQMatrixBufferMPEG2 *)data;
1912     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1913     int i;
1914 
1915     va_TraceMsg(trace_ctx, "VAIQMatrixBufferMPEG2\n");
1916 
1917     va_TraceMsg(trace_ctx, "\tload_intra_quantiser_matrix = %d\n", p->load_intra_quantiser_matrix);
1918     va_TraceMsg(trace_ctx, "\tload_non_intra_quantiser_matrix = %d\n", p->load_non_intra_quantiser_matrix);
1919     va_TraceMsg(trace_ctx, "\tload_chroma_intra_quantiser_matrix = %d\n", p->load_chroma_intra_quantiser_matrix);
1920     va_TraceMsg(trace_ctx, "\tload_chroma_non_intra_quantiser_matrix = %d\n", p->load_chroma_non_intra_quantiser_matrix);
1921     va_TraceMsg(trace_ctx, "\tintra_quantiser_matrix[] = {\n");
1922     for (i = 0; i < 64; i++) {
1923         if (i % 8 == 0) {
1924             if (i)
1925                 va_TracePrint(trace_ctx, "\n");
1926             va_TraceMsg(trace_ctx, "\t %3d", p->intra_quantiser_matrix[i]);
1927         } else {
1928             va_TracePrint(trace_ctx, " %3d", p->intra_quantiser_matrix[i]);
1929         }
1930     }
1931     va_TracePrint(trace_ctx, "}\n");
1932 
1933     va_TraceMsg(trace_ctx, "\tnon_intra_quantiser_matrix[] = {\n");
1934     for (i = 0; i < 64; i++) {
1935         if (i % 8 == 0) {
1936             if (i)
1937                 va_TracePrint(trace_ctx, "\n");
1938             va_TraceMsg(trace_ctx, "\t %3d", p->non_intra_quantiser_matrix[i]);
1939         } else {
1940             va_TracePrint(trace_ctx, " %3d", p->non_intra_quantiser_matrix[i]);
1941         }
1942     }
1943     va_TracePrint(trace_ctx, "}\n");
1944 
1945     va_TraceMsg(trace_ctx, "\tchroma_intra_quantiser_matrix[] = {\n");
1946     for (i = 0; i < 64; i++) {
1947         if (i % 8 == 0) {
1948             if (i)
1949                 va_TracePrint(trace_ctx, "\n");
1950             va_TraceMsg(trace_ctx, "\t %3d", p->chroma_intra_quantiser_matrix[i]);
1951         } else {
1952             va_TracePrint(trace_ctx, " %3d", p->chroma_intra_quantiser_matrix[i]);
1953         }
1954     }
1955     va_TracePrint(trace_ctx, "}\n");
1956 
1957     va_TraceMsg(trace_ctx, "\tchroma_non_intra_quantiser_matrix[] = {\n");
1958     for (i = 0; i < 64; i++) {
1959         if (i % 8 == 0) {
1960             if (i)
1961                 va_TracePrint(trace_ctx, "\n");
1962             va_TraceMsg(
1963                 trace_ctx, "\t %3d", p->chroma_non_intra_quantiser_matrix[i]);
1964         } else {
1965             va_TracePrint(
1966                 trace_ctx, " %3d", p->chroma_non_intra_quantiser_matrix[i]);
1967         }
1968     }
1969     va_TracePrint(trace_ctx, "}\n");
1970 
1971     return;
1972 }
1973 
1974 
va_TraceVASliceParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)1975 static void va_TraceVASliceParameterBufferMPEG2(
1976     VADisplay dpy,
1977     VAContextID context,
1978     VABufferID buffer,
1979     VABufferType type,
1980     unsigned int size,
1981     unsigned int num_elements,
1982     void *data)
1983 {
1984     VASliceParameterBufferMPEG2 *p = (VASliceParameterBufferMPEG2 *)data;
1985 
1986     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
1987 
1988     trace_ctx->trace_slice_no++;
1989 
1990     trace_ctx->trace_slice_size = p->slice_data_size;
1991 
1992     va_TraceMsg(trace_ctx, "VASliceParameterBufferMPEG2\n");
1993 
1994     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
1995     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
1996     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
1997     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
1998     va_TraceMsg(trace_ctx, "\tslice_horizontal_position = %d\n", p->slice_horizontal_position);
1999     va_TraceMsg(trace_ctx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
2000     va_TraceMsg(trace_ctx, "\tquantiser_scale_code = %d\n", p->quantiser_scale_code);
2001     va_TraceMsg(trace_ctx, "\tintra_slice_flag = %d\n", p->intra_slice_flag);
2002     va_TraceMsg(trace_ctx, NULL);
2003 
2004     return;
2005 }
2006 
va_TraceVAPictureParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2007 static void va_TraceVAPictureParameterBufferJPEG(
2008     VADisplay dpy,
2009     VAContextID context,
2010     VABufferID buffer,
2011     VABufferType type,
2012     unsigned int size,
2013     unsigned int num_elements,
2014     void *data)
2015 {
2016     int i;
2017     VAPictureParameterBufferJPEGBaseline *p = (VAPictureParameterBufferJPEGBaseline *)data;
2018     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2019 
2020     va_TraceMsg(trace_ctx, "*VAPictureParameterBufferJPEG\n");
2021     va_TraceMsg(trace_ctx, "\tpicture_width = %u\n", p->picture_width);
2022     va_TraceMsg(trace_ctx, "\tpicture_height = %u\n", p->picture_height);
2023     va_TraceMsg(trace_ctx, "\tcomponents = \n");
2024     for (i = 0; i < p->num_components && i < 255; ++i) {
2025         va_TraceMsg(trace_ctx, "\t\t[%d] component_id = %u\n", i, p->components[i].component_id);
2026         va_TraceMsg(trace_ctx, "\t\t[%d] h_sampling_factor = %u\n", i, p->components[i].h_sampling_factor);
2027         va_TraceMsg(trace_ctx, "\t\t[%d] v_sampling_factor = %u\n", i, p->components[i].v_sampling_factor);
2028         va_TraceMsg(trace_ctx, "\t\t[%d] quantiser_table_selector = %u\n", i, p->components[i].quantiser_table_selector);
2029     }
2030 }
2031 
va_TraceVAIQMatrixBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2032 static void va_TraceVAIQMatrixBufferJPEG(
2033     VADisplay dpy,
2034     VAContextID context,
2035     VABufferID buffer,
2036     VABufferType type,
2037     unsigned int size,
2038     unsigned int num_elements,
2039     void *data)
2040 {
2041     int i, j;
2042     static char tmp[1024];
2043     VAIQMatrixBufferJPEGBaseline *p = (VAIQMatrixBufferJPEGBaseline *)data;
2044     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2045     va_TraceMsg(trace_ctx, "*VAIQMatrixParameterBufferJPEG\n");
2046     va_TraceMsg(trace_ctx, "\tload_quantiser_table =\n");
2047     for (i = 0; i < 4; ++i) {
2048         va_TraceMsg(trace_ctx, "\t\t[%d] = %u\n", i, p->load_quantiser_table[i]);
2049     }
2050     va_TraceMsg(trace_ctx, "\tquantiser_table =\n");
2051     for (i = 0; i < 4; ++i) {
2052         memset(tmp, 0, sizeof tmp);
2053         for (j = 0; j < 64; ++j) {
2054             sprintf(tmp + strlen(tmp), "%u ", p->quantiser_table[i][j]);
2055         }
2056         va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
2057     }
2058 }
2059 
va_TraceVASliceParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2060 static void va_TraceVASliceParameterBufferJPEG(
2061     VADisplay dpy,
2062     VAContextID context,
2063     VABufferID buffer,
2064     VABufferType type,
2065     unsigned int size,
2066     unsigned int num_elements,
2067     void *data)
2068 {
2069     int i;
2070     VASliceParameterBufferJPEGBaseline *p = (VASliceParameterBufferJPEGBaseline *)data;
2071     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2072     va_TraceMsg(trace_ctx, "*VASliceParameterBufferJPEG\n");
2073     va_TraceMsg(trace_ctx, "\tslice_data_size = %u\n", p->slice_data_size);
2074     va_TraceMsg(trace_ctx, "\tslice_data_offset = %u\n", p->slice_data_offset);
2075     va_TraceMsg(trace_ctx, "\tslice_data_flag = %u\n", p->slice_data_flag);
2076     va_TraceMsg(trace_ctx, "\tslice_horizontal_position = %u\n", p->slice_horizontal_position);
2077     va_TraceMsg(trace_ctx, "\tslice_vertical_position = %u\n", p->slice_vertical_position);
2078     va_TraceMsg(trace_ctx, "\tcomponents = \n");
2079     for (i = 0; i < p->num_components && i < 4; ++i) {
2080         va_TraceMsg(trace_ctx, "\t\t[%d] component_selector = %u\n", i, p->components[i].component_selector);
2081         va_TraceMsg(trace_ctx, "\t\t[%d] dc_table_selector = %u\n", i, p->components[i].dc_table_selector);
2082         va_TraceMsg(trace_ctx, "\t\t[%d] ac_table_selector = %u\n", i, p->components[i].ac_table_selector);
2083     }
2084     va_TraceMsg(trace_ctx, "\trestart_interval = %u\n", p->restart_interval);
2085     va_TraceMsg(trace_ctx, "\tnum_mcus = %u\n", p->num_mcus);
2086 }
2087 
va_TraceVAHuffmanTableBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2088 static void va_TraceVAHuffmanTableBufferJPEG(
2089     VADisplay dpy,
2090     VAContextID context,
2091     VABufferID buffer,
2092     VABufferType type,
2093     unsigned int size,
2094     unsigned int num_elements,
2095     void *data)
2096 {
2097     int i, j;
2098     static char tmp[1024];
2099     VAHuffmanTableBufferJPEGBaseline *p = (VAHuffmanTableBufferJPEGBaseline *)data;
2100     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2101     va_TraceMsg(trace_ctx, "*VAHuffmanTableBufferJPEG\n");
2102 
2103     for (i = 0; i < 2; ++i) {
2104         va_TraceMsg(trace_ctx, "\tload_huffman_table[%d] =%u\n", i, p->load_huffman_table[i]);
2105         va_TraceMsg(trace_ctx, "\thuffman_table[%d] =\n", i);
2106         memset(tmp, 0, sizeof tmp);
2107         for (j = 0; j < 16; ++j) {
2108             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_dc_codes[j]);
2109         }
2110         va_TraceMsg(trace_ctx, "\t\tnum_dc_codes =%s\n", tmp);
2111         memset(tmp, 0, sizeof tmp);
2112         for (j = 0; j < 12; ++j) {
2113             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].dc_values[j]);
2114         }
2115         va_TraceMsg(trace_ctx, "\t\tdc_values =%s\n", tmp);
2116         memset(tmp, 0, sizeof tmp);
2117         for (j = 0; j < 16; ++j) {
2118             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].num_ac_codes[j]);
2119         }
2120         va_TraceMsg(trace_ctx, "\t\tnum_ac_codes =%s\n", tmp);
2121         memset(tmp, 0, sizeof tmp);
2122         for (j = 0; j < 162; ++j) {
2123             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].ac_values[j]);
2124         }
2125         va_TraceMsg(trace_ctx, "\t\tac_values =%s\n", tmp);
2126         memset(tmp, 0, sizeof tmp);
2127         for (j = 0; j < 2; ++j) {
2128             sprintf(tmp + strlen(tmp), "%u ", p->huffman_table[i].pad[j]);
2129         }
2130         va_TraceMsg(trace_ctx, "\t\tpad =%s\n", tmp);
2131     }
2132 }
2133 
va_TraceVAPictureParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2134 static void va_TraceVAPictureParameterBufferMPEG4(
2135     VADisplay dpy,
2136     VAContextID context,
2137     VABufferID buffer,
2138     VABufferType type,
2139     unsigned int size,
2140     unsigned int num_elements,
2141     void *data)
2142 {
2143     int i;
2144     VAPictureParameterBufferMPEG4 *p = (VAPictureParameterBufferMPEG4 *)data;
2145 
2146     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2147 
2148     va_TraceMsg(trace_ctx, "*VAPictureParameterBufferMPEG4\n");
2149     va_TraceMsg(trace_ctx, "\tvop_width = %d\n", p->vop_width);
2150     va_TraceMsg(trace_ctx, "\tvop_height = %d\n", p->vop_height);
2151     va_TraceMsg(trace_ctx, "\tforward_reference_picture = %d\n", p->forward_reference_picture);
2152     va_TraceMsg(trace_ctx, "\tbackward_reference_picture = %d\n", p->backward_reference_picture);
2153     va_TraceMsg(trace_ctx, "\tvol_fields value = %d\n", p->vol_fields.value);
2154     va_TraceMsg(trace_ctx, "\tshort_video_header= %d\n", p->vol_fields.bits.short_video_header);
2155     va_TraceMsg(trace_ctx, "\tchroma_format= %d\n", p->vol_fields.bits.chroma_format);
2156     va_TraceMsg(trace_ctx, "\tinterlaced= %d\n", p->vol_fields.bits.interlaced);
2157     va_TraceMsg(trace_ctx, "\tobmc_disable= %d\n", p->vol_fields.bits.obmc_disable);
2158     va_TraceMsg(trace_ctx, "\tsprite_enable= %d\n", p->vol_fields.bits.sprite_enable);
2159     va_TraceMsg(trace_ctx, "\tsprite_warping_accuracy= %d\n", p->vol_fields.bits.sprite_warping_accuracy);
2160     va_TraceMsg(trace_ctx, "\tquant_type= %d\n", p->vol_fields.bits.quant_type);
2161     va_TraceMsg(trace_ctx, "\tquarter_sample= %d\n", p->vol_fields.bits.quarter_sample);
2162     va_TraceMsg(trace_ctx, "\tdata_partitioned= %d\n", p->vol_fields.bits.data_partitioned);
2163     va_TraceMsg(trace_ctx, "\treversible_vlc= %d\n", p->vol_fields.bits.reversible_vlc);
2164     va_TraceMsg(trace_ctx, "\tresync_marker_disable= %d\n", p->vol_fields.bits.resync_marker_disable);
2165     va_TraceMsg(trace_ctx, "\tno_of_sprite_warping_points = %d\n", p->no_of_sprite_warping_points);
2166     va_TraceMsg(trace_ctx, "\tsprite_trajectory_du =");
2167     for (i = 0; i < 3; i++)
2168         va_TraceMsg(trace_ctx, "\t%d", p->sprite_trajectory_du[i]);
2169 
2170     va_TraceMsg(trace_ctx, "\n");
2171     va_TraceMsg(trace_ctx, "\tsprite_trajectory_dv =");
2172     for (i = 0; i < 3; i++)
2173         va_TraceMsg(trace_ctx, "\t%d", p->sprite_trajectory_dv[i]);
2174     va_TraceMsg(trace_ctx, "\n");
2175     va_TraceMsg(trace_ctx, "\tvop_fields value = %d\n", p->vop_fields.value);
2176     va_TraceMsg(trace_ctx, "\tvop_coding_type= %d\n", p->vop_fields.bits.vop_coding_type);
2177     va_TraceMsg(trace_ctx, "\tbackward_reference_vop_coding_type= %d\n", p->vop_fields.bits.backward_reference_vop_coding_type);
2178     va_TraceMsg(trace_ctx, "\tvop_rounding_type= %d\n", p->vop_fields.bits.vop_rounding_type);
2179     va_TraceMsg(trace_ctx, "\tintra_dc_vlc_thr= %d\n", p->vop_fields.bits.intra_dc_vlc_thr);
2180     va_TraceMsg(trace_ctx, "\ttop_field_first= %d\n", p->vop_fields.bits.top_field_first);
2181     va_TraceMsg(trace_ctx, "\talternate_vertical_scan_flag= %d\n", p->vop_fields.bits.alternate_vertical_scan_flag);
2182     va_TraceMsg(trace_ctx, "\tvop_fcode_forward = %d\n", p->vop_fcode_forward);
2183     va_TraceMsg(trace_ctx, "\tvop_fcode_backward = %d\n", p->vop_fcode_backward);
2184     va_TraceMsg(trace_ctx, "\tnum_gobs_in_vop = %d\n", p->num_gobs_in_vop);
2185     va_TraceMsg(trace_ctx, "\tnum_macroblocks_in_gob = %d\n", p->num_macroblocks_in_gob);
2186     va_TraceMsg(trace_ctx, "\tTRB = %d\n", p->TRB);
2187     va_TraceMsg(trace_ctx, "\tTRD = %d\n", p->TRD);
2188     va_TraceMsg(trace_ctx, NULL);
2189 
2190     return;
2191 }
2192 
2193 
va_TraceVAIQMatrixBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2194 static void va_TraceVAIQMatrixBufferMPEG4(
2195     VADisplay dpy,
2196     VAContextID context,
2197     VABufferID buffer,
2198     VABufferType type,
2199     unsigned int size,
2200     unsigned int num_elements,
2201     void *data)
2202 {
2203     int i;
2204     VAIQMatrixBufferMPEG4 *p = (VAIQMatrixBufferMPEG4 *)data;
2205     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2206 
2207     va_TraceMsg(trace_ctx, "VAIQMatrixBufferMPEG4\n");
2208 
2209     va_TraceMsg(trace_ctx, "\tload_intra_quant_mat = %d\n", p->load_intra_quant_mat);
2210     va_TraceMsg(trace_ctx, "\tload_non_intra_quant_mat = %d\n", p->load_non_intra_quant_mat);
2211     va_TraceMsg(trace_ctx, "\tintra_quant_mat =\n");
2212     for (i = 0; i < 64; i++)
2213         va_TraceMsg(trace_ctx, "\t\t%d\n", p->intra_quant_mat[i]);
2214 
2215     va_TraceMsg(trace_ctx, "\tnon_intra_quant_mat =\n");
2216     for (i = 0; i < 64; i++)
2217         va_TraceMsg(trace_ctx, "\t\t%d\n", p->non_intra_quant_mat[i]);
2218     va_TraceMsg(trace_ctx, NULL);
2219 
2220     return;
2221 }
2222 
va_TraceVAEncSequenceParameterBufferMPEG2(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2223 static void va_TraceVAEncSequenceParameterBufferMPEG2(
2224     VADisplay dpy,
2225     VAContextID context,
2226     VABufferID buffer,
2227     VABufferType type,
2228     unsigned int size,
2229     unsigned int num_elements,
2230     void *data)
2231 {
2232     VAEncSequenceParameterBufferMPEG2 *p = (VAEncSequenceParameterBufferMPEG2 *)data;
2233     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2234 
2235     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferMPEG2\n");
2236 
2237     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
2238     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
2239     va_TraceMsg(trace_ctx, "\tframe_rate = %f\n", p->frame_rate);
2240     va_TraceMsg(trace_ctx, "\tvbv_buffer_size = %d\n", p->vbv_buffer_size);
2241     va_TraceMsg(trace_ctx, NULL);
2242 
2243     return;
2244 }
2245 
va_TraceVAEncSequenceParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2246 static void va_TraceVAEncSequenceParameterBufferMPEG4(
2247     VADisplay dpy,
2248     VAContextID context,
2249     VABufferID buffer,
2250     VABufferType type,
2251     unsigned int size,
2252     unsigned int num_elements,
2253     void *data)
2254 {
2255     VAEncSequenceParameterBufferMPEG4 *p = (VAEncSequenceParameterBufferMPEG4 *)data;
2256     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2257 
2258     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferMPEG4\n");
2259 
2260     va_TraceMsg(trace_ctx, "\tprofile_and_level_indication = %d\n", p->profile_and_level_indication);
2261     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
2262     va_TraceMsg(trace_ctx, "\tvideo_object_layer_width = %d\n", p->video_object_layer_width);
2263     va_TraceMsg(trace_ctx, "\tvideo_object_layer_height = %d\n", p->video_object_layer_height);
2264     va_TraceMsg(trace_ctx, "\tvop_time_increment_resolution = %d\n", p->vop_time_increment_resolution);
2265     va_TraceMsg(trace_ctx, "\tfixed_vop_rate = %d\n", p->fixed_vop_rate);
2266     va_TraceMsg(trace_ctx, "\tfixed_vop_time_increment = %d\n", p->fixed_vop_time_increment);
2267     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
2268     va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
2269     va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
2270     va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
2271     va_TraceMsg(trace_ctx, NULL);
2272 
2273     return;
2274 }
2275 
va_TraceVAEncPictureParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2276 static void va_TraceVAEncPictureParameterBufferMPEG4(
2277     VADisplay dpy,
2278     VAContextID context,
2279     VABufferID buffer,
2280     VABufferType type,
2281     unsigned int size,
2282     unsigned int num_elements,
2283     void *data)
2284 {
2285     VAEncPictureParameterBufferMPEG4 *p = (VAEncPictureParameterBufferMPEG4 *)data;
2286     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2287 
2288     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferMPEG4\n");
2289     va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
2290     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
2291     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
2292     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
2293     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
2294     va_TraceMsg(trace_ctx, "\tmodulo_time_base = %d\n", p->modulo_time_base);
2295     va_TraceMsg(trace_ctx, "\tvop_time_increment = %d\n", p->vop_time_increment);
2296     va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_type);
2297     va_TraceMsg(trace_ctx, NULL);
2298 
2299     return;
2300 }
2301 
2302 
va_TraceVASliceParameterBufferMPEG4(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2303 static void va_TraceVASliceParameterBufferMPEG4(
2304     VADisplay dpy,
2305     VAContextID context,
2306     VABufferID buffer,
2307     VABufferType type,
2308     unsigned int size,
2309     unsigned int num_elements,
2310     void *data)
2311 {
2312     VASliceParameterBufferMPEG4 *p = (VASliceParameterBufferMPEG4 *)data;
2313 
2314     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2315 
2316     trace_ctx->trace_slice_no++;
2317 
2318     trace_ctx->trace_slice_size = p->slice_data_size;
2319 
2320     va_TraceMsg(trace_ctx, "VASliceParameterBufferMPEG4\n");
2321 
2322     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
2323     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
2324     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
2325     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
2326     va_TraceMsg(trace_ctx, "\tmacroblock_number = %d\n", p->macroblock_number);
2327     va_TraceMsg(trace_ctx, "\tquant_scale = %d\n", p->quant_scale);
2328     va_TraceMsg(trace_ctx, NULL);
2329 
2330     return;
2331 }
2332 
2333 
va_TraceFlagIfNotZero(struct trace_context * trace_ctx,const char * name,unsigned int flag)2334 static inline void va_TraceFlagIfNotZero(
2335     struct trace_context *trace_ctx,
2336     const char *name,   /* in */
2337     unsigned int flag   /* in */
2338 )
2339 {
2340     if (flag != 0) {
2341         va_TraceMsg(trace_ctx, "%s = %x\n", name, flag);
2342     }
2343 }
2344 
va_TraceVAPictureParameterBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2345 static void va_TraceVAPictureParameterBufferVVC(
2346     VADisplay dpy,
2347     VAContextID context,
2348     VABufferID buffer,
2349     VABufferType type,
2350     unsigned int size,
2351     unsigned int num_elements,
2352     void* data)
2353 {
2354     int i, j;
2355     VAPictureParameterBufferVVC* p = (VAPictureParameterBufferVVC*)data;
2356     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2357 
2358     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVVC\n");
2359 
2360     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
2361     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.pic_order_cnt);
2362     va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
2363 
2364     va_TraceMsg(trace_ctx, "\tReferenceFrames (picture_id-pic_order_cnt-flags):\n");
2365     for (i = 0; i < 15; i++) {
2366         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
2367             ((p->ReferenceFrames[i].flags & VA_PICTURE_VVC_INVALID) == 0)) {
2368             va_TraceMsg(trace_ctx, "\t\t0x%08x-%08d-0x%08x\n",
2369                         p->ReferenceFrames[i].picture_id,
2370                         p->ReferenceFrames[i].pic_order_cnt,
2371                         p->ReferenceFrames[i].flags);
2372         } else
2373             va_TraceMsg(trace_ctx, "\t\tinv-inv-inv-inv-inv\n");
2374     }
2375     va_TraceMsg(trace_ctx, "\n");
2376 
2377     va_TraceMsg(trace_ctx, "\tpps_pic_width_in_luma_samples = %d\n", p->pps_pic_width_in_luma_samples);
2378     va_TraceMsg(trace_ctx, "\tpps_pic_height_in_luma_samples = %d\n", p->pps_pic_height_in_luma_samples);
2379     va_TraceMsg(trace_ctx, "\tsps_num_subpics_minus1 = %d\n", p->sps_num_subpics_minus1);
2380     va_TraceMsg(trace_ctx, "\tsps_chroma_format_idc = %d\n", p->sps_chroma_format_idc);
2381     va_TraceMsg(trace_ctx, "\tsps_bitdepth_minus8 = %d\n", p->sps_bitdepth_minus8);
2382     va_TraceMsg(trace_ctx, "\tsps_log2_ctu_size_minus5 = %d\n", p->sps_log2_ctu_size_minus5);
2383     va_TraceMsg(trace_ctx, "\tsps_log2_min_luma_coding_block_size_minus2 = %d\n", p->sps_log2_min_luma_coding_block_size_minus2);
2384     va_TraceMsg(trace_ctx, "\tsps_log2_transform_skip_max_size_minus2 = %d\n", p->sps_log2_transform_skip_max_size_minus2);
2385 
2386     va_TraceMsg(trace_ctx, "\tChromaQpTable[3][111] =\n");
2387     va_TraceMsg(trace_ctx, "");
2388     for (i = 0; i < 3; i++) {
2389         for (j = 0; j < 111; j++) {
2390             va_TracePrint(trace_ctx, "\t%d", p->ChromaQpTable[i][j]);
2391             if ((j + 1) % 8 == 0)
2392                 TRACE_NEWLINE();
2393         }
2394         TRACE_NEWLINE();
2395     }
2396     va_TracePrint(trace_ctx, "\n");
2397 
2398     va_TraceMsg(trace_ctx, "\tsps_six_minus_max_num_merge_cand = %d\n", p->sps_six_minus_max_num_merge_cand);
2399     va_TraceMsg(trace_ctx, "\tsps_five_minus_max_num_subblock_merge_cand = %d\n", p->sps_five_minus_max_num_subblock_merge_cand);
2400     va_TraceMsg(trace_ctx, "\tsps_max_num_merge_cand_minus_max_num_gpm_cand = %d\n", p->sps_max_num_merge_cand_minus_max_num_gpm_cand);
2401     va_TraceMsg(trace_ctx, "\tsps_log2_parallel_merge_level_minus2 = %d\n", p->sps_log2_parallel_merge_level_minus2);
2402     va_TraceMsg(trace_ctx, "\tsps_min_qp_prime_ts = %d\n", p->sps_min_qp_prime_ts);
2403     va_TraceMsg(trace_ctx, "\tsps_six_minus_max_num_ibc_merge_cand = %d\n", p->sps_six_minus_max_num_ibc_merge_cand);
2404     va_TraceMsg(trace_ctx, "\tsps_num_ladf_intervals_minus2 = %d\n", p->sps_num_ladf_intervals_minus2);
2405     va_TraceMsg(trace_ctx, "\tsps_ladf_lowest_interval_qp_offset = %d\n", p->sps_ladf_lowest_interval_qp_offset);
2406 
2407     va_TraceMsg(trace_ctx, "\tsps_ladf_qp_offset[4]=\n");
2408     va_TraceMsg(trace_ctx, "");
2409     for (i = 0; i < 4; i++) {
2410         va_TracePrint(trace_ctx, "\t%d", p->sps_ladf_qp_offset[i]);
2411     }
2412     va_TracePrint(trace_ctx, "\n");
2413 
2414     va_TraceMsg(trace_ctx, "\tsps_ladf_delta_threshold_minus1[4]=\n");
2415     va_TraceMsg(trace_ctx, "");
2416     for (i = 0; i < 4; i++) {
2417         va_TracePrint(trace_ctx, "\t%d", p->sps_ladf_delta_threshold_minus1[i]);
2418     }
2419     va_TracePrint(trace_ctx, "\n");
2420 
2421     va_TraceMsg(trace_ctx, "\treserved32b01[2]=\n");
2422     va_TraceMsg(trace_ctx, "");
2423     for (i = 0; i < 2; i++) {
2424         va_TracePrint(trace_ctx, "\t%d", p->reserved32b01[i]);
2425     }
2426     va_TracePrint(trace_ctx, "\n");
2427 
2428     va_TraceMsg(trace_ctx, "\tsps_flags = %llu\n", p->sps_flags.value);
2429     va_TraceMsg(trace_ctx, "\tsps_subpic_info_present_flag = %llu\n", p->sps_flags.bits.sps_subpic_info_present_flag);
2430     va_TraceMsg(trace_ctx, "\tsps_independent_subpics_flag = %llu\n", p->sps_flags.bits.sps_independent_subpics_flag);
2431     va_TraceMsg(trace_ctx, "\tsps_subpic_same_size_flag = %llu\n", p->sps_flags.bits.sps_subpic_same_size_flag);
2432     va_TraceMsg(trace_ctx, "\tsps_entropy_coding_sync_enabled_flag = %llu\n", p->sps_flags.bits.sps_entropy_coding_sync_enabled_flag);
2433     va_TraceMsg(trace_ctx, "\tsps_qtbtt_dual_tree_intra_flag = %llu\n", p->sps_flags.bits.sps_qtbtt_dual_tree_intra_flag);
2434     va_TraceMsg(trace_ctx, "\tsps_max_luma_transform_size_64_flag = %llu\n", p->sps_flags.bits.sps_max_luma_transform_size_64_flag);
2435     va_TraceMsg(trace_ctx, "\tsps_transform_skip_enabled_flag = %llu\n", p->sps_flags.bits.sps_transform_skip_enabled_flag);
2436     va_TraceMsg(trace_ctx, "\tsps_bdpcm_enabled_flag = %llu\n", p->sps_flags.bits.sps_bdpcm_enabled_flag);
2437     va_TraceMsg(trace_ctx, "\tsps_mts_enabled_flag = %llu\n", p->sps_flags.bits.sps_mts_enabled_flag);
2438     va_TraceMsg(trace_ctx, "\tsps_explicit_mts_intra_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_mts_intra_enabled_flag);
2439     va_TraceMsg(trace_ctx, "\tsps_explicit_mts_inter_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_mts_inter_enabled_flag);
2440     va_TraceMsg(trace_ctx, "\tsps_lfnst_enabled_flag = %llu\n", p->sps_flags.bits.sps_lfnst_enabled_flag);
2441     va_TraceMsg(trace_ctx, "\tsps_joint_cbcr_enabled_flag = %llu\n", p->sps_flags.bits.sps_joint_cbcr_enabled_flag);
2442     va_TraceMsg(trace_ctx, "\tsps_same_qp_table_for_chroma_flag = %llu\n", p->sps_flags.bits.sps_same_qp_table_for_chroma_flag);
2443     va_TraceMsg(trace_ctx, "\tsps_sao_enabled_flag = %llu\n", p->sps_flags.bits.sps_sao_enabled_flag);
2444     va_TraceMsg(trace_ctx, "\tsps_alf_enabled_flag = %llu\n", p->sps_flags.bits.sps_alf_enabled_flag);
2445     va_TraceMsg(trace_ctx, "\tsps_ccalf_enabled_flag = %llu\n", p->sps_flags.bits.sps_ccalf_enabled_flag);
2446     va_TraceMsg(trace_ctx, "\tsps_lmcs_enabled_flag = %llu\n", p->sps_flags.bits.sps_lmcs_enabled_flag);
2447     va_TraceMsg(trace_ctx, "\tsps_sbtmvp_enabled_flag = %llu\n", p->sps_flags.bits.sps_sbtmvp_enabled_flag);
2448     va_TraceMsg(trace_ctx, "\tsps_amvr_enabled_flag = %llu\n", p->sps_flags.bits.sps_amvr_enabled_flag);
2449     va_TraceMsg(trace_ctx, "\tsps_smvd_enabled_flag = %llu\n", p->sps_flags.bits.sps_smvd_enabled_flag);
2450     va_TraceMsg(trace_ctx, "\tsps_mmvd_enabled_flag = %llu\n", p->sps_flags.bits.sps_mmvd_enabled_flag);
2451     va_TraceMsg(trace_ctx, "\tsps_sbt_enabled_flag = %llu\n", p->sps_flags.bits.sps_sbt_enabled_flag);
2452     va_TraceMsg(trace_ctx, "\tsps_affine_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_enabled_flag);
2453     va_TraceMsg(trace_ctx, "\tsps_6param_affine_enabled_flag = %llu\n", p->sps_flags.bits.sps_6param_affine_enabled_flag);
2454     va_TraceMsg(trace_ctx, "\tsps_affine_amvr_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_amvr_enabled_flag);
2455     va_TraceMsg(trace_ctx, "\tsps_affine_prof_enabled_flag = %llu\n", p->sps_flags.bits.sps_affine_prof_enabled_flag);
2456     va_TraceMsg(trace_ctx, "\tsps_bcw_enabled_flag = %llu\n", p->sps_flags.bits.sps_bcw_enabled_flag);
2457     va_TraceMsg(trace_ctx, "\tsps_ciip_enabled_flag = %llu\n", p->sps_flags.bits.sps_ciip_enabled_flag);
2458     va_TraceMsg(trace_ctx, "\tsps_gpm_enabled_flag = %llu\n", p->sps_flags.bits.sps_gpm_enabled_flag);
2459     va_TraceMsg(trace_ctx, "\tsps_isp_enabled_flag = %llu\n", p->sps_flags.bits.sps_isp_enabled_flag);
2460     va_TraceMsg(trace_ctx, "\tsps_mrl_enabled_flag = %llu\n", p->sps_flags.bits.sps_mrl_enabled_flag);
2461     va_TraceMsg(trace_ctx, "\tsps_mip_enabled_flag = %llu\n", p->sps_flags.bits.sps_mip_enabled_flag);
2462     va_TraceMsg(trace_ctx, "\tsps_cclm_enabled_flag = %llu\n", p->sps_flags.bits.sps_cclm_enabled_flag);
2463     va_TraceMsg(trace_ctx, "\tsps_chroma_horizontal_collocated_flag = %llu\n", p->sps_flags.bits.sps_chroma_horizontal_collocated_flag);
2464     va_TraceMsg(trace_ctx, "\tsps_chroma_vertical_collocated_flag = %llu\n", p->sps_flags.bits.sps_chroma_vertical_collocated_flag);
2465     va_TraceMsg(trace_ctx, "\tsps_palette_enabled_flag = %llu\n", p->sps_flags.bits.sps_palette_enabled_flag);
2466     va_TraceMsg(trace_ctx, "\tsps_act_enabled_flag = %llu\n", p->sps_flags.bits.sps_act_enabled_flag);
2467     va_TraceMsg(trace_ctx, "\tsps_ibc_enabled_flag = %llu\n", p->sps_flags.bits.sps_ibc_enabled_flag);
2468     va_TraceMsg(trace_ctx, "\tsps_ladf_enabled_flag = %llu\n", p->sps_flags.bits.sps_ladf_enabled_flag);
2469     va_TraceMsg(trace_ctx, "\tsps_explicit_scaling_list_enabled_flag = %llu\n", p->sps_flags.bits.sps_explicit_scaling_list_enabled_flag);
2470     va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_for_lfnst_disabled_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_for_lfnst_disabled_flag);
2471     va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_for_alternative_colour_space_disabled_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_for_alternative_colour_space_disabled_flag);
2472     va_TraceMsg(trace_ctx, "\tsps_scaling_matrix_designated_colour_space_flag = %llu\n", p->sps_flags.bits.sps_scaling_matrix_designated_colour_space_flag);
2473     va_TraceMsg(trace_ctx, "\tsps_virtual_boundaries_enabled_flag = %llu\n", p->sps_flags.bits.sps_virtual_boundaries_enabled_flag);
2474     va_TraceMsg(trace_ctx, "\tsps_virtual_boundaries_present_flag = %llu\n", p->sps_flags.bits.sps_virtual_boundaries_present_flag);
2475     va_TraceMsg(trace_ctx, "\treserved = %llu\n", p->sps_flags.bits.reserved);
2476 
2477     va_TraceMsg(trace_ctx, "\tNumVerVirtualBoundaries = %d\n", p->NumVerVirtualBoundaries);
2478     va_TraceMsg(trace_ctx, "\tNumHorVirtualBoundaries = %d\n", p->NumHorVirtualBoundaries);
2479     va_TraceMsg(trace_ctx, "\tVirtualBoundaryPosX[3]=\n");
2480     va_TraceMsg(trace_ctx, "");
2481     for (i = 0; i < 3; i++) {
2482         va_TracePrint(trace_ctx, "\t%d", p->VirtualBoundaryPosX[i]);
2483     }
2484     va_TracePrint(trace_ctx, "\n");
2485     va_TraceMsg(trace_ctx, "\tVirtualBoundaryPosY[3]=\n");
2486     va_TraceMsg(trace_ctx, "");
2487     for (i = 0; i < 3; i++) {
2488         va_TracePrint(trace_ctx, "\t%d", p->VirtualBoundaryPosY[i]);
2489     }
2490     va_TracePrint(trace_ctx, "\n");
2491 
2492     va_TraceMsg(trace_ctx, "\tpps_scaling_win_left_offset = %d\n", p->pps_scaling_win_left_offset);
2493     va_TraceMsg(trace_ctx, "\tpps_scaling_win_right_offset = %d\n", p->pps_scaling_win_right_offset);
2494     va_TraceMsg(trace_ctx, "\tpps_scaling_win_top_offset = %d\n", p->pps_scaling_win_top_offset);
2495     va_TraceMsg(trace_ctx, "\tpps_scaling_win_bottom_offset = %d\n", p->pps_scaling_win_bottom_offset);
2496 
2497     va_TraceMsg(trace_ctx, "\tpps_num_exp_tile_columns_minus1 = %d\n", p->pps_num_exp_tile_columns_minus1);
2498     va_TraceMsg(trace_ctx, "\tpps_num_exp_tile_rows_minus1 = %d\n", p->pps_num_exp_tile_rows_minus1);
2499     va_TraceMsg(trace_ctx, "\tpps_num_slices_in_pic_minus1 = %d\n", p->pps_num_slices_in_pic_minus1);
2500     va_TraceMsg(trace_ctx, "\tpps_pic_width_minus_wraparound_offset = %d\n", p->pps_pic_width_minus_wraparound_offset);
2501     va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
2502     va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
2503     va_TraceMsg(trace_ctx, "\tpps_joint_cbcr_qp_offset_value = %d\n", p->pps_joint_cbcr_qp_offset_value);
2504     va_TraceMsg(trace_ctx, "\tpps_chroma_qp_offset_list_len_minus1 = %d\n", p->pps_chroma_qp_offset_list_len_minus1);
2505 
2506     va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset_list[6]=\n");
2507     va_TraceMsg(trace_ctx, "");
2508     for (i = 0; i < 6; i++) {
2509         va_TracePrint(trace_ctx, "\t%d", p->pps_cb_qp_offset_list[i]);
2510     }
2511     va_TracePrint(trace_ctx, "\n");
2512 
2513     va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset_list[6]=\n");
2514     va_TraceMsg(trace_ctx, "");
2515     for (i = 0; i < 6; i++) {
2516         va_TracePrint(trace_ctx, "\t%d", p->pps_cr_qp_offset_list[i]);
2517     }
2518     va_TracePrint(trace_ctx, "\n");
2519 
2520     va_TraceMsg(trace_ctx, "\tpps_joint_cbcr_qp_offset_list[6]=\n");
2521     va_TraceMsg(trace_ctx, "");
2522     for (i = 0; i < 6; i++) {
2523         va_TracePrint(trace_ctx, "\t%d", p->pps_joint_cbcr_qp_offset_list[i]);
2524     }
2525     va_TracePrint(trace_ctx, "\n");
2526 
2527     va_TraceMsg(trace_ctx, "\treserved16b01 = %d\n", p->reserved16b01);
2528     va_TraceMsg(trace_ctx, "\treserved32b02[2]=\n");
2529     va_TraceMsg(trace_ctx, "");
2530     for (i = 0; i < 2; i++) {
2531         va_TracePrint(trace_ctx, "\t%d", p->reserved32b02[i]);
2532     }
2533     va_TracePrint(trace_ctx, "\n");
2534 
2535     va_TraceMsg(trace_ctx, "\tpps_flags = %d\n", p->pps_flags.value);
2536     va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_tiles_enabled_flag = %d\n", p->pps_flags.bits.pps_loop_filter_across_tiles_enabled_flag);
2537     va_TraceMsg(trace_ctx, "\tpps_rect_slice_flag = %d\n", p->pps_flags.bits.pps_rect_slice_flag);
2538     va_TraceMsg(trace_ctx, "\tpps_single_slice_per_subpic_flag = %d\n", p->pps_flags.bits.pps_single_slice_per_subpic_flag);
2539     va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pps_flags.bits.pps_loop_filter_across_slices_enabled_flag);
2540     va_TraceMsg(trace_ctx, "\tpps_weighted_pred_flag = %d\n", p->pps_flags.bits.pps_weighted_pred_flag);
2541     va_TraceMsg(trace_ctx, "\tpps_weighted_bipred_flag = %d\n", p->pps_flags.bits.pps_weighted_bipred_flag);
2542     va_TraceMsg(trace_ctx, "\tpps_ref_wraparound_enabled_flag = %d\n", p->pps_flags.bits.pps_ref_wraparound_enabled_flag);
2543     va_TraceMsg(trace_ctx, "\tpps_cu_qp_delta_enabled_flag = %d\n", p->pps_flags.bits.pps_cu_qp_delta_enabled_flag);
2544     va_TraceMsg(trace_ctx, "\tpps_cu_chroma_qp_offset_list_enabled_flag = %d\n", p->pps_flags.bits.pps_cu_chroma_qp_offset_list_enabled_flag);
2545     va_TraceMsg(trace_ctx, "\tpps_deblocking_filter_override_enabled_flag = %d\n", p->pps_flags.bits.pps_deblocking_filter_override_enabled_flag);
2546     va_TraceMsg(trace_ctx, "\tpps_deblocking_filter_disabled_flag = %d\n", p->pps_flags.bits.pps_deblocking_filter_disabled_flag);
2547     va_TraceMsg(trace_ctx, "\tpps_dbf_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_dbf_info_in_ph_flag);
2548     va_TraceMsg(trace_ctx, "\tpps_sao_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_sao_info_in_ph_flag);
2549     va_TraceMsg(trace_ctx, "\tpps_alf_info_in_ph_flag = %d\n", p->pps_flags.bits.pps_alf_info_in_ph_flag);
2550     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->pps_flags.bits.reserved);
2551 
2552     va_TraceMsg(trace_ctx, "\tph_lmcs_aps_id = %d\n", p->ph_lmcs_aps_id);
2553     va_TraceMsg(trace_ctx, "\tph_scaling_list_aps_id = %d\n", p->ph_scaling_list_aps_id);
2554     va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_intra_slice_luma = %d\n", p->ph_log2_diff_min_qt_min_cb_intra_slice_luma);
2555     va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_intra_slice_luma = %d\n", p->ph_max_mtt_hierarchy_depth_intra_slice_luma);
2556     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_intra_slice_luma = %d\n", p->ph_log2_diff_max_bt_min_qt_intra_slice_luma);
2557     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_intra_slice_luma = %d\n", p->ph_log2_diff_max_tt_min_qt_intra_slice_luma);
2558     va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_intra_slice_chroma = %d\n", p->ph_log2_diff_min_qt_min_cb_intra_slice_chroma);
2559     va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_intra_slice_chroma = %d\n", p->ph_max_mtt_hierarchy_depth_intra_slice_chroma);
2560     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_intra_slice_chroma = %d\n", p->ph_log2_diff_max_bt_min_qt_intra_slice_chroma);
2561     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_intra_slice_chroma = %d\n", p->ph_log2_diff_max_tt_min_qt_intra_slice_chroma);
2562     va_TraceMsg(trace_ctx, "\tph_cu_qp_delta_subdiv_intra_slice = %d\n", p->ph_cu_qp_delta_subdiv_intra_slice);
2563     va_TraceMsg(trace_ctx, "\tph_cu_chroma_qp_offset_subdiv_intra_slice = %d\n", p->ph_cu_chroma_qp_offset_subdiv_intra_slice);
2564     va_TraceMsg(trace_ctx, "\tph_log2_diff_min_qt_min_cb_inter_slice = %d\n", p->ph_log2_diff_min_qt_min_cb_inter_slice);
2565     va_TraceMsg(trace_ctx, "\tph_max_mtt_hierarchy_depth_inter_slice = %d\n", p->ph_max_mtt_hierarchy_depth_inter_slice);
2566     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_bt_min_qt_inter_slice = %d\n", p->ph_log2_diff_max_bt_min_qt_inter_slice);
2567     va_TraceMsg(trace_ctx, "\tph_log2_diff_max_tt_min_qt_inter_slice = %d\n", p->ph_log2_diff_max_tt_min_qt_inter_slice);
2568     va_TraceMsg(trace_ctx, "\tph_cu_qp_delta_subdiv_inter_slice = %d\n", p->ph_cu_qp_delta_subdiv_inter_slice);
2569     va_TraceMsg(trace_ctx, "\tph_cu_chroma_qp_offset_subdiv_inter_slice = %d\n", p->ph_cu_chroma_qp_offset_subdiv_inter_slice);
2570     va_TraceMsg(trace_ctx, "\treserved16b02 = %d\n", p->reserved16b02);
2571     va_TraceMsg(trace_ctx, "\treserved32b03[2]=\n");
2572     va_TraceMsg(trace_ctx, "");
2573     for (i = 0; i < 2; i++) {
2574         va_TracePrint(trace_ctx, "\t%d", p->reserved32b03[i]);
2575     }
2576     va_TracePrint(trace_ctx, "\n");
2577 
2578     va_TraceMsg(trace_ctx, "\tph_flags = %d\n", p->ph_flags.value);
2579     va_TraceMsg(trace_ctx, "\tph_non_ref_pic_flag = %d\n", p->ph_flags.bits.ph_non_ref_pic_flag);
2580     va_TraceMsg(trace_ctx, "\tph_alf_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_enabled_flag);
2581     va_TraceMsg(trace_ctx, "\tph_alf_cb_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cb_enabled_flag);
2582     va_TraceMsg(trace_ctx, "\tph_alf_cr_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cr_enabled_flag);
2583     va_TraceMsg(trace_ctx, "\tph_alf_cc_cb_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cc_cb_enabled_flag);
2584     va_TraceMsg(trace_ctx, "\tph_alf_cc_cr_enabled_flag = %d\n", p->ph_flags.bits.ph_alf_cc_cr_enabled_flag);
2585     va_TraceMsg(trace_ctx, "\tph_lmcs_enabled_flag = %d\n", p->ph_flags.bits.ph_lmcs_enabled_flag);
2586     va_TraceMsg(trace_ctx, "\tph_chroma_residual_scale_flag = %d\n", p->ph_flags.bits.ph_chroma_residual_scale_flag);
2587     va_TraceMsg(trace_ctx, "\tph_explicit_scaling_list_enabled_flag = %d\n", p->ph_flags.bits.ph_explicit_scaling_list_enabled_flag);
2588     va_TraceMsg(trace_ctx, "\tph_virtual_boundaries_present_flag = %d\n", p->ph_flags.bits.ph_virtual_boundaries_present_flag);
2589     va_TraceMsg(trace_ctx, "\tph_temporal_mvp_enabled_flag = %d\n", p->ph_flags.bits.ph_temporal_mvp_enabled_flag);
2590     va_TraceMsg(trace_ctx, "\tph_mmvd_fullpel_only_flag = %d\n", p->ph_flags.bits.ph_mmvd_fullpel_only_flag);
2591     va_TraceMsg(trace_ctx, "\tph_mvd_l1_zero_flag = %d\n", p->ph_flags.bits.ph_mvd_l1_zero_flag);
2592     va_TraceMsg(trace_ctx, "\tph_bdof_disabled_flag = %d\n", p->ph_flags.bits.ph_bdof_disabled_flag);
2593     va_TraceMsg(trace_ctx, "\tph_dmvr_disabled_flag = %d\n", p->ph_flags.bits.ph_dmvr_disabled_flag);
2594     va_TraceMsg(trace_ctx, "\tph_prof_disabled_flag = %d\n", p->ph_flags.bits.ph_prof_disabled_flag);
2595     va_TraceMsg(trace_ctx, "\tph_joint_cbcr_sign_flag = %d\n", p->ph_flags.bits.ph_joint_cbcr_sign_flag);
2596     va_TraceMsg(trace_ctx, "\tph_sao_luma_enabled_flag = %d\n", p->ph_flags.bits.ph_sao_luma_enabled_flag);
2597     va_TraceMsg(trace_ctx, "\tph_sao_chroma_enabled_flag = %d\n", p->ph_flags.bits.ph_sao_chroma_enabled_flag);
2598     va_TraceMsg(trace_ctx, "\tph_deblocking_filter_disabled_flag = %d\n", p->ph_flags.bits.ph_deblocking_filter_disabled_flag);
2599     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->ph_flags.bits.reserved);
2600     va_TraceMsg(trace_ctx, "\treserved32b04 = %d\n", p->reserved32b04);
2601 
2602     va_TraceMsg(trace_ctx, "\tPicMiscFlags = %d\n", p->PicMiscFlags.value);
2603     va_TraceMsg(trace_ctx, "\tIntraPicFlag = %d\n", p->PicMiscFlags.fields.IntraPicFlag);
2604     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->PicMiscFlags.fields.reserved);
2605     va_TraceMsg(trace_ctx, "\treserved32b[17]=\n");
2606     va_TraceMsg(trace_ctx, "");
2607     for (i = 0; i < 17; i++) {
2608         va_TracePrint(trace_ctx, "\t%d", p->reserved32b[i]);
2609     }
2610     va_TracePrint(trace_ctx, "\n");
2611     return;
2612 }
2613 
va_TraceVASliceParameterBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2614 static void va_TraceVASliceParameterBufferVVC(
2615     VADisplay dpy,
2616     VAContextID context,
2617     VABufferID buffer,
2618     VABufferType type,
2619     unsigned int size,
2620     unsigned int num_elements,
2621     void* data)
2622 {
2623     int i, j;
2624     VASliceParameterBufferVVC* p = (VASliceParameterBufferVVC*)data;
2625     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2626 
2627     trace_ctx->trace_slice_no++;
2628     trace_ctx->trace_slice_size = p->slice_data_size;
2629 
2630     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVVC\n");
2631     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
2632     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
2633     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
2634     va_TraceMsg(trace_ctx, "\tslice_data_byte_offset = %d\n", p->slice_data_byte_offset);
2635 
2636     va_TraceMsg(trace_ctx, "\tRefPicList[2][15]=\n");
2637     va_TraceMsg(trace_ctx, "");
2638     for (i = 0; i < 2; i++) {
2639         for (j = 0; j < 15; j++) {
2640             va_TracePrint(trace_ctx, "\t%d", p->RefPicList[i][j]);
2641             if ((j + 1) % 8 == 0)
2642                 TRACE_NEWLINE();
2643         }
2644         TRACE_NEWLINE();
2645     }
2646 
2647     va_TraceMsg(trace_ctx, "\tsh_subpic_id = %d\n", p->sh_subpic_id);
2648     va_TraceMsg(trace_ctx, "\tsh_slice_address = %d\n", p->sh_slice_address);
2649     va_TraceMsg(trace_ctx, "\tsh_num_tiles_in_slice_minus1 = %d\n", p->sh_num_tiles_in_slice_minus1);
2650     va_TraceMsg(trace_ctx, "\tsh_slice_type = %d\n", p->sh_slice_type);
2651     va_TraceMsg(trace_ctx, "\tsh_num_alf_aps_ids_luma = %d\n", p->sh_num_alf_aps_ids_luma);
2652 
2653     va_TraceMsg(trace_ctx, "\tsh_alf_aps_id_luma[7]=\n");
2654     va_TraceMsg(trace_ctx, "");
2655     for (i = 0; i < 7; i++) {
2656         va_TracePrint(trace_ctx, "\t%d", p->sh_alf_aps_id_luma[i]);
2657     }
2658     va_TracePrint(trace_ctx, "\n");
2659 
2660     va_TraceMsg(trace_ctx, "\tsh_alf_aps_id_chroma = %d\n", p->sh_alf_aps_id_chroma);
2661     va_TraceMsg(trace_ctx, "\tsh_alf_cc_cb_aps_id = %d\n", p->sh_alf_cc_cb_aps_id);
2662     va_TraceMsg(trace_ctx, "\tsh_alf_cc_cr_aps_id = %d\n", p->sh_alf_cc_cr_aps_id);
2663 
2664     va_TraceMsg(trace_ctx, "\tNumRefIdxActive[2]=\n");
2665     va_TraceMsg(trace_ctx, "");
2666     for (i = 0; i < 2; i++) {
2667         va_TracePrint(trace_ctx, "\t%d", p->NumRefIdxActive[i]);
2668     }
2669     va_TracePrint(trace_ctx, "\n");
2670 
2671     va_TraceMsg(trace_ctx, "\tsh_collocated_ref_idx = %d\n", p->sh_collocated_ref_idx);
2672     va_TraceMsg(trace_ctx, "\tSliceQpY = %d\n", p->SliceQpY);
2673     va_TraceMsg(trace_ctx, "\tsh_cb_qp_offset = %d\n", p->sh_cb_qp_offset);
2674     va_TraceMsg(trace_ctx, "\tsh_cr_qp_offset = %d\n", p->sh_cr_qp_offset);
2675     va_TraceMsg(trace_ctx, "\tsh_joint_cbcr_qp_offset = %d\n", p->sh_joint_cbcr_qp_offset);
2676     va_TraceMsg(trace_ctx, "\tsh_luma_beta_offset_div2 = %d\n", p->sh_luma_beta_offset_div2);
2677     va_TraceMsg(trace_ctx, "\tsh_luma_tc_offset_div2 = %d\n", p->sh_luma_tc_offset_div2);
2678     va_TraceMsg(trace_ctx, "\tsh_cb_beta_offset_div2 = %d\n", p->sh_cb_beta_offset_div2);
2679     va_TraceMsg(trace_ctx, "\tsh_cb_tc_offset_div2 = %d\n", p->sh_cb_tc_offset_div2);
2680     va_TraceMsg(trace_ctx, "\tsh_cr_beta_offset_div2 = %d\n", p->sh_cr_beta_offset_div2);
2681     va_TraceMsg(trace_ctx, "\tsh_cr_tc_offset_div2 = %d\n", p->sh_cr_tc_offset_div2);
2682     va_TraceMsg(trace_ctx, "\treserved8b[3]=\n");
2683     va_TraceMsg(trace_ctx, "");
2684     for (i = 0; i < 3; i++) {
2685         va_TracePrint(trace_ctx, "\t%d", p->reserved8b[i]);
2686     }
2687     va_TracePrint(trace_ctx, "\n");
2688     va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->reserved32b);
2689 
2690     va_TraceMsg(trace_ctx, "\tWPInfo=\n");
2691     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->WPInfo.luma_log2_weight_denom);
2692     va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->WPInfo.delta_chroma_log2_weight_denom);
2693     va_TraceMsg(trace_ctx, "\tnum_l0_weights = %d\n", p->WPInfo.num_l0_weights);
2694     va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag[15]=\n");
2695     for (i = 0; i < 15; i++) {
2696         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_weight_l0_flag[i]);
2697         if ((i + 1) % 8 == 0)
2698             TRACE_NEWLINE();
2699     }
2700     va_TracePrint(trace_ctx, "\n");
2701 
2702     va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag[15]=\n");
2703     for (i = 0; i < 15; i++) {
2704         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.chroma_weight_l0_flag[i]);
2705         if ((i + 1) % 8 == 0)
2706             TRACE_NEWLINE();
2707     }
2708     va_TracePrint(trace_ctx, "\n");
2709 
2710     va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l0[15]=\n");
2711     for (i = 0; i < 15; i++) {
2712         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.delta_luma_weight_l0[i]);
2713         if ((i + 1) % 8 == 0)
2714             TRACE_NEWLINE();
2715     }
2716     va_TracePrint(trace_ctx, "\n");
2717 
2718     va_TraceMsg(trace_ctx, "\tluma_offset_l0[15]=\n");
2719     for (i = 0; i < 15; i++) {
2720         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_offset_l0[i]);
2721         if ((i + 1) % 8 == 0)
2722             TRACE_NEWLINE();
2723     }
2724     va_TracePrint(trace_ctx, "\n");
2725 
2726     va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[15][2] = \n");
2727     va_TraceMsg(trace_ctx, "");
2728     for (i = 0; i < 15; i++) {
2729         for (j = 0; j < 2; j++) {
2730             va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_weight_l0[i][j]);
2731         }
2732         TRACE_NEWLINE();
2733     }
2734     va_TracePrint(trace_ctx, "\n");
2735 
2736     va_TraceMsg(trace_ctx, "\tdelta_chroma_offset_l0[15][2] = \n");
2737     va_TraceMsg(trace_ctx, "");
2738     for (i = 0; i < 15; i++) {
2739         for (j = 0; j < 2; j++) {
2740             va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_offset_l0[i][j]);
2741         }
2742         TRACE_NEWLINE();
2743     }
2744     va_TracePrint(trace_ctx, "\n");
2745 
2746     va_TraceMsg(trace_ctx, "\tnum_l1_weights = %d\n", p->WPInfo.num_l1_weights);
2747     va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag[15]=\n");
2748     for (i = 0; i < 15; i++) {
2749         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_weight_l1_flag[i]);
2750         if ((i + 1) % 8 == 0)
2751             TRACE_NEWLINE();
2752     }
2753     va_TracePrint(trace_ctx, "\n");
2754 
2755     va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag[15]=\n");
2756     for (i = 0; i < 15; i++) {
2757         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.chroma_weight_l1_flag[i]);
2758         if ((i + 1) % 8 == 0)
2759             TRACE_NEWLINE();
2760     }
2761     va_TracePrint(trace_ctx, "\n");
2762 
2763     va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l1[15]=\n");
2764     for (i = 0; i < 15; i++) {
2765         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.delta_luma_weight_l1[i]);
2766         if ((i + 1) % 8 == 0)
2767             TRACE_NEWLINE();
2768     }
2769     va_TracePrint(trace_ctx, "\n");
2770 
2771     va_TraceMsg(trace_ctx, "\tluma_offset_l1[15]=\n");
2772     for (i = 0; i < 15; i++) {
2773         va_TraceMsg(trace_ctx, "\t%d", p->WPInfo.luma_offset_l1[i]);
2774         if ((i + 1) % 8 == 0)
2775             TRACE_NEWLINE();
2776     }
2777     va_TracePrint(trace_ctx, "\n");
2778 
2779     va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[15][2] = \n");
2780     va_TraceMsg(trace_ctx, "");
2781     for (i = 0; i < 15; i++) {
2782         for (j = 0; j < 2; j++) {
2783             va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_weight_l1[i][j]);
2784         }
2785         TRACE_NEWLINE();
2786     }
2787     va_TracePrint(trace_ctx, "\n");
2788 
2789     va_TraceMsg(trace_ctx, "\tdelta_chroma_offset_l1[15][2] = \n");
2790     va_TraceMsg(trace_ctx, "");
2791     for (i = 0; i < 15; i++) {
2792         for (j = 0; j < 2; j++) {
2793             va_TracePrint(trace_ctx, "\t%d", p->WPInfo.delta_chroma_offset_l1[i][j]);
2794         }
2795         TRACE_NEWLINE();
2796     }
2797     va_TracePrint(trace_ctx, "\n");
2798     va_TraceMsg(trace_ctx, "\treserved16b = %d\n", p->WPInfo.reserved16b);
2799     va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->WPInfo.reserved32b);
2800 
2801     va_TraceMsg(trace_ctx, "\tsh_flags = %d\n", p->sh_flags.value);
2802     va_TraceMsg(trace_ctx, "\tsh_alf_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_enabled_flag);
2803     va_TraceMsg(trace_ctx, "\tsh_alf_cb_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cb_enabled_flag);
2804     va_TraceMsg(trace_ctx, "\tsh_alf_cr_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cr_enabled_flag);
2805     va_TraceMsg(trace_ctx, "\tsh_alf_cc_cb_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cc_cb_enabled_flag);
2806     va_TraceMsg(trace_ctx, "\tsh_alf_cc_cr_enabled_flag = %d\n", p->sh_flags.bits.sh_alf_cc_cr_enabled_flag);
2807     va_TraceMsg(trace_ctx, "\tsh_lmcs_used_flag = %d\n", p->sh_flags.bits.sh_lmcs_used_flag);
2808     va_TraceMsg(trace_ctx, "\tsh_explicit_scaling_list_used_flag = %d\n", p->sh_flags.bits.sh_explicit_scaling_list_used_flag);
2809     va_TraceMsg(trace_ctx, "\tsh_cabac_init_flag = %d\n", p->sh_flags.bits.sh_cabac_init_flag);
2810     va_TraceMsg(trace_ctx, "\tsh_collocated_from_l0_flag = %d\n", p->sh_flags.bits.sh_collocated_from_l0_flag);
2811     va_TraceMsg(trace_ctx, "\tsh_cu_chroma_qp_offset_enabled_flag = %d\n", p->sh_flags.bits.sh_cu_chroma_qp_offset_enabled_flag);
2812     va_TraceMsg(trace_ctx, "\tsh_sao_luma_used_flag = %d\n", p->sh_flags.bits.sh_sao_luma_used_flag);
2813     va_TraceMsg(trace_ctx, "\tsh_sao_chroma_used_flag = %d\n", p->sh_flags.bits.sh_sao_chroma_used_flag);
2814     va_TraceMsg(trace_ctx, "\tsh_deblocking_filter_disabled_flag = %d\n", p->sh_flags.bits.sh_deblocking_filter_disabled_flag);
2815     va_TraceMsg(trace_ctx, "\tsh_dep_quant_used_flag = %d\n", p->sh_flags.bits.sh_dep_quant_used_flag);
2816     va_TraceMsg(trace_ctx, "\tsh_sign_data_hiding_used_flag = %d\n", p->sh_flags.bits.sh_sign_data_hiding_used_flag);
2817     va_TraceMsg(trace_ctx, "\tsh_ts_residual_coding_disabled_flag = %d\n", p->sh_flags.bits.sh_ts_residual_coding_disabled_flag);
2818     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->sh_flags.bits.reserved);
2819 
2820     va_TraceMsg(trace_ctx, NULL);
2821 }
2822 
va_TraceVAScalingListBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2823 static void va_TraceVAScalingListBufferVVC(
2824     VADisplay dpy,
2825     VAContextID context,
2826     VABufferID buffer,
2827     VABufferType type,
2828     unsigned int size,
2829     unsigned int num_elements,
2830     void* data)
2831 {
2832     int i, j, k;
2833     VAScalingListVVC* p = (VAScalingListVVC*)data;
2834 
2835     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2836 
2837     va_TraceMsg(trace_ctx, "\t--VAScalingListBufferVVC\n");
2838 
2839     va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
2840     va_TraceMsg(trace_ctx, "\treserved8b = %d\n", p->reserved8b);
2841     va_TraceMsg(trace_ctx, "\tScalingMatrixDCRec[14]=\n");
2842     for (i = 0; i < 14; i++) {
2843         va_TraceMsg(trace_ctx, "\t%d", p->ScalingMatrixDCRec[i]);
2844         if ((i + 1) % 8 == 0)
2845             TRACE_NEWLINE();
2846     }
2847     va_TracePrint(trace_ctx, "\n");
2848 
2849     va_TraceMsg(trace_ctx, "\tScalingMatrixRec2x2[2][2][2] = \n");
2850     va_TraceMsg(trace_ctx, "");
2851     for (i = 0; i < 2; i++) {
2852         for (j = 0; j < 2; j++) {
2853             for (k = 0; k < 2; k++) {
2854                 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec2x2[i][j][k]);
2855             }
2856             TRACE_NEWLINE();
2857         }
2858         TRACE_NEWLINE();
2859     }
2860     va_TracePrint(trace_ctx, "\n");
2861 
2862     va_TraceMsg(trace_ctx, "\tScalingMatrixRec4x4[6][4][4] = \n");
2863     va_TraceMsg(trace_ctx, "");
2864     for (i = 0; i < 6; i++) {
2865         for (j = 0; j < 4; j++) {
2866             for (k = 0; k < 4; k++) {
2867                 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec4x4[i][j][k]);
2868             }
2869             TRACE_NEWLINE();
2870         }
2871         TRACE_NEWLINE();
2872     }
2873     va_TracePrint(trace_ctx, "\n");
2874 
2875     va_TraceMsg(trace_ctx, "\tScalingMatrixRec8x8[20][8][8] = \n");
2876     va_TraceMsg(trace_ctx, "");
2877     for (i = 0; i < 20; i++) {
2878         for (j = 0; j < 8; j++) {
2879             for (k = 0; k < 8; k++) {
2880                 va_TracePrint(trace_ctx, "\t%d", p->ScalingMatrixRec8x8[i][j][k]);
2881             }
2882             TRACE_NEWLINE();
2883         }
2884         TRACE_NEWLINE();
2885     }
2886     va_TracePrint(trace_ctx, "\n");
2887 
2888     va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
2889     va_TraceMsg(trace_ctx, "");
2890     for (i = 0; i < 8; i++) {
2891         va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
2892     }
2893     va_TracePrint(trace_ctx, "\n");
2894 
2895     va_TraceMsg(trace_ctx, NULL);
2896 }
2897 
va_TraceVAAlfBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)2898 static void va_TraceVAAlfBufferVVC(
2899     VADisplay dpy,
2900     VAContextID context,
2901     VABufferID buffer,
2902     VABufferType type,
2903     unsigned int size,
2904     unsigned int num_elements,
2905     void* data)
2906 {
2907     int i, j;
2908     VAAlfDataVVC* p = (VAAlfDataVVC*)data;
2909 
2910     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
2911 
2912     va_TraceMsg(trace_ctx, "\t--VAAlfDataBufferVVC\n");
2913 
2914     va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
2915     va_TraceMsg(trace_ctx, "\talf_luma_num_filters_signalled_minus1 = %d\n", p->alf_luma_num_filters_signalled_minus1);
2916     va_TraceMsg(trace_ctx, "\talf_luma_coeff_delta_idx[25]=\n");
2917     for (i = 0; i < 25; i++) {
2918         va_TraceMsg(trace_ctx, "\t%d", p->alf_luma_coeff_delta_idx[i]);
2919         if ((i + 1) % 8 == 0)
2920             TRACE_NEWLINE();
2921     }
2922     va_TracePrint(trace_ctx, "\n");
2923 
2924     va_TraceMsg(trace_ctx, "\tfiltCoeff[25][12]=\n");
2925     va_TraceMsg(trace_ctx, "");
2926     for (i = 0; i < 25; i++) {
2927         for (j = 0; j < 12; j++) {
2928             va_TracePrint(trace_ctx, "\t%d", p->filtCoeff[i][j]);
2929             if ((j + 1) % 8 == 0)
2930                 TRACE_NEWLINE();
2931         }
2932         TRACE_NEWLINE();
2933     }
2934 
2935     va_TraceMsg(trace_ctx, "\talf_luma_clip_idx[25][12]=\n");
2936     va_TraceMsg(trace_ctx, "");
2937     for (i = 0; i < 25; i++) {
2938         for (j = 0; j < 12; j++) {
2939             va_TracePrint(trace_ctx, "\t%d", p->alf_luma_clip_idx[i][j]);
2940             if ((j + 1) % 8 == 0)
2941                 TRACE_NEWLINE();
2942         }
2943         TRACE_NEWLINE();
2944     }
2945 
2946     va_TraceMsg(trace_ctx, "\talf_chroma_num_alt_filters_minus1 = %d\n", p->alf_chroma_num_alt_filters_minus1);
2947     va_TraceMsg(trace_ctx, "\tAlfCoeffC[8][6]=\n");
2948     va_TraceMsg(trace_ctx, "");
2949     for (i = 0; i < 8; i++) {
2950         for (j = 0; j < 6; j++) {
2951             va_TracePrint(trace_ctx, "\t%d", p->AlfCoeffC[i][j]);
2952         }
2953         TRACE_NEWLINE();
2954     }
2955     va_TracePrint(trace_ctx, "\n");
2956 
2957     va_TraceMsg(trace_ctx, "\talf_chroma_clip_idx[8][6]=\n");
2958     va_TraceMsg(trace_ctx, "");
2959     for (i = 0; i < 8; i++) {
2960         for (j = 0; j < 6; j++) {
2961             va_TracePrint(trace_ctx, "\t%d", p->alf_chroma_clip_idx[i][j]);
2962         }
2963         TRACE_NEWLINE();
2964     }
2965     va_TracePrint(trace_ctx, "\n");
2966 
2967     va_TraceMsg(trace_ctx, "\talf_cc_cb_filters_signalled_minus1 = %d\n", p->alf_cc_cb_filters_signalled_minus1);
2968     va_TraceMsg(trace_ctx, "\tCcAlfApsCoeffCb[4][7]=\n");
2969     va_TraceMsg(trace_ctx, "");
2970     for (i = 0; i < 4; i++) {
2971         for (j = 0; j < 7; j++) {
2972             va_TracePrint(trace_ctx, "\t%d", p->CcAlfApsCoeffCb[i][j]);
2973         }
2974         TRACE_NEWLINE();
2975     }
2976     va_TracePrint(trace_ctx, "\n");
2977 
2978     va_TraceMsg(trace_ctx, "\talf_cc_cr_filters_signalled_minus1 = %d\n", p->alf_cc_cr_filters_signalled_minus1);
2979     va_TraceMsg(trace_ctx, "\tCcAlfApsCoeffCr[4][7]=\n");
2980     va_TraceMsg(trace_ctx, "");
2981     for (i = 0; i < 4; i++) {
2982         for (j = 0; j < 7; j++) {
2983             va_TracePrint(trace_ctx, "\t%d", p->CcAlfApsCoeffCr[i][j]);
2984         }
2985         TRACE_NEWLINE();
2986     }
2987     va_TracePrint(trace_ctx, "\n");
2988 
2989     va_TraceMsg(trace_ctx, "\treserved16b = %d\n", p->reserved16b);
2990     va_TraceMsg(trace_ctx, "\treserved32b = %d\n", p->reserved32b);
2991 
2992     va_TraceMsg(trace_ctx, "\talf_flags = %d\n", p->alf_flags.value);
2993     va_TraceMsg(trace_ctx, "\talf_luma_filter_signal_flag = %d\n", p->alf_flags.bits.alf_luma_filter_signal_flag);
2994     va_TraceMsg(trace_ctx, "\talf_chroma_filter_signal_flag = %d\n", p->alf_flags.bits.alf_chroma_filter_signal_flag);
2995     va_TraceMsg(trace_ctx, "\talf_cc_cb_filter_signal_flag = %d\n", p->alf_flags.bits.alf_cc_cb_filter_signal_flag);
2996     va_TraceMsg(trace_ctx, "\talf_cc_cr_filter_signal_flag = %d\n", p->alf_flags.bits.alf_cc_cr_filter_signal_flag);
2997     va_TraceMsg(trace_ctx, "\talf_luma_clip_flag = %d\n", p->alf_flags.bits.alf_luma_clip_flag);
2998     va_TraceMsg(trace_ctx, "\talf_chroma_clip_flag = %d\n", p->alf_flags.bits.alf_chroma_clip_flag);
2999     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->alf_flags.bits.reserved);
3000 
3001     va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
3002     va_TraceMsg(trace_ctx, "");
3003     for (i = 0; i < 8; i++) {
3004         va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3005     }
3006     va_TracePrint(trace_ctx, "\n");
3007 
3008     va_TraceMsg(trace_ctx, NULL);
3009 }
3010 
va_TraceVALmcsBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3011 static void va_TraceVALmcsBufferVVC(
3012     VADisplay dpy,
3013     VAContextID context,
3014     VABufferID buffer,
3015     VABufferType type,
3016     unsigned int size,
3017     unsigned int num_elements,
3018     void* data)
3019 {
3020     int i;
3021     VALmcsDataVVC* p = (VALmcsDataVVC*)data;
3022 
3023     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3024 
3025     va_TraceMsg(trace_ctx, "\t--VALmcsDataBufferVVC\n");
3026     va_TraceMsg(trace_ctx, "\taps_adaptation_parameter_set_id = %d\n", p->aps_adaptation_parameter_set_id);
3027     va_TraceMsg(trace_ctx, "\tlmcs_min_bin_idx = %d\n", p->lmcs_min_bin_idx);
3028     va_TraceMsg(trace_ctx, "\tlmcs_delta_max_bin_idx = %d\n", p->lmcs_delta_max_bin_idx);
3029 
3030     va_TraceMsg(trace_ctx, "\tlmcsDeltaCW[16]=\n");
3031     for (i = 0; i < 16; i++) {
3032         va_TraceMsg(trace_ctx, "\t%d", p->lmcsDeltaCW[i]);
3033         if ((i + 1) % 8 == 0)
3034             TRACE_NEWLINE();
3035     }
3036     va_TracePrint(trace_ctx, "\n");
3037 
3038     va_TraceMsg(trace_ctx, "\tlmcsDeltaCrs = %d\n", p->lmcsDeltaCrs);
3039     va_TraceMsg(trace_ctx, "\treserved8b[3]=\n");
3040     va_TraceMsg(trace_ctx, "");
3041     for (i = 0; i < 3; i++) {
3042         va_TracePrint(trace_ctx, "\t%d", p->reserved8b[i]);
3043     }
3044     va_TracePrint(trace_ctx, "\n");
3045 
3046     va_TraceMsg(trace_ctx, "\tva_reserved[8]=\n");
3047     va_TraceMsg(trace_ctx, "");
3048     for (i = 0; i < 8; i++) {
3049         va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3050     }
3051     va_TracePrint(trace_ctx, "\n");
3052 
3053     va_TraceMsg(trace_ctx, NULL);
3054 }
3055 
va_TraceVASubPicBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3056 static void va_TraceVASubPicBufferVVC(
3057     VADisplay dpy,
3058     VAContextID context,
3059     VABufferID buffer,
3060     VABufferType type,
3061     unsigned int size,
3062     unsigned int num_elements,
3063     void* data)
3064 {
3065     int i;
3066     VASubPicVVC* p = (VASubPicVVC*)data;
3067 
3068     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3069 
3070     va_TraceMsg(trace_ctx, "\t--VASubPicBufferVVC\n");
3071 
3072     va_TraceMsg(trace_ctx, "\tsps_subpic_ctu_top_left_x = %d\n", p->sps_subpic_ctu_top_left_x);
3073     va_TraceMsg(trace_ctx, "\tsps_subpic_ctu_top_left_y = %d\n", p->sps_subpic_ctu_top_left_y);
3074     va_TraceMsg(trace_ctx, "\tsps_subpic_width_minus1 = %d\n", p->sps_subpic_width_minus1);
3075     va_TraceMsg(trace_ctx, "\tsps_subpic_height_minus1 = %d\n", p->sps_subpic_height_minus1);
3076     va_TraceMsg(trace_ctx, "\tSubpicIdVal = %d\n", p->SubpicIdVal);
3077 
3078     va_TraceMsg(trace_ctx, "\tsubpic_flags = %d\n", p->subpic_flags.value);
3079     va_TraceMsg(trace_ctx, "\tsps_subpic_treated_as_pic_flag = %d\n", p->subpic_flags.bits.sps_subpic_treated_as_pic_flag);
3080     va_TraceMsg(trace_ctx, "\tsps_loop_filter_across_subpic_enabled_flag = %d\n", p->subpic_flags.bits.sps_loop_filter_across_subpic_enabled_flag);
3081     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->subpic_flags.bits.reserved);
3082 
3083     va_TraceMsg(trace_ctx, "\tva_reserved[4]=\n");
3084     va_TraceMsg(trace_ctx, "");
3085     for (i = 0; i < 4; i++) {
3086         va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3087     }
3088     va_TracePrint(trace_ctx, "\n");
3089 
3090     va_TraceMsg(trace_ctx, NULL);
3091 }
3092 
va_TraceVATileBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3093 static void va_TraceVATileBufferVVC(
3094     VADisplay dpy,
3095     VAContextID context,
3096     VABufferID buffer,
3097     VABufferType type,
3098     unsigned int size,
3099     unsigned int num_elements,
3100     void* data)
3101 {
3102     uint16_t* p = (uint16_t*)data;
3103 
3104     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3105 
3106     va_TraceMsg(trace_ctx, "\t--VATileBufferVVC\n");
3107     va_TraceMsg(trace_ctx, "\ttile_dimension = %d\n", *p);
3108 
3109     va_TraceMsg(trace_ctx, NULL);
3110 }
3111 
va_TraceVASliceStructBufferVVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3112 static void va_TraceVASliceStructBufferVVC(
3113     VADisplay dpy,
3114     VAContextID context,
3115     VABufferID buffer,
3116     VABufferType type,
3117     unsigned int size,
3118     unsigned int num_elements,
3119     void* data)
3120 {
3121     int i;
3122     VASliceStructVVC* p = (VASliceStructVVC*)data;
3123 
3124     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3125 
3126     va_TraceMsg(trace_ctx, "\t--VASliceStructBufferVVC\n");
3127     va_TraceMsg(trace_ctx, "\tSliceTopLeftTileIdx = %d\n", p->SliceTopLeftTileIdx);
3128     va_TraceMsg(trace_ctx, "\tpps_slice_width_in_tiles_minus1 = %d\n", p->pps_slice_width_in_tiles_minus1);
3129     va_TraceMsg(trace_ctx, "\tpps_slice_height_in_tiles_minus1 = %d\n", p->pps_slice_height_in_tiles_minus1);
3130     va_TraceMsg(trace_ctx, "\tpps_exp_slice_height_in_ctus_minus1 = %d\n", p->pps_exp_slice_height_in_ctus_minus1);
3131 
3132     va_TraceMsg(trace_ctx, "\tva_reserved[4]=\n");
3133     va_TraceMsg(trace_ctx, "");
3134     for (i = 0; i < 4; i++) {
3135         va_TracePrint(trace_ctx, "\t%d", p->va_reserved[i]);
3136     }
3137     va_TracePrint(trace_ctx, "\n");
3138 
3139     va_TraceMsg(trace_ctx, NULL);
3140 }
3141 
3142 
va_TraceIsRextProfile(VADisplay dpy,VAContextID context,bool * isRext)3143 static inline void va_TraceIsRextProfile(
3144     VADisplay dpy,
3145     VAContextID context,
3146     bool *isRext /* out */
3147 )
3148 {
3149     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3150 
3151     *isRext = (\
3152                trace_ctx->trace_profile == VAProfileHEVCMain12     || \
3153                trace_ctx->trace_profile == VAProfileHEVCMain422_10 || \
3154                trace_ctx->trace_profile == VAProfileHEVCMain422_12 || \
3155                trace_ctx->trace_profile == VAProfileHEVCMain444    || \
3156                trace_ctx->trace_profile == VAProfileHEVCMain444_10 || \
3157                trace_ctx->trace_profile == VAProfileHEVCMain444_12 || \
3158                trace_ctx->trace_profile == VAProfileHEVCSccMain    || \
3159                trace_ctx->trace_profile == VAProfileHEVCSccMain10  || \
3160                trace_ctx->trace_profile == VAProfileHEVCSccMain444 || \
3161                trace_ctx->trace_profile == VAProfileHEVCSccMain444_10 \
3162               );
3163 }
3164 
va_TraceIsSccProfile(VADisplay dpy,VAContextID context,bool * isScc)3165 static inline void va_TraceIsSccProfile(
3166     VADisplay dpy,
3167     VAContextID context,
3168     bool *isScc /* out */
3169 )
3170 {
3171     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3172 
3173     *isScc = (\
3174               trace_ctx->trace_profile == VAProfileHEVCSccMain    || \
3175               trace_ctx->trace_profile == VAProfileHEVCSccMain10  || \
3176               trace_ctx->trace_profile == VAProfileHEVCSccMain444 || \
3177               trace_ctx->trace_profile == VAProfileHEVCSccMain444_10 \
3178              );
3179 }
3180 
va_TraceVAPictureParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3181 static void va_TraceVAPictureParameterBufferHEVC(
3182     VADisplay dpy,
3183     VAContextID context,
3184     VABufferID buffer,
3185     VABufferType type,
3186     unsigned int size,
3187     unsigned int num_elements,
3188     void *data)
3189 {
3190     int i, j;
3191     bool isRext = false;
3192     bool isScc = false;
3193     VAPictureParameterBufferHEVC *p = NULL;
3194     VAPictureParameterBufferHEVCRext *pRext = NULL;
3195     VAPictureParameterBufferHEVCScc *pScc = NULL;
3196 
3197     va_TraceIsRextProfile(dpy, context, &isRext);
3198     va_TraceIsSccProfile(dpy, context, &isScc);
3199 
3200     if (isRext) {
3201         p = &((VAPictureParameterBufferHEVCExtension*)data)->base;
3202         pRext = &((VAPictureParameterBufferHEVCExtension*)data)->rext;
3203 
3204         if (isScc)
3205             pScc = &((VAPictureParameterBufferHEVCExtension*)data)->scc;
3206     } else
3207         p = (VAPictureParameterBufferHEVC*)data;
3208 
3209     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3210 
3211     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferHEVC\n");
3212 
3213     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
3214     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %d\n", p->CurrPic.pic_order_cnt);
3215     va_TraceMsg(trace_ctx, "\tCurrPic.flags = %d\n", p->CurrPic.flags);
3216 
3217     va_TraceMsg(trace_ctx, "\tReferenceFrames (picture_id-pic_order_cnt-flags):\n");
3218     for (i = 0; i < 15; i++) {
3219         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
3220             ((p->ReferenceFrames[i].flags & VA_PICTURE_HEVC_INVALID) == 0)) {
3221             va_TraceMsg(trace_ctx, "\t\t0x%08x-%08d-0x%08x\n",
3222                         p->ReferenceFrames[i].picture_id,
3223                         p->ReferenceFrames[i].pic_order_cnt,
3224                         p->ReferenceFrames[i].flags);
3225         } else
3226             va_TraceMsg(trace_ctx, "\t\tinv-inv-inv-inv-inv\n");
3227     }
3228     va_TraceMsg(trace_ctx, "\n");
3229 
3230     va_TraceMsg(trace_ctx, "\tpic_width_in_luma_samples = %d\n", p->pic_width_in_luma_samples);
3231     va_TraceMsg(trace_ctx, "\tpic_height_in_luma_samples = %d\n", p->pic_height_in_luma_samples);
3232     va_TraceMsg(trace_ctx, "\tpic_fields = %d\n", p->pic_fields.value);
3233 
3234     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->pic_fields.bits.chroma_format_idc);
3235     va_TraceMsg(trace_ctx, "\tseparate_colour_plane_flag = %d\n", p->pic_fields.bits.separate_colour_plane_flag);
3236     va_TraceMsg(trace_ctx, "\tpcm_enabled_flag = %d\n", p->pic_fields.bits.pcm_enabled_flag);
3237     va_TraceMsg(trace_ctx, "\tscaling_list_enabled_flag = %d\n", p->pic_fields.bits.scaling_list_enabled_flag);
3238     va_TraceMsg(trace_ctx, "\ttransform_skip_enabled_flag = %d\n", p->pic_fields.bits.transform_skip_enabled_flag);
3239     va_TraceMsg(trace_ctx, "\tamp_enabled_flag = %d\n", p->pic_fields.bits.amp_enabled_flag);
3240     va_TraceMsg(trace_ctx, "\tstrong_intra_smoothing_enabled_flag = %d\n", p->pic_fields.bits.strong_intra_smoothing_enabled_flag);
3241     va_TraceMsg(trace_ctx, "\tsign_data_hiding_enabled_flag = %d\n", p->pic_fields.bits.sign_data_hiding_enabled_flag);
3242     va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
3243     va_TraceMsg(trace_ctx, "\tcu_qp_delta_enabled_flag = %d\n", p->pic_fields.bits.cu_qp_delta_enabled_flag);
3244     va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
3245     va_TraceMsg(trace_ctx, "\tweighted_bipred_flag = %d\n", p->pic_fields.bits.weighted_bipred_flag);
3246     va_TraceMsg(trace_ctx, "\ttransquant_bypass_enabled_flag = %d\n", p->pic_fields.bits.transquant_bypass_enabled_flag);
3247     va_TraceMsg(trace_ctx, "\ttiles_enabled_flag = %d\n", p->pic_fields.bits.tiles_enabled_flag);
3248     va_TraceMsg(trace_ctx, "\tentropy_coding_sync_enabled_flag = %d\n", p->pic_fields.bits.entropy_coding_sync_enabled_flag);
3249     va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pic_fields.bits.pps_loop_filter_across_slices_enabled_flag);
3250     va_TraceMsg(trace_ctx, "\tloop_filter_across_tiles_enabled_flag = %d\n", p->pic_fields.bits.loop_filter_across_tiles_enabled_flag);
3251     va_TraceMsg(trace_ctx, "\tpcm_loop_filter_disabled_flag = %d\n", p->pic_fields.bits.pcm_loop_filter_disabled_flag);
3252     va_TraceMsg(trace_ctx, "\tNoPicReorderingFlag = %d\n", p->pic_fields.bits.NoPicReorderingFlag);
3253     va_TraceMsg(trace_ctx, "\tNoBiPredFlag = %d\n", p->pic_fields.bits.NoBiPredFlag);
3254     va_TraceMsg(trace_ctx, "\tReservedBits = %d\n", p->pic_fields.bits.ReservedBits);
3255 
3256     va_TraceMsg(trace_ctx, "\tsps_max_dec_pic_buffering_minus1 = %d\n", p->sps_max_dec_pic_buffering_minus1);
3257     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
3258     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
3259     va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_luma_minus1 = %d\n", p->pcm_sample_bit_depth_luma_minus1);
3260     va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_chroma_minus1 = %d\n", p->pcm_sample_bit_depth_chroma_minus1);
3261     va_TraceMsg(trace_ctx, "\tlog2_min_luma_coding_block_size_minus3 = %d\n", p->log2_min_luma_coding_block_size_minus3);
3262     va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_luma_coding_block_size = %d\n", p->log2_diff_max_min_luma_coding_block_size);
3263     va_TraceMsg(trace_ctx, "\tlog2_min_transform_block_size_minus2 = %d\n", p->log2_min_transform_block_size_minus2);
3264     va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_transform_block_size = %d\n", p->log2_diff_max_min_transform_block_size);
3265     va_TraceMsg(trace_ctx, "\tlog2_min_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_min_pcm_luma_coding_block_size_minus3);
3266     va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_pcm_luma_coding_block_size = %d\n", p->log2_diff_max_min_pcm_luma_coding_block_size);
3267     va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_intra = %d\n", p->max_transform_hierarchy_depth_intra);
3268     va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_inter = %d\n", p->max_transform_hierarchy_depth_inter);
3269     va_TraceMsg(trace_ctx, "\tinit_qp_minus26 = %d\n", p->init_qp_minus26);
3270     va_TraceMsg(trace_ctx, "\tdiff_cu_qp_delta_depth = %d\n", p->diff_cu_qp_delta_depth);
3271     va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
3272     va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
3273     va_TraceMsg(trace_ctx, "\tlog2_parallel_merge_level_minus2 = %d\n", p->log2_parallel_merge_level_minus2);
3274     va_TraceMsg(trace_ctx, "\tnum_tile_columns_minus1 = %d\n", p->num_tile_columns_minus1);
3275     va_TraceMsg(trace_ctx, "\tnum_tile_rows_minus1 = %d\n", p->num_tile_rows_minus1);
3276 
3277     va_TraceMsg(trace_ctx, "\tcolumn_width_minus1[19]=\n");
3278     va_TraceMsg(trace_ctx, "");
3279     for (i = 0; i < 19; i++) {
3280         va_TracePrint(trace_ctx, "\t%d", p->column_width_minus1[i]);
3281         if ((i + 1) % 8 == 0)
3282             TRACE_NEWLINE();
3283     }
3284     va_TracePrint(trace_ctx, "\n");
3285     va_TraceMsg(trace_ctx, "\trow_height_minus1[21]=\n");
3286     va_TraceMsg(trace_ctx, "");
3287     for (i = 0; i < 21; i++) {
3288         va_TracePrint(trace_ctx, "\t%d", p->row_height_minus1[i]);
3289         if ((i + 1) % 8 == 0)
3290             TRACE_NEWLINE();
3291     }
3292     va_TracePrint(trace_ctx, "\n");
3293 
3294     va_TraceMsg(trace_ctx, "\tslice_parsing_fields = %d\n", p->slice_parsing_fields.value);
3295     va_TraceMsg(trace_ctx, "\tlists_modification_present_flag = %d\n", p->slice_parsing_fields.bits.lists_modification_present_flag);
3296     va_TraceMsg(trace_ctx, "\tlong_term_ref_pics_present_flag = %d\n", p->slice_parsing_fields.bits.long_term_ref_pics_present_flag);
3297     va_TraceMsg(trace_ctx, "\tsps_temporal_mvp_enabled_flag = %d\n", p->slice_parsing_fields.bits.sps_temporal_mvp_enabled_flag);
3298     va_TraceMsg(trace_ctx, "\tcabac_init_present_flag = %d\n", p->slice_parsing_fields.bits.cabac_init_present_flag);
3299     va_TraceMsg(trace_ctx, "\toutput_flag_present_flag = %d\n", p->slice_parsing_fields.bits.output_flag_present_flag);
3300     va_TraceMsg(trace_ctx, "\tdependent_slice_segments_enabled_flag = %d\n", p->slice_parsing_fields.bits.dependent_slice_segments_enabled_flag);
3301     va_TraceMsg(trace_ctx, "\tpps_slice_chroma_qp_offsets_present_flag = %d\n", p->slice_parsing_fields.bits.pps_slice_chroma_qp_offsets_present_flag);
3302     va_TraceMsg(trace_ctx, "\tsample_adaptive_offset_enabled_flag = %d\n", p->slice_parsing_fields.bits.sample_adaptive_offset_enabled_flag);
3303     va_TraceMsg(trace_ctx, "\tdeblocking_filter_override_enabled_flag = %d\n", p->slice_parsing_fields.bits.deblocking_filter_override_enabled_flag);
3304     va_TraceMsg(trace_ctx, "\tpps_disable_deblocking_filter_flag = %d\n", p->slice_parsing_fields.bits.pps_disable_deblocking_filter_flag);
3305     va_TraceMsg(trace_ctx, "\tslice_segment_header_extension_present_flag = %d\n", p->slice_parsing_fields.bits.slice_segment_header_extension_present_flag);
3306     va_TraceMsg(trace_ctx, "\tRapPicFlag = %d\n", p->slice_parsing_fields.bits.RapPicFlag);
3307     va_TraceMsg(trace_ctx, "\tIdrPicFlag = %d\n", p->slice_parsing_fields.bits.IdrPicFlag);
3308     va_TraceMsg(trace_ctx, "\tIntraPicFlag = %d\n", p->slice_parsing_fields.bits.IntraPicFlag);
3309     va_TraceMsg(trace_ctx, "\tReservedBits = %d\n", p->slice_parsing_fields.bits.ReservedBits);
3310 
3311     va_TraceMsg(trace_ctx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->log2_max_pic_order_cnt_lsb_minus4);
3312     va_TraceMsg(trace_ctx, "\tnum_short_term_ref_pic_sets = %d\n", p->num_short_term_ref_pic_sets);
3313     va_TraceMsg(trace_ctx, "\tnum_long_term_ref_pic_sps = %d\n", p->num_long_term_ref_pic_sps);
3314     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_default_active_minus1 = %d\n", p->num_ref_idx_l0_default_active_minus1);
3315     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_default_active_minus1 = %d\n", p->num_ref_idx_l1_default_active_minus1);
3316     va_TraceMsg(trace_ctx, "\tpps_beta_offset_div2 = %d\n", p->pps_beta_offset_div2);
3317     va_TraceMsg(trace_ctx, "\tpps_tc_offset_div2 = %d\n", p->pps_tc_offset_div2);
3318     va_TraceMsg(trace_ctx, "\tnum_extra_slice_header_bits = %d\n", p->num_extra_slice_header_bits);
3319     va_TraceMsg(trace_ctx, "\tst_rps_bits = %d\n", p->st_rps_bits);
3320 
3321     if (isRext && pRext) {
3322         va_TraceMsg(trace_ctx, "\trange_extension_pic_fields = %d\n", pRext->range_extension_pic_fields.value);
3323         va_TraceMsg(trace_ctx, "\ttransform_skip_rotation_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.transform_skip_rotation_enabled_flag);
3324         va_TraceMsg(trace_ctx, "\ttransform_skip_context_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.transform_skip_context_enabled_flag);
3325         va_TraceMsg(trace_ctx, "\timplicit_rdpcm_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.implicit_rdpcm_enabled_flag);
3326         va_TraceMsg(trace_ctx, "\texplicit_rdpcm_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.explicit_rdpcm_enabled_flag);
3327         va_TraceMsg(trace_ctx, "\textended_precision_processing_flag = %d\n", pRext->range_extension_pic_fields.bits.extended_precision_processing_flag);
3328         va_TraceMsg(trace_ctx, "\tintra_smoothing_disabled_flag = %d\n", pRext->range_extension_pic_fields.bits.intra_smoothing_disabled_flag);
3329         va_TraceMsg(trace_ctx, "\thigh_precision_offsets_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.high_precision_offsets_enabled_flag);
3330         va_TraceMsg(trace_ctx, "\tpersistent_rice_adaptation_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.persistent_rice_adaptation_enabled_flag);
3331         va_TraceMsg(trace_ctx, "\tcabac_bypass_alignment_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.cabac_bypass_alignment_enabled_flag);
3332         va_TraceMsg(trace_ctx, "\tcross_component_prediction_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.cross_component_prediction_enabled_flag);
3333         va_TraceMsg(trace_ctx, "\tchroma_qp_offset_list_enabled_flag = %d\n", pRext->range_extension_pic_fields.bits.chroma_qp_offset_list_enabled_flag);
3334         va_TraceMsg(trace_ctx, "\treserved = %d\n", pRext->range_extension_pic_fields.bits.reserved);
3335 
3336         va_TraceMsg(trace_ctx, "\tdiff_cu_chroma_qp_offset_depth = %d\n", pRext->diff_cu_chroma_qp_offset_depth);
3337         va_TraceMsg(trace_ctx, "\tchroma_qp_offset_list_len_minus1 = %d\n", pRext->chroma_qp_offset_list_len_minus1);
3338         va_TraceMsg(trace_ctx, "\tlog2_sao_offset_scale_luma = %d\n", pRext->log2_sao_offset_scale_luma);
3339         va_TraceMsg(trace_ctx, "\tlog2_sao_offset_scale_chroma = %d\n", pRext->log2_sao_offset_scale_chroma);
3340         va_TraceMsg(trace_ctx, "\tlog2_max_transform_skip_block_size_minus2 = %d\n", pRext->log2_max_transform_skip_block_size_minus2);
3341 
3342         va_TraceMsg(trace_ctx, "\tcb_qp_offset_list[6] = \n");
3343         va_TraceMsg(trace_ctx, "");
3344         for (i = 0; i < 6; i++)
3345             va_TracePrint(trace_ctx, "\t%d", pRext->cb_qp_offset_list[i]);
3346         va_TracePrint(trace_ctx, "\n");
3347 
3348         va_TraceMsg(trace_ctx, "\tcr_qp_offset_list[] = \n");
3349         va_TraceMsg(trace_ctx, "");
3350         for (i = 0; i < 6; i++)
3351             va_TracePrint(trace_ctx, "\t%d", pRext->cr_qp_offset_list[i]);
3352         va_TracePrint(trace_ctx, "\n");
3353     }
3354 
3355     if (isScc && pScc) {
3356         va_TraceMsg(trace_ctx, "\tscreen_content_pic_fields = %d\n", pScc->screen_content_pic_fields.value);
3357         va_TraceMsg(trace_ctx, "\tpps_curr_pic_ref_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.pps_curr_pic_ref_enabled_flag);
3358         va_TraceMsg(trace_ctx, "\tpalette_mode_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.palette_mode_enabled_flag);
3359         va_TraceMsg(trace_ctx, "\tmotion_vector_resolution_control_idc = %d\n", pScc->screen_content_pic_fields.bits.motion_vector_resolution_control_idc);
3360         va_TraceMsg(trace_ctx, "\tintra_boundary_filtering_disabled_flag = %d\n", pScc->screen_content_pic_fields.bits.intra_boundary_filtering_disabled_flag);
3361         va_TraceMsg(trace_ctx, "\tresidual_adaptive_colour_transform_enabled_flag = %d\n", pScc->screen_content_pic_fields.bits.residual_adaptive_colour_transform_enabled_flag);
3362         va_TraceMsg(trace_ctx, "\tpps_slice_act_qp_offsets_present_flag = %d\n", pScc->screen_content_pic_fields.bits.pps_slice_act_qp_offsets_present_flag);
3363         va_TraceMsg(trace_ctx, "\treserved = %d\n", pScc->screen_content_pic_fields.bits.reserved);
3364 
3365         va_TraceMsg(trace_ctx, "\tpalette_max_size = %d\n", pScc->palette_max_size);
3366         va_TraceMsg(trace_ctx, "\tdelta_palette_max_predictor_size = %d\n", pScc->delta_palette_max_predictor_size);
3367         va_TraceMsg(trace_ctx, "\tpredictor_palette_size = %d\n", pScc->predictor_palette_size);
3368 
3369         va_TraceMsg(trace_ctx, "\tpredictor_palette_entries[3][128] = \n");
3370         va_TraceMsg(trace_ctx, "");
3371         for (i = 0; i < 3; i++) {
3372             for (j = 0; j < 128; j++) {
3373                 va_TracePrint(trace_ctx, "\t%d", pScc->predictor_palette_entries[i][j]);
3374                 if ((j + 1) % 8 == 0)
3375                     TRACE_NEWLINE();
3376             }
3377             TRACE_NEWLINE();
3378         }
3379         va_TracePrint(trace_ctx, "\n");
3380 
3381         va_TraceMsg(trace_ctx, "\tpps_act_y_qp_offset_plus5 = %d\n", pScc->pps_act_y_qp_offset_plus5);
3382         va_TraceMsg(trace_ctx, "\tpps_act_cb_qp_offset_plus5 = %d\n", pScc->pps_act_cb_qp_offset_plus5);
3383         va_TraceMsg(trace_ctx, "\tpps_act_cr_qp_offset_plus3 = %d\n", pScc->pps_act_cr_qp_offset_plus3);
3384     }
3385 
3386     return;
3387 }
3388 
va_TraceVASliceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3389 static void va_TraceVASliceParameterBufferHEVC(
3390     VADisplay dpy,
3391     VAContextID context,
3392     VABufferID buffer,
3393     VABufferType type,
3394     unsigned int size,
3395     unsigned int num_elements,
3396     void *data)
3397 {
3398     int i, j;
3399     bool isRext = false;
3400     VASliceParameterBufferHEVC* p = NULL;
3401     VASliceParameterBufferHEVCRext *pRext = NULL;
3402 
3403     va_TraceIsRextProfile(dpy, context, &isRext);
3404     if (isRext) {
3405         p = &((VASliceParameterBufferHEVCExtension*)data)->base;
3406         pRext = &((VASliceParameterBufferHEVCExtension*)data)->rext;
3407     } else
3408         p = (VASliceParameterBufferHEVC*)data;
3409 
3410     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3411 
3412     trace_ctx->trace_slice_no++;
3413     trace_ctx->trace_slice_size = p->slice_data_size;
3414 
3415     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferHEVC\n");
3416     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
3417     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
3418     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
3419     va_TraceMsg(trace_ctx, "\tslice_data_byte_offset = %d\n", p->slice_data_byte_offset);
3420     va_TraceMsg(trace_ctx, "\tslice_segment_address = %d\n", p->slice_segment_address);
3421 
3422     va_TraceMsg(trace_ctx, "\tRefPicList[2][15]=\n");
3423     va_TraceMsg(trace_ctx, "");
3424     for (i = 0; i < 2; i++) {
3425         for (j = 0; j < 15; j++) {
3426             va_TracePrint(trace_ctx, "\t%d", p->RefPicList[i][j]);
3427             if ((j + 1) % 8 == 0)
3428                 TRACE_NEWLINE();
3429         }
3430         TRACE_NEWLINE();
3431     }
3432 
3433     va_TracePrint(trace_ctx, "\tLongSliceFlags.value = %d\n", p->LongSliceFlags.value);
3434     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.LastSliceOfPic = %d\n", p->LongSliceFlags.fields.LastSliceOfPic);
3435     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.dependent_slice_segment_flag = %d\n", p->LongSliceFlags.fields.dependent_slice_segment_flag);
3436     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_type = %d\n", p->LongSliceFlags.fields.slice_type);
3437     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.color_plane_id = %d\n", p->LongSliceFlags.fields.color_plane_id);
3438     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_sao_luma_flag = %d\n", p->LongSliceFlags.fields.slice_sao_luma_flag);
3439     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_sao_chroma_flag = %d\n", p->LongSliceFlags.fields.slice_sao_chroma_flag);
3440     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.mvd_l1_zero_flag = %d\n", p->LongSliceFlags.fields.mvd_l1_zero_flag);
3441     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.cabac_init_flag = %d\n", p->LongSliceFlags.fields.cabac_init_flag);
3442     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_temporal_mvp_enabled_flag = %d\n", p->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag);
3443     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_deblocking_filter_disabled_flag = %d\n", p->LongSliceFlags.fields.slice_deblocking_filter_disabled_flag);
3444     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.collocated_from_l0_flag = %d\n", p->LongSliceFlags.fields.collocated_from_l0_flag);
3445     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.slice_loop_filter_across_slices_enabled_flag = %d\n", p->LongSliceFlags.fields.slice_loop_filter_across_slices_enabled_flag);
3446     va_TraceMsg(trace_ctx, "\tLongSliceFlags.fields.reserved = %d\n", p->LongSliceFlags.fields.reserved);
3447 
3448     va_TraceMsg(trace_ctx, "\tcollocated_ref_idx = %d\n", p->collocated_ref_idx);
3449 
3450     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3451     va_TraceMsg(trace_ctx, "\tslice_cb_qp_offset = %d\n", p->slice_cb_qp_offset);
3452     va_TraceMsg(trace_ctx, "\tslice_cr_qp_offset = %d\n", p->slice_cr_qp_offset);
3453     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3454     va_TraceMsg(trace_ctx, "\tslice_tc_offset_div2 = %d\n", p->slice_tc_offset_div2);
3455     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3456     va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->delta_chroma_log2_weight_denom);
3457 
3458     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3459     for (i = 0; i <=  p->num_ref_idx_l0_active_minus1; i++) {
3460         va_TraceMsg(trace_ctx, "\t% d ", p->delta_luma_weight_l0[i]);
3461         va_TracePrint(trace_ctx, "\t% d ", p->luma_offset_l0[i]);
3462         va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l0[i][0]);
3463         va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l0[i][1]);
3464         va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL0[i][0]);
3465         va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL0[i][1]);
3466         va_TracePrint(trace_ctx, "\n");
3467     }
3468 
3469     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3470     for (i = 0; i <=  p->num_ref_idx_l1_active_minus1; i++) {
3471         va_TraceMsg(trace_ctx, "\t% d ", p->delta_luma_weight_l1[i]);
3472         va_TracePrint(trace_ctx, "\t% d ", p->luma_offset_l1[i]);
3473         va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l1[i][0]);
3474         va_TracePrint(trace_ctx, "\t% d ", p->delta_chroma_weight_l1[i][1]);
3475         va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL1[i][0]);
3476         va_TracePrint(trace_ctx, "\t% d ", p->ChromaOffsetL1[i][1]);
3477         va_TracePrint(trace_ctx, "\n");
3478     }
3479 
3480     va_TraceMsg(trace_ctx, "\tfive_minus_max_num_merge_cand = %d\n", p->five_minus_max_num_merge_cand);
3481 
3482     va_TraceMsg(trace_ctx, "\tnum_entry_point_offsets = %d\n", p->num_entry_point_offsets);
3483     va_TraceMsg(trace_ctx, "\tentry_offset_to_subset_array = %d\n", p->entry_offset_to_subset_array);
3484     va_TraceMsg(trace_ctx, "\tslice_data_num_emu_prevn_bytes = %d\n", p->slice_data_num_emu_prevn_bytes);
3485 
3486     if (isRext && pRext) {
3487         va_TraceMsg(trace_ctx, "\tluma_offset_l0[15] = \n");
3488         va_TraceMsg(trace_ctx, "");
3489         for (i = 0; i < 15; i++) {
3490             va_TracePrint(trace_ctx, "\t%d", pRext->luma_offset_l0[i]);
3491             if ((i + 1) % 8 == 0)
3492                 TRACE_NEWLINE();
3493         }
3494         va_TracePrint(trace_ctx, "\n");
3495 
3496         va_TraceMsg(trace_ctx, "\tChromaOffsetL0[15][2] = \n");
3497         va_TraceMsg(trace_ctx, "");
3498         for (i = 0; i < 15; i++) {
3499             for (j = 0; j < 2; j++) {
3500                 va_TracePrint(trace_ctx, "\t%d", pRext->ChromaOffsetL0[i][j]);
3501             }
3502             TRACE_NEWLINE();
3503         }
3504         va_TracePrint(trace_ctx, "\n");
3505 
3506         va_TraceMsg(trace_ctx, "\tluma_offset_l1[15] = \n");
3507         va_TraceMsg(trace_ctx, "");
3508         for (i = 0; i < 15; i++) {
3509             va_TracePrint(trace_ctx, "\t%d", pRext->luma_offset_l1[i]);
3510             if ((i + 1) % 8 == 0)
3511                 TRACE_NEWLINE();
3512         }
3513         va_TracePrint(trace_ctx, "\n");
3514 
3515         va_TraceMsg(trace_ctx, "\tChromaOffsetL1[15][2] = \n");
3516         va_TraceMsg(trace_ctx, "");
3517         for (i = 0; i < 15; i++) {
3518             for (j = 0; j < 2; j++) {
3519                 va_TracePrint(trace_ctx, "\t%d", pRext->ChromaOffsetL1[i][j]);
3520             }
3521             TRACE_NEWLINE();
3522         }
3523         va_TracePrint(trace_ctx, "\n");
3524 
3525         va_TraceMsg(trace_ctx, "\tslice_ext_flags = %d\n", pRext->slice_ext_flags.value);
3526         va_TraceMsg(trace_ctx, "\tcu_chroma_qp_offset_enabled_flag = %d\n", pRext->slice_ext_flags.bits.cu_chroma_qp_offset_enabled_flag);
3527         va_TraceMsg(trace_ctx, "\tuse_integer_mv_flag = %d\n", pRext->slice_ext_flags.bits.use_integer_mv_flag);
3528         va_TraceMsg(trace_ctx, "\treserved = %d\n", pRext->slice_ext_flags.bits.reserved);
3529 
3530         va_TraceMsg(trace_ctx, "\tslice_act_y_qp_offset = %d\n", pRext->slice_act_y_qp_offset);
3531         va_TraceMsg(trace_ctx, "\tslice_act_cb_qp_offset = %d\n", pRext->slice_act_cb_qp_offset);
3532         va_TraceMsg(trace_ctx, "\tslice_act_cr_qp_offset = %d\n", pRext->slice_act_cr_qp_offset);
3533     }
3534 
3535     va_TraceMsg(trace_ctx, NULL);
3536 }
3537 
va_TraceVAIQMatrixBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3538 static void va_TraceVAIQMatrixBufferHEVC(
3539     VADisplay dpy,
3540     VAContextID context,
3541     VABufferID buffer,
3542     VABufferType type,
3543     unsigned int size,
3544     unsigned int num_elements,
3545     void *data
3546 )
3547 {
3548     int i, j;
3549     VAIQMatrixBufferHEVC* p = (VAIQMatrixBufferHEVC*)data;
3550 
3551     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3552 
3553     va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferHEVC\n");
3554 
3555     va_TraceMsg(trace_ctx, "\tScalingList4x4[6][16]=\n");
3556     va_TraceMsg(trace_ctx, "");
3557     for (i = 0; i < 6; i++) {
3558         for (j = 0; j < 16; j++) {
3559             va_TracePrint(trace_ctx, "\t%d\t", p->ScalingList4x4[i][j]);
3560             if ((j + 1) % 8 == 0)
3561                 TRACE_NEWLINE();
3562         }
3563     }
3564 
3565     va_TracePrint(trace_ctx, "\tScalingList8x8[6][64]=\n");
3566     va_TraceMsg(trace_ctx, "");
3567     for (i = 0; i < 6; i++) {
3568         for (j = 0; j < 64; j++) {
3569             va_TracePrint(trace_ctx, "\t%d", p->ScalingList8x8[i][j]);
3570             if ((j + 1) % 8 == 0)
3571                 TRACE_NEWLINE();
3572         }
3573     }
3574 
3575     va_TracePrint(trace_ctx, "\tScalingList16x16[6][64]=\n");
3576     va_TraceMsg(trace_ctx, "");
3577     for (i = 0; i < 6; i++) {
3578         for (j = 0; j < 64; j++) {
3579             va_TracePrint(trace_ctx, "\t%d", p->ScalingList16x16[i][j]);
3580             if ((j + 1) % 8 == 0)
3581                 TRACE_NEWLINE();
3582         }
3583     }
3584 
3585     va_TracePrint(trace_ctx, "\tScalingList32x32[2][64]=\n");
3586     va_TraceMsg(trace_ctx, "");
3587     for (i = 0; i < 2; i++) {
3588         for (j = 0; j < 64; j++) {
3589             va_TracePrint(trace_ctx, "\t%d", p->ScalingList32x32[i][j]);
3590             if ((j + 1) % 8 == 0)
3591                 TRACE_NEWLINE();
3592         }
3593     }
3594 
3595     va_TracePrint(trace_ctx, "\tScalingListDC16x16[6]=\n");
3596     va_TraceMsg(trace_ctx, "");
3597     for (j = 0; j < 6; j++) {
3598         va_TracePrint(trace_ctx, "\t%d", p->ScalingListDC16x16[j]);
3599     }
3600     va_TracePrint(trace_ctx, "\n");
3601     va_TraceMsg(trace_ctx, "\tScalingListDC32x32[2]=\n");
3602     va_TraceMsg(trace_ctx, "");
3603     for (j = 0; j < 2; j++) {
3604         va_TracePrint(trace_ctx, "\t%d", p->ScalingListDC32x32[j]);
3605     }
3606     va_TracePrint(trace_ctx, "\n");
3607 
3608     va_TraceMsg(trace_ctx, NULL);
3609 }
3610 
va_TraceVAEncSequenceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3611 static void va_TraceVAEncSequenceParameterBufferHEVC(
3612     VADisplay dpy,
3613     VAContextID context,
3614     VABufferID buffer,
3615     VABufferType type,
3616     unsigned int size,
3617     unsigned int num_elements,
3618     void *data)
3619 {
3620     VAEncSequenceParameterBufferHEVC *p = (VAEncSequenceParameterBufferHEVC *)data;
3621 
3622     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3623 
3624     if (!p)
3625         return;
3626 
3627     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferHEVC\n");
3628 
3629     va_TraceMsg(trace_ctx, "\tgeneral_profile_idc = %d\n", p->general_profile_idc);
3630     va_TraceMsg(trace_ctx, "\tgeneral_level_idc = %d\n", p->general_level_idc);
3631     va_TraceMsg(trace_ctx, "\tgeneral_tier_flag = %d\n", p->general_tier_flag);
3632     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
3633     va_TraceMsg(trace_ctx, "\tintra_idr_period = %d\n", p->intra_idr_period);
3634     va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
3635     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
3636     va_TraceMsg(trace_ctx, "\tpic_width_in_luma_samples = %d\n", p->pic_width_in_luma_samples);
3637     va_TraceMsg(trace_ctx, "\tpic_height_in_luma_samples = %d\n", p->pic_height_in_luma_samples);
3638     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
3639     va_TraceMsg(trace_ctx, "\tseparate_colour_plane_flag = %d\n", p->seq_fields.bits.separate_colour_plane_flag);
3640     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->seq_fields.bits.bit_depth_luma_minus8);
3641     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->seq_fields.bits.bit_depth_chroma_minus8);
3642     va_TraceMsg(trace_ctx, "\tscaling_list_enabled_flag = %d\n", p->seq_fields.bits.scaling_list_enabled_flag);
3643     va_TraceMsg(trace_ctx, "\tstrong_intra_smoothing_enabled_flag = %d\n", p->seq_fields.bits.strong_intra_smoothing_enabled_flag);
3644     va_TraceMsg(trace_ctx, "\tamp_enabled_flag = %d\n", p->seq_fields.bits.amp_enabled_flag);
3645     va_TraceMsg(trace_ctx, "\tsample_adaptive_offset_enabled_flag = %d\n", p->seq_fields.bits.sample_adaptive_offset_enabled_flag);
3646     va_TraceMsg(trace_ctx, "\tpcm_enabled_flag = %d\n", p->seq_fields.bits.pcm_enabled_flag);
3647     va_TraceMsg(trace_ctx, "\tpcm_loop_filter_disabled_flag = %d\n", p->seq_fields.bits.pcm_loop_filter_disabled_flag);
3648     va_TraceMsg(trace_ctx, "\tsps_temporal_mvp_enabled_flag = %d\n", p->seq_fields.bits.sps_temporal_mvp_enabled_flag);
3649     va_TraceMsg(trace_ctx, "\tlow_delay_seq = %d\n", p->seq_fields.bits.low_delay_seq);
3650     va_TraceMsg(trace_ctx, "\thierachical_flag = %d\n", p->seq_fields.bits.hierachical_flag);
3651     va_TraceMsg(trace_ctx, "\treserved_bits = %d\n", p->seq_fields.bits.reserved_bits);
3652     va_TraceMsg(trace_ctx, "\tlog2_min_luma_coding_block_size_minus3 = %d\n", p->log2_min_luma_coding_block_size_minus3);
3653     va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_luma_coding_block_size = %d\n", p->log2_diff_max_min_luma_coding_block_size);
3654     va_TraceMsg(trace_ctx, "\tlog2_min_transform_block_size_minus2 = %d\n", p->log2_min_transform_block_size_minus2);
3655     va_TraceMsg(trace_ctx, "\tlog2_diff_max_min_transform_block_size = %d\n", p->log2_diff_max_min_transform_block_size);
3656     va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_inter = %d\n", p->max_transform_hierarchy_depth_inter);
3657     va_TraceMsg(trace_ctx, "\tmax_transform_hierarchy_depth_intra = %d\n", p->max_transform_hierarchy_depth_intra);
3658     va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_luma_minus1 = %d\n", p->pcm_sample_bit_depth_luma_minus1);
3659     va_TraceMsg(trace_ctx, "\tpcm_sample_bit_depth_chroma_minus1 = %d\n", p->pcm_sample_bit_depth_chroma_minus1);
3660     va_TraceMsg(trace_ctx, "\tlog2_min_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_min_pcm_luma_coding_block_size_minus3);
3661     va_TraceMsg(trace_ctx, "\tlog2_max_pcm_luma_coding_block_size_minus3 = %d\n", p->log2_max_pcm_luma_coding_block_size_minus3);
3662     va_TraceMsg(trace_ctx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
3663     va_TraceMsg(trace_ctx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
3664     va_TraceMsg(trace_ctx, "\tneutral_chroma_indication_flag = %d\n", p->vui_fields.bits.neutral_chroma_indication_flag);
3665     va_TraceMsg(trace_ctx, "\tfield_seq_flag = %d\n", p->vui_fields.bits.field_seq_flag);
3666     va_TraceMsg(trace_ctx, "\tvui_timing_info_present_flag = %d\n", p->vui_fields.bits.vui_timing_info_present_flag);
3667     va_TraceMsg(trace_ctx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
3668     va_TraceMsg(trace_ctx, "\ttiles_fixed_structure_flag = %d\n", p->vui_fields.bits.tiles_fixed_structure_flag);
3669     va_TraceMsg(trace_ctx, "\tmotion_vectors_over_pic_boundaries_flag = %d\n", p->vui_fields.bits.motion_vectors_over_pic_boundaries_flag);
3670     va_TraceMsg(trace_ctx, "\trestricted_ref_pic_lists_flag = %d\n", p->vui_fields.bits.restricted_ref_pic_lists_flag);
3671     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
3672     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
3673     va_TraceMsg(trace_ctx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
3674     va_TraceMsg(trace_ctx, "\tsar_width = %d\n", p->sar_width);
3675     va_TraceMsg(trace_ctx, "\tsar_height = %d\n", p->sar_height);
3676     va_TraceMsg(trace_ctx, "\tvui_num_units_in_tick = %d\n", p->vui_num_units_in_tick);
3677     va_TraceMsg(trace_ctx, "\tvui_time_scale = %d\n", p->vui_time_scale);
3678     va_TraceMsg(trace_ctx, "\tmin_spatial_segmentation_idc = %d\n", p->min_spatial_segmentation_idc);
3679     va_TraceMsg(trace_ctx, "\tmax_bytes_per_pic_denom = %d\n", p->max_bytes_per_pic_denom);
3680     va_TraceMsg(trace_ctx, "\tmax_bits_per_min_cu_denom = %d\n", p->max_bits_per_min_cu_denom);
3681     va_TraceMsg(trace_ctx, "\tpalette_mode_enabled_flag = %d\n", p->scc_fields.bits.palette_mode_enabled_flag);
3682     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->scc_fields.bits.reserved);
3683 
3684     return;
3685 }
3686 
va_TraceVAEncPictureParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3687 static void va_TraceVAEncPictureParameterBufferHEVC(
3688     VADisplay dpy,
3689     VAContextID context,
3690     VABufferID buffer,
3691     VABufferType type,
3692     unsigned int size,
3693     unsigned int num_elements,
3694     void *data)
3695 {
3696     int i;
3697     VAEncPictureParameterBufferHEVC *p = (VAEncPictureParameterBufferHEVC *)data;
3698 
3699     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3700 
3701     if (!p)
3702         return;
3703 
3704     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferHEVC\n");
3705 
3706     va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.picture_id = 0x%08x\n", p->decoded_curr_pic.picture_id);
3707     va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.pic_order_cnt = %d\n", p->decoded_curr_pic.pic_order_cnt);
3708     va_TraceMsg(trace_ctx, "\tdecoded_curr_pic.flags = %d\n", p->decoded_curr_pic.flags);
3709 
3710     for (i = 0; i < 15; i ++) {
3711         va_TraceMsg(trace_ctx, "\treference_frames[%d].picture_id = 0x%08x\n", i, p->reference_frames[i].picture_id);
3712         va_TraceMsg(trace_ctx, "\treference_frames[%d].pic_order_cnt = %d\n", i, p->reference_frames[i].pic_order_cnt);
3713         va_TraceMsg(trace_ctx, "\treference_frames[%d].flags = %d\n", i, p->reference_frames[i].flags);
3714     }
3715 
3716     va_TraceMsg(trace_ctx, "\tcoded_buf = %d\n", p->coded_buf);
3717     va_TraceMsg(trace_ctx, "\tcollocated_ref_pic_index = %d\n", p->collocated_ref_pic_index);
3718     va_TraceMsg(trace_ctx, "\tlast_picture = %d\n", p->last_picture);
3719     va_TraceMsg(trace_ctx, "\tpic_init_qp = %d\n", p->pic_init_qp);
3720     va_TraceMsg(trace_ctx, "\tdiff_cu_qp_delta_depth = %d\n", p->diff_cu_qp_delta_depth);
3721     va_TraceMsg(trace_ctx, "\tpps_cb_qp_offset = %d\n", p->pps_cb_qp_offset);
3722     va_TraceMsg(trace_ctx, "\tpps_cr_qp_offset = %d\n", p->pps_cr_qp_offset);
3723     va_TraceMsg(trace_ctx, "\tnum_tile_columns_minus1 = %d\n", p->num_tile_columns_minus1);
3724     va_TraceMsg(trace_ctx, "\tnum_tile_rows_minus1 = %d\n", p->num_tile_rows_minus1);
3725 
3726     for (i = 0; i < 19; i ++) {
3727         va_TraceMsg(trace_ctx, "\tcolumn_width_minus1[%d] = %d\n", i, p->column_width_minus1[i]);
3728     }
3729 
3730     for (i = 0; i < 21; i ++) {
3731         va_TraceMsg(trace_ctx, "\trow_height_minus1[%d] = %d\n", i, p->row_height_minus1[i]);
3732     }
3733 
3734     va_TraceMsg(trace_ctx, "\tlog2_parallel_merge_level_minus2 = %d\n", p->log2_parallel_merge_level_minus2);
3735     va_TraceMsg(trace_ctx, "\tctu_max_bitsize_allowed = %d\n", p->ctu_max_bitsize_allowed);
3736     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_default_active_minus1 = %d\n", p->num_ref_idx_l0_default_active_minus1);
3737     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_default_active_minus1 = %d\n", p->num_ref_idx_l1_default_active_minus1);
3738     va_TraceMsg(trace_ctx, "\tslice_pic_parameter_set_id = %d\n", p->slice_pic_parameter_set_id);
3739     va_TraceMsg(trace_ctx, "\tnal_unit_type = %d\n", p->nal_unit_type);
3740     va_TraceMsg(trace_ctx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
3741     va_TraceMsg(trace_ctx, "\tcoding_type = %d\n", p->pic_fields.bits.coding_type);
3742     va_TraceMsg(trace_ctx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
3743     va_TraceMsg(trace_ctx, "\tdependent_slice_segments_enabled_flag = %d\n", p->pic_fields.bits.dependent_slice_segments_enabled_flag);
3744     va_TraceMsg(trace_ctx, "\tsign_data_hiding_enabled_flag = %d\n", p->pic_fields.bits.sign_data_hiding_enabled_flag);
3745     va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
3746     va_TraceMsg(trace_ctx, "\ttransform_skip_enabled_flag = %d\n", p->pic_fields.bits.transform_skip_enabled_flag);
3747     va_TraceMsg(trace_ctx, "\tcu_qp_delta_enabled_flag = %d\n", p->pic_fields.bits.cu_qp_delta_enabled_flag);
3748     va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
3749     va_TraceMsg(trace_ctx, "\tweighted_bipred_flag = %d\n", p->pic_fields.bits.weighted_bipred_flag);
3750     va_TraceMsg(trace_ctx, "\ttransquant_bypass_enabled_flag = %d\n", p->pic_fields.bits.transquant_bypass_enabled_flag);
3751     va_TraceMsg(trace_ctx, "\ttiles_enabled_flag = %d\n", p->pic_fields.bits.tiles_enabled_flag);
3752     va_TraceMsg(trace_ctx, "\tentropy_coding_sync_enabled_flag = %d\n", p->pic_fields.bits.entropy_coding_sync_enabled_flag);
3753     va_TraceMsg(trace_ctx, "\tloop_filter_across_tiles_enabled_flag = %d\n", p->pic_fields.bits.loop_filter_across_tiles_enabled_flag);
3754     va_TraceMsg(trace_ctx, "\tpps_loop_filter_across_slices_enabled_flag = %d\n", p->pic_fields.bits.pps_loop_filter_across_slices_enabled_flag);
3755     va_TraceMsg(trace_ctx, "\tscaling_list_data_present_flag = %d\n", p->pic_fields.bits.scaling_list_data_present_flag);
3756     va_TraceMsg(trace_ctx, "\tscreen_content_flag = %d\n", p->pic_fields.bits.screen_content_flag);
3757     va_TraceMsg(trace_ctx, "\tenable_gpu_weighted_prediction = %d\n", p->pic_fields.bits.enable_gpu_weighted_prediction);
3758     va_TraceMsg(trace_ctx, "\tno_output_of_prior_pics_flag = %d\n", p->pic_fields.bits.no_output_of_prior_pics_flag);
3759     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->pic_fields.bits.reserved);
3760     va_TraceMsg(trace_ctx, "\thierarchical_level_plus1 = %d\n", p->hierarchical_level_plus1);
3761     va_TraceMsg(trace_ctx, "\tva_byte_reserved = %d\n", p->va_byte_reserved);
3762     va_TraceMsg(trace_ctx, "\tpps_curr_pic_ref_enabled_flag = %d\n", p->scc_fields.bits.pps_curr_pic_ref_enabled_flag);
3763     va_TraceMsg(trace_ctx, "\treserved = %d\n", p->scc_fields.bits.reserved);
3764 
3765     return;
3766 }
3767 
va_TraceVAEncSliceParameterBufferHEVC(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3768 static void va_TraceVAEncSliceParameterBufferHEVC(
3769     VADisplay dpy,
3770     VAContextID context,
3771     VABufferID buffer,
3772     VABufferType type,
3773     unsigned int size,
3774     unsigned int num_elements,
3775     void *data)
3776 {
3777     int i;
3778     VAEncSliceParameterBufferHEVC *p = (VAEncSliceParameterBufferHEVC *)data;
3779 
3780     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3781 
3782     if (!p)
3783         return;
3784 
3785     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferHEVC\n");
3786 
3787     va_TraceMsg(trace_ctx, "\tslice_segment_address = %d\n", p->slice_segment_address);
3788     va_TraceMsg(trace_ctx, "\tnum_ctu_in_slice = %d\n", p->num_ctu_in_slice);
3789     va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
3790     va_TraceMsg(trace_ctx, "\tslice_pic_parameter_set_id = %d\n", p->slice_pic_parameter_set_id);
3791     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3792     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3793 
3794     for (i = 0; i < 15; i ++) {
3795         va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].picture_id = 0x%08x\n", i, p->ref_pic_list0[i].picture_id);
3796         va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].pic_order_cnt = %d\n", i, p->ref_pic_list0[i].pic_order_cnt);
3797         va_TraceMsg(trace_ctx, "\tref_pic_list0[%d].flags = %d\n", i, p->ref_pic_list0[i].flags);
3798         va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].picture_id = 0x%08x\n", i, p->ref_pic_list1[i].picture_id);
3799         va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].pic_order_cnt = %d\n", i, p->ref_pic_list1[i].pic_order_cnt);
3800         va_TraceMsg(trace_ctx, "\tref_pic_list1[%d].flags = %d\n", i, p->ref_pic_list1[i].flags);
3801     }
3802 
3803     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3804     va_TraceMsg(trace_ctx, "\tdelta_chroma_log2_weight_denom = %d\n", p->delta_chroma_log2_weight_denom);
3805 
3806     for (i = 0; i < 15; i ++) {
3807         va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l0[%d] = %d\n", i, p->delta_luma_weight_l0[i]);
3808         va_TraceMsg(trace_ctx, "\tdelta_luma_weight_l1[%d] = %d\n", i, p->delta_luma_weight_l1[i]);
3809     }
3810 
3811     for (i = 0; i < 15; i ++) {
3812         va_TraceMsg(trace_ctx, "\tluma_offset_l0[%d] = %d\n", i, p->luma_offset_l0[i]);
3813         va_TraceMsg(trace_ctx, "\tluma_offset_l1[%d] = %d\n", i, p->luma_offset_l1[i]);
3814     }
3815 
3816     for (i = 0; i < 15; i ++) {
3817         va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[%d][0] = %d\n", i, p->delta_chroma_weight_l0[i][0]);
3818         va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l0[%d][1] = %d\n", i, p->delta_chroma_weight_l0[i][1]);
3819         va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[%d][0] = %d\n", i, p->delta_chroma_weight_l1[i][0]);
3820         va_TraceMsg(trace_ctx, "\tdelta_chroma_weight_l1[%d][1] = %d\n", i, p->delta_chroma_weight_l1[i][1]);
3821     }
3822 
3823     for (i = 0; i < 15; i ++) {
3824         va_TraceMsg(trace_ctx, "\tchroma_offset_l0[%d][0] = %d\n", i, p->chroma_offset_l0[i][0]);
3825         va_TraceMsg(trace_ctx, "\tchroma_offset_l0[%d][1] = %d\n", i, p->chroma_offset_l0[i][1]);
3826         va_TraceMsg(trace_ctx, "\tchroma_offset_l1[%d][0] = %d\n", i, p->chroma_offset_l1[i][0]);
3827         va_TraceMsg(trace_ctx, "\tchroma_offset_l1[%d][1] = %d\n", i, p->chroma_offset_l1[i][1]);
3828     }
3829 
3830     va_TraceMsg(trace_ctx, "\tmax_num_merge_cand = %d\n", p->max_num_merge_cand);
3831     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3832     va_TraceMsg(trace_ctx, "\tslice_cb_qp_offset = %d\n", p->slice_cb_qp_offset);
3833     va_TraceMsg(trace_ctx, "\tslice_cr_qp_offset = %d\n", p->slice_cr_qp_offset);
3834     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3835     va_TraceMsg(trace_ctx, "\tslice_tc_offset_div2 = %d\n", p->slice_tc_offset_div2);
3836     va_TraceMsg(trace_ctx, "\tlast_slice_of_pic_flag = %d\n", p->slice_fields.bits.last_slice_of_pic_flag);
3837     va_TraceMsg(trace_ctx, "\tdependent_slice_segment_flag = %d\n", p->slice_fields.bits.dependent_slice_segment_flag);
3838     va_TraceMsg(trace_ctx, "\tcolour_plane_id = %d\n", p->slice_fields.bits.colour_plane_id);
3839     va_TraceMsg(trace_ctx, "\tslice_temporal_mvp_enabled_flag = %d\n", p->slice_fields.bits.slice_temporal_mvp_enabled_flag);
3840     va_TraceMsg(trace_ctx, "\tslice_sao_luma_flag = %d\n", p->slice_fields.bits.slice_sao_luma_flag);
3841     va_TraceMsg(trace_ctx, "\tslice_sao_chroma_flag = %d\n", p->slice_fields.bits.slice_sao_chroma_flag);
3842     va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", p->slice_fields.bits.num_ref_idx_active_override_flag);
3843     va_TraceMsg(trace_ctx, "\tmvd_l1_zero_flag = %d\n", p->slice_fields.bits.mvd_l1_zero_flag);
3844     va_TraceMsg(trace_ctx, "\tcabac_init_flag = %d\n", p->slice_fields.bits.cabac_init_flag);
3845     va_TraceMsg(trace_ctx, "\tslice_deblocking_filter_disabled_flag = %d\n", p->slice_fields.bits.slice_deblocking_filter_disabled_flag);
3846     va_TraceMsg(trace_ctx, "\tslice_loop_filter_across_slices_enabled_flag = %d\n", p->slice_fields.bits.slice_loop_filter_across_slices_enabled_flag);
3847     va_TraceMsg(trace_ctx, "\tcollocated_from_l0_flag = %d\n", p->slice_fields.bits.collocated_from_l0_flag);
3848 
3849     return;
3850 }
3851 
va_TraceVAPictureParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3852 static void va_TraceVAPictureParameterBufferH264(
3853     VADisplay dpy,
3854     VAContextID context,
3855     VABufferID buffer,
3856     VABufferType type,
3857     unsigned int size,
3858     unsigned int num_elements,
3859     void *data)
3860 {
3861     int i;
3862     VAPictureParameterBufferH264 *p = (VAPictureParameterBufferH264*)data;
3863 
3864     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3865 
3866     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferH264\n");
3867 
3868     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
3869     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %u\n", p->CurrPic.frame_idx);
3870     va_TraceMsg(trace_ctx, "\tCurrPic.flags = 0x%08x\n", p->CurrPic.flags);
3871     va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
3872     va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
3873 
3874     va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
3875     for (i = 0; i < 16; i++) {
3876         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
3877             ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
3878             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08u-0x%08x\n",
3879                         p->ReferenceFrames[i].TopFieldOrderCnt,
3880                         p->ReferenceFrames[i].BottomFieldOrderCnt,
3881                         p->ReferenceFrames[i].picture_id,
3882                         p->ReferenceFrames[i].frame_idx,
3883                         p->ReferenceFrames[i].flags);
3884         } else
3885             break;
3886     }
3887     va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs_minus1 = %d\n", p->picture_width_in_mbs_minus1);
3888     va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs_minus1 = %d\n", p->picture_height_in_mbs_minus1);
3889     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
3890     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
3891     va_TraceMsg(trace_ctx, "\tnum_ref_frames = %d\n", p->num_ref_frames);
3892     va_TraceMsg(trace_ctx, "\tseq fields = %d\n", p->seq_fields.value);
3893     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
3894     va_TraceMsg(trace_ctx, "\tresidual_colour_transform_flag = %d\n", p->seq_fields.bits.residual_colour_transform_flag);
3895     va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
3896     va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
3897     va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
3898     va_TraceMsg(trace_ctx, "\tMinLumaBiPredSize8x8 = %d\n", p->seq_fields.bits.MinLumaBiPredSize8x8);
3899     va_TraceMsg(trace_ctx, "\tpic_init_qp_minus26 = %d\n", p->pic_init_qp_minus26);
3900     va_TraceMsg(trace_ctx, "\tpic_init_qs_minus26 = %d\n", p->pic_init_qs_minus26);
3901     va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
3902     va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
3903     va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
3904     va_TraceFlagIfNotZero(trace_ctx, "\t\tentropy_coding_mode_flag", p->pic_fields.bits.entropy_coding_mode_flag);
3905     va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_pred_flag", p->pic_fields.bits.weighted_pred_flag);
3906     va_TraceFlagIfNotZero(trace_ctx, "\t\tweighted_bipred_idc", p->pic_fields.bits.weighted_bipred_idc);
3907     va_TraceFlagIfNotZero(trace_ctx, "\t\ttransform_8x8_mode_flag", p->pic_fields.bits.transform_8x8_mode_flag);
3908     va_TraceFlagIfNotZero(trace_ctx, "\t\tfield_pic_flag", p->pic_fields.bits.field_pic_flag);
3909     va_TraceFlagIfNotZero(trace_ctx, "\t\tconstrained_intra_pred_flag", p->pic_fields.bits.constrained_intra_pred_flag);
3910     va_TraceFlagIfNotZero(trace_ctx, "\t\tpic_order_present_flag", p->pic_fields.bits.pic_order_present_flag);
3911     va_TraceFlagIfNotZero(trace_ctx, "\t\tdeblocking_filter_control_present_flag", p->pic_fields.bits.deblocking_filter_control_present_flag);
3912     va_TraceFlagIfNotZero(trace_ctx, "\t\tredundant_pic_cnt_present_flag", p->pic_fields.bits.redundant_pic_cnt_present_flag);
3913     va_TraceFlagIfNotZero(trace_ctx, "\t\treference_pic_flag", p->pic_fields.bits.reference_pic_flag);
3914     va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
3915     va_TraceMsg(trace_ctx, NULL);
3916 
3917     return;
3918 }
3919 
va_TraceVASliceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)3920 static void va_TraceVASliceParameterBufferH264(
3921     VADisplay dpy,
3922     VAContextID context,
3923     VABufferID buffer,
3924     VABufferType type,
3925     unsigned int size,
3926     unsigned int num_elements,
3927     void *data)
3928 {
3929     int i;
3930     VASliceParameterBufferH264* p = (VASliceParameterBufferH264*)data;
3931     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
3932 
3933     trace_ctx->trace_slice_no++;
3934     trace_ctx->trace_slice_size = p->slice_data_size;
3935 
3936     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferH264\n");
3937     va_TraceMsg(trace_ctx, "\tslice_data_size = %u\n", p->slice_data_size);
3938     va_TraceMsg(trace_ctx, "\tslice_data_offset = %u\n", p->slice_data_offset);
3939     va_TraceMsg(trace_ctx, "\tslice_data_flag = 0x%08x\n", p->slice_data_flag);
3940     va_TraceMsg(trace_ctx, "\tslice_data_bit_offset = %d\n", p->slice_data_bit_offset);
3941     va_TraceMsg(trace_ctx, "\tfirst_mb_in_slice = %d\n", p->first_mb_in_slice);
3942     va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
3943     va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
3944     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
3945     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
3946     va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
3947     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
3948     va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
3949     va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
3950     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
3951 
3952     va_TraceMsg(trace_ctx, "\tRefPicList0 =\n");
3953     for (i = 0; i < 32; i++) {
3954         if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
3955             ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
3956             va_TraceMsg(trace_ctx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList0[i].TopFieldOrderCnt, p->RefPicList0[i].BottomFieldOrderCnt, p->RefPicList0[i].picture_id, p->RefPicList0[i].frame_idx,  p->RefPicList0[i].flags);
3957         else
3958             break;
3959     }
3960     va_TraceMsg(trace_ctx, "\tRefPicList1 =\n");
3961     for (i = 0; i < 32; i++) {
3962         if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
3963             ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
3964             va_TraceMsg(trace_ctx, "%08d-%08d-0x%08x-%08d-0x%08x\n", p->RefPicList1[i].TopFieldOrderCnt, p->RefPicList1[i].BottomFieldOrderCnt, p->RefPicList1[i].picture_id, p->RefPicList1[i].frame_idx, p->RefPicList1[i].flags);
3965         else
3966             break;
3967     }
3968 
3969     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
3970     va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
3971     va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
3972 
3973     for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
3974         va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
3975                     p->luma_weight_l0[i],
3976                     p->luma_offset_l0[i]);
3977     }
3978 
3979 
3980     va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
3981 
3982     for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
3983         va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
3984                     p->chroma_weight_l0[i][0],
3985                     p->chroma_offset_l0[i][0],
3986                     p->chroma_weight_l0[i][1],
3987                     p->chroma_offset_l0[i][1]);
3988     }
3989 
3990 
3991     va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
3992 
3993     for (i = 0; (i <=  p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
3994         va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
3995                     p->luma_weight_l1[i],
3996                     p->luma_offset_l1[i]);
3997     }
3998 
3999 
4000     va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
4001 
4002     for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4003         va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4004                     p->chroma_weight_l1[i][0],
4005                     p->chroma_offset_l1[i][0],
4006                     p->chroma_weight_l1[i][1],
4007                     p->chroma_offset_l1[i][1]);
4008 
4009     }
4010     va_TraceMsg(trace_ctx, NULL);
4011 }
4012 
va_TraceVAIQMatrixBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4013 static void va_TraceVAIQMatrixBufferH264(
4014     VADisplay dpy,
4015     VAContextID context,
4016     VABufferID buffer,
4017     VABufferType type,
4018     unsigned int size,
4019     unsigned int num_elements,
4020     void *data
4021 )
4022 {
4023     int i, j;
4024     VAIQMatrixBufferH264* p = (VAIQMatrixBufferH264*)data;
4025     FILE *fp = NULL;
4026 
4027     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4028 
4029     if (trace_ctx->plog_file)
4030         fp = trace_ctx->plog_file->fp_log;
4031 
4032     va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferH264\n");
4033 
4034     va_TraceMsg(trace_ctx, "\tScalingList4x4[6][16]=\n");
4035     for (i = 0; i < 6; i++) {
4036         for (j = 0; j < 16; j++) {
4037             if (fp) {
4038                 fprintf(fp, "\t%d", p->ScalingList4x4[i][j]);
4039                 if ((j + 1) % 8 == 0)
4040                     fprintf(fp, "\n");
4041             }
4042         }
4043     }
4044 
4045     va_TraceMsg(trace_ctx, "\tScalingList8x8[2][64]=\n");
4046     for (i = 0; i < 2; i++) {
4047         for (j = 0; j < 64; j++) {
4048             if (fp) {
4049                 fprintf(fp, "\t%d", p->ScalingList8x8[i][j]);
4050                 if ((j + 1) % 8 == 0)
4051                     fprintf(fp, "\n");
4052             }
4053         }
4054     }
4055 
4056     va_TraceMsg(trace_ctx, NULL);
4057 }
4058 
4059 
4060 
va_TraceVAEncSequenceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4061 static void va_TraceVAEncSequenceParameterBufferH264(
4062     VADisplay dpy,
4063     VAContextID context,
4064     VABufferID buffer,
4065     VABufferType type,
4066     unsigned int size,
4067     unsigned int num_elements,
4068     void *data)
4069 {
4070     VAEncSequenceParameterBufferH264 *p = (VAEncSequenceParameterBufferH264 *)data;
4071     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4072     unsigned int i;
4073 
4074     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH264\n");
4075 
4076     va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
4077     va_TraceMsg(trace_ctx, "\tlevel_idc = %d\n", p->level_idc);
4078     va_TraceMsg(trace_ctx, "\tintra_period = %u\n", p->intra_period);
4079     va_TraceMsg(trace_ctx, "\tintra_idr_period = %u\n", p->intra_idr_period);
4080     va_TraceMsg(trace_ctx, "\tip_period = %u\n", p->ip_period);
4081     va_TraceMsg(trace_ctx, "\tbits_per_second = %u\n", p->bits_per_second);
4082     va_TraceMsg(trace_ctx, "\tmax_num_ref_frames = %u\n", p->max_num_ref_frames);
4083     va_TraceMsg(trace_ctx, "\tpicture_width_in_mbs = %d\n", p->picture_width_in_mbs);
4084     va_TraceMsg(trace_ctx, "\tpicture_height_in_mbs = %d\n", p->picture_height_in_mbs);
4085     va_TraceMsg(trace_ctx, "\tchroma_format_idc = %d\n", p->seq_fields.bits.chroma_format_idc);
4086     va_TraceMsg(trace_ctx, "\tframe_mbs_only_flag = %d\n", p->seq_fields.bits.frame_mbs_only_flag);
4087     va_TraceMsg(trace_ctx, "\tmb_adaptive_frame_field_flag = %d\n", p->seq_fields.bits.mb_adaptive_frame_field_flag);
4088     va_TraceMsg(trace_ctx, "\tseq_scaling_matrix_present_flag = %d\n", p->seq_fields.bits.seq_scaling_matrix_present_flag);
4089     va_TraceMsg(trace_ctx, "\tdirect_8x8_inference_flag = %d\n", p->seq_fields.bits.direct_8x8_inference_flag);
4090     va_TraceMsg(trace_ctx, "\tlog2_max_frame_num_minus4 = %d\n", p->seq_fields.bits.log2_max_frame_num_minus4);
4091     va_TraceMsg(trace_ctx, "\tpic_order_cnt_type = %d\n", p->seq_fields.bits.pic_order_cnt_type);
4092     va_TraceMsg(trace_ctx, "\tlog2_max_pic_order_cnt_lsb_minus4 = %d\n", p->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4);
4093     va_TraceMsg(trace_ctx, "\tdelta_pic_order_always_zero_flag = %d\n", p->seq_fields.bits.delta_pic_order_always_zero_flag);
4094     va_TraceMsg(trace_ctx, "\tbit_depth_luma_minus8 = %d\n", p->bit_depth_luma_minus8);
4095     va_TraceMsg(trace_ctx, "\tbit_depth_chroma_minus8 = %d\n", p->bit_depth_chroma_minus8);
4096     va_TraceMsg(trace_ctx, "\tnum_ref_frames_in_pic_order_cnt_cycle = %d\n", p->num_ref_frames_in_pic_order_cnt_cycle);
4097     va_TraceMsg(trace_ctx, "\toffset_for_non_ref_pic = %d\n", p->offset_for_non_ref_pic);
4098     va_TraceMsg(trace_ctx, "\toffset_for_top_to_bottom_field = %d\n", p->offset_for_top_to_bottom_field);
4099     for (i = 0; (i < p->max_num_ref_frames) && (i < 32); ++i)
4100         va_TraceMsg(trace_ctx, "\toffset_for_ref_frame[%d] = %d\n", i, p->offset_for_ref_frame[i]);
4101     va_TraceMsg(trace_ctx, "\tframe_cropping_flag = %d\n", p->frame_cropping_flag);
4102     va_TraceMsg(trace_ctx, "\tframe_crop_left_offset = %u\n", p->frame_crop_left_offset);
4103     va_TraceMsg(trace_ctx, "\tframe_crop_right_offset = %u\n", p->frame_crop_right_offset);
4104     va_TraceMsg(trace_ctx, "\tframe_crop_top_offset = %u\n", p->frame_crop_top_offset);
4105     va_TraceMsg(trace_ctx, "\tframe_crop_bottom_offset = %u\n", p->frame_crop_bottom_offset);
4106     va_TraceMsg(trace_ctx, "\tvui_parameters_present_flag = %d\n", p->vui_parameters_present_flag);
4107     va_TraceMsg(trace_ctx, "\taspect_ratio_info_present_flag = %d\n", p->vui_fields.bits.aspect_ratio_info_present_flag);
4108     va_TraceMsg(trace_ctx, "\ttiming_info_present_flag = %d\n", p->vui_fields.bits.timing_info_present_flag);
4109     va_TraceMsg(trace_ctx, "\tbitstream_restriction_flag = %d\n", p->vui_fields.bits.bitstream_restriction_flag);
4110     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_horizontal = %d\n", p->vui_fields.bits.log2_max_mv_length_horizontal);
4111     va_TraceMsg(trace_ctx, "\tlog2_max_mv_length_vertical = %d\n", p->vui_fields.bits.log2_max_mv_length_vertical);
4112     va_TraceMsg(trace_ctx, "\taspect_ratio_idc = %d\n", p->aspect_ratio_idc);
4113     va_TraceMsg(trace_ctx, "\tsar_width = %u\n", p->sar_width);
4114     va_TraceMsg(trace_ctx, "\tsar_height = %u\n", p->sar_height);
4115     va_TraceMsg(trace_ctx, "\tnum_units_in_tick = %u\n", p->num_units_in_tick);
4116     va_TraceMsg(trace_ctx, "\ttime_scale = %u\n", p->time_scale);
4117 
4118     va_TraceMsg(trace_ctx, NULL);
4119 
4120     return;
4121 }
4122 
4123 
va_TraceVAEncPictureParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4124 static void va_TraceVAEncPictureParameterBufferH264(
4125     VADisplay dpy,
4126     VAContextID context,
4127     VABufferID buffer,
4128     VABufferType type,
4129     unsigned int size,
4130     unsigned int num_elements,
4131     void *data)
4132 {
4133     VAEncPictureParameterBufferH264 *p = (VAEncPictureParameterBufferH264 *)data;
4134     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4135     int i;
4136 
4137     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH264\n");
4138 
4139     va_TraceMsg(trace_ctx, "\tCurrPic.picture_id = 0x%08x\n", p->CurrPic.picture_id);
4140     va_TraceMsg(trace_ctx, "\tCurrPic.frame_idx = %u\n", p->CurrPic.frame_idx);
4141     va_TraceMsg(trace_ctx, "\tCurrPic.flags = 0x%08x\n", p->CurrPic.flags);
4142     va_TraceMsg(trace_ctx, "\tCurrPic.TopFieldOrderCnt = %d\n", p->CurrPic.TopFieldOrderCnt);
4143     va_TraceMsg(trace_ctx, "\tCurrPic.BottomFieldOrderCnt = %d\n", p->CurrPic.BottomFieldOrderCnt);
4144     va_TraceMsg(trace_ctx, "\tReferenceFrames (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4145     for (i = 0; i < 16; i++) {
4146         if ((p->ReferenceFrames[i].picture_id != VA_INVALID_SURFACE) &&
4147             ((p->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID) == 0)) {
4148             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08u-0x%08x\n",
4149                         p->ReferenceFrames[i].TopFieldOrderCnt,
4150                         p->ReferenceFrames[i].BottomFieldOrderCnt,
4151                         p->ReferenceFrames[i].picture_id,
4152                         p->ReferenceFrames[i].frame_idx,
4153                         p->ReferenceFrames[i].flags
4154                        );
4155         } else
4156             break;
4157     }
4158     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
4159     va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
4160     va_TraceMsg(trace_ctx, "\tseq_parameter_set_id = %d\n", p->seq_parameter_set_id);
4161     va_TraceMsg(trace_ctx, "\tlast_picture = 0x%08x\n", p->last_picture);
4162     va_TraceMsg(trace_ctx, "\tframe_num = %d\n", p->frame_num);
4163     va_TraceMsg(trace_ctx, "\tpic_init_qp = %d\n", p->pic_init_qp);
4164     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
4165     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
4166     va_TraceMsg(trace_ctx, "\tchroma_qp_index_offset = %d\n", p->chroma_qp_index_offset);
4167     va_TraceMsg(trace_ctx, "\tsecond_chroma_qp_index_offset = %d\n", p->second_chroma_qp_index_offset);
4168     va_TraceMsg(trace_ctx, "\tpic_fields = 0x%03x\n", p->pic_fields.value);
4169     va_TraceMsg(trace_ctx, "\tidr_pic_flag = %d\n", p->pic_fields.bits.idr_pic_flag);
4170     va_TraceMsg(trace_ctx, "\treference_pic_flag = %d\n", p->pic_fields.bits.reference_pic_flag);
4171     va_TraceMsg(trace_ctx, "\tentropy_coding_mode_flag = %d\n", p->pic_fields.bits.entropy_coding_mode_flag);
4172     va_TraceMsg(trace_ctx, "\tweighted_pred_flag = %d\n", p->pic_fields.bits.weighted_pred_flag);
4173     va_TraceMsg(trace_ctx, "\tweighted_bipred_idc = %d\n", p->pic_fields.bits.weighted_bipred_idc);
4174     va_TraceMsg(trace_ctx, "\tconstrained_intra_pred_flag = %d\n", p->pic_fields.bits.constrained_intra_pred_flag);
4175     va_TraceMsg(trace_ctx, "\ttransform_8x8_mode_flag = %d\n", p->pic_fields.bits.transform_8x8_mode_flag);
4176     va_TraceMsg(trace_ctx, "\tdeblocking_filter_control_present_flag = %d\n", p->pic_fields.bits.deblocking_filter_control_present_flag);
4177     va_TraceMsg(trace_ctx, "\tredundant_pic_cnt_present_flag = %d\n", p->pic_fields.bits.redundant_pic_cnt_present_flag);
4178     va_TraceMsg(trace_ctx, "\tpic_order_present_flag = %d\n", p->pic_fields.bits.pic_order_present_flag);
4179     va_TraceMsg(trace_ctx, "\tpic_scaling_matrix_present_flag = %d\n", p->pic_fields.bits.pic_scaling_matrix_present_flag);
4180 
4181     va_TraceMsg(trace_ctx, NULL);
4182 
4183     return;
4184 }
4185 
va_TraceVAEncSliceParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4186 static void va_TraceVAEncSliceParameterBuffer(
4187     VADisplay dpy,
4188     VAContextID context,
4189     VABufferID buffer,
4190     VABufferType type,
4191     unsigned int size,
4192     unsigned int num_elements,
4193     void *data)
4194 {
4195     VAEncSliceParameterBuffer* p = (VAEncSliceParameterBuffer*)data;
4196     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4197 
4198     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBuffer\n");
4199     va_TraceMsg(trace_ctx, "\tstart_row_number = %d\n", p->start_row_number);
4200     va_TraceMsg(trace_ctx, "\tslice_height = %d\n", p->slice_height);
4201     va_TraceMsg(trace_ctx, "\tslice_flags.is_intra = %d\n", p->slice_flags.bits.is_intra);
4202     va_TraceMsg(trace_ctx, "\tslice_flags.disable_deblocking_filter_idc = %d\n", p->slice_flags.bits.disable_deblocking_filter_idc);
4203     va_TraceMsg(trace_ctx, "\tslice_flags.uses_long_term_ref = %d\n", p->slice_flags.bits.uses_long_term_ref);
4204     va_TraceMsg(trace_ctx, "\tslice_flags.is_long_term_ref = %d\n", p->slice_flags.bits.is_long_term_ref);
4205     va_TraceMsg(trace_ctx, NULL);
4206 
4207     return;
4208 }
4209 
va_TraceVAEncSliceParameterBufferH264(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4210 static void va_TraceVAEncSliceParameterBufferH264(
4211     VADisplay dpy,
4212     VAContextID context,
4213     VABufferID buffer,
4214     VABufferType type,
4215     unsigned int size,
4216     unsigned int num_elements,
4217     void *data)
4218 {
4219     VAEncSliceParameterBufferH264* p = (VAEncSliceParameterBufferH264*)data;
4220     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4221     int i;
4222 
4223     if (!p)
4224         return;
4225 
4226     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferH264\n");
4227     va_TraceMsg(trace_ctx, "\tmacroblock_address = %u\n", p->macroblock_address);
4228     va_TraceMsg(trace_ctx, "\tnum_macroblocks = %u\n", p->num_macroblocks);
4229     va_TraceMsg(trace_ctx, "\tmacroblock_info = %08x\n", p->macroblock_info);
4230     va_TraceMsg(trace_ctx, "\tslice_type = %d\n", p->slice_type);
4231     va_TraceMsg(trace_ctx, "\tpic_parameter_set_id = %d\n", p->pic_parameter_set_id);
4232     va_TraceMsg(trace_ctx, "\tidr_pic_id = %d\n", p->idr_pic_id);
4233     va_TraceMsg(trace_ctx, "\tpic_order_cnt_lsb = %d\n", p->pic_order_cnt_lsb);
4234     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt_bottom = %d\n", p->delta_pic_order_cnt_bottom);
4235     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[0] = %d\n", p->delta_pic_order_cnt[0]);
4236     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[1] = %d\n", p->delta_pic_order_cnt[1]);
4237     va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", p->direct_spatial_mv_pred_flag);
4238     va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", p->num_ref_idx_active_override_flag);
4239     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", p->num_ref_idx_l0_active_minus1);
4240     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", p->num_ref_idx_l1_active_minus1);
4241     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
4242 
4243     va_TraceMsg(trace_ctx, "\tRefPicList0 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4244 
4245 
4246 
4247     for (i = 0; i < 32; i++) {
4248         if ((p->RefPicList0[i].picture_id != VA_INVALID_SURFACE) &&
4249             ((p->RefPicList0[i].flags & VA_PICTURE_H264_INVALID) == 0))
4250             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08x\n",
4251                         p->RefPicList0[i].TopFieldOrderCnt,
4252                         p->RefPicList0[i].BottomFieldOrderCnt,
4253                         p->RefPicList0[i].picture_id,
4254                         p->RefPicList0[i].frame_idx,
4255                         p->RefPicList0[i].flags);
4256         else
4257             break;
4258     }
4259 
4260     va_TraceMsg(trace_ctx, "\tRefPicList1 (TopFieldOrderCnt-BottomFieldOrderCnt-picture_id-frame_idx-flags):\n");
4261     for (i = 0; i < 32; i++) {
4262         if ((p->RefPicList1[i].picture_id != VA_INVALID_SURFACE) &&
4263             ((p->RefPicList1[i].flags & VA_PICTURE_H264_INVALID) == 0))
4264             va_TraceMsg(trace_ctx, "\t\t%08d-%08d-0x%08x-%08d-0x%08d\n",
4265                         p->RefPicList1[i].TopFieldOrderCnt,
4266                         p->RefPicList1[i].BottomFieldOrderCnt,
4267                         p->RefPicList1[i].picture_id,
4268                         p->RefPicList1[i].frame_idx,
4269                         p->RefPicList1[i].flags
4270                        );
4271         else
4272             break;
4273     }
4274 
4275     va_TraceMsg(trace_ctx, "\tluma_log2_weight_denom = %d\n", p->luma_log2_weight_denom);
4276     va_TraceMsg(trace_ctx, "\tchroma_log2_weight_denom = %d\n", p->chroma_log2_weight_denom);
4277     va_TraceMsg(trace_ctx, "\tluma_weight_l0_flag = %d\n", p->luma_weight_l0_flag);
4278     if (p->luma_weight_l0_flag) {
4279         for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
4280             va_TraceMsg(trace_ctx, "\t\t%d\t%d\n",
4281                         p->luma_weight_l0[i],
4282                         p->luma_offset_l0[i]);
4283         }
4284     }
4285 
4286     va_TraceMsg(trace_ctx, "\tchroma_weight_l0_flag = %d\n", p->chroma_weight_l0_flag);
4287     if (p->chroma_weight_l0_flag) {
4288         for (i = 0; (i <= p->num_ref_idx_l0_active_minus1) && (i < 32); i++) {
4289             va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4290                         p->chroma_weight_l0[i][0],
4291                         p->chroma_offset_l0[i][0],
4292                         p->chroma_weight_l0[i][1],
4293                         p->chroma_offset_l0[i][1]);
4294         }
4295     }
4296 
4297     va_TraceMsg(trace_ctx, "\tluma_weight_l1_flag = %d\n", p->luma_weight_l1_flag);
4298     if (p->luma_weight_l1_flag) {
4299         for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4300             va_TraceMsg(trace_ctx, "\t\t%d\t\t%d\n",
4301                         p->luma_weight_l1[i],
4302                         p->luma_offset_l1[i]);
4303         }
4304     }
4305 
4306     va_TraceMsg(trace_ctx, "\tchroma_weight_l1_flag = %d\n", p->chroma_weight_l1_flag);
4307     if (p->chroma_weight_l1_flag && p->num_ref_idx_l1_active_minus1 < 32) {
4308         for (i = 0; (i <= p->num_ref_idx_l1_active_minus1) && (i < 32); i++) {
4309             va_TraceMsg(trace_ctx, "\t\t%d\t%d\t%d\t%d\n",
4310                         p->chroma_weight_l1[i][0],
4311                         p->chroma_offset_l1[i][0],
4312                         p->chroma_weight_l1[i][1],
4313                         p->chroma_offset_l1[i][1]);
4314         }
4315     }
4316     va_TraceMsg(trace_ctx, NULL);
4317 
4318     va_TraceMsg(trace_ctx, "\tcabac_init_idc = %d\n", p->cabac_init_idc);
4319     va_TraceMsg(trace_ctx, "\tslice_qp_delta = %d\n", p->slice_qp_delta);
4320     va_TraceMsg(trace_ctx, "\tdisable_deblocking_filter_idc = %d\n", p->disable_deblocking_filter_idc);
4321     va_TraceMsg(trace_ctx, "\tslice_alpha_c0_offset_div2 = %d\n", p->slice_alpha_c0_offset_div2);
4322     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", p->slice_beta_offset_div2);
4323     va_TraceMsg(trace_ctx, NULL);
4324 
4325     return;
4326 }
4327 
4328 
va_TraceVAEncPackedHeaderParameterBufferType(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4329 static void va_TraceVAEncPackedHeaderParameterBufferType(
4330     VADisplay dpy,
4331     VAContextID context,
4332     VABufferID buffer,
4333     VABufferType type,
4334     unsigned int size,
4335     unsigned int num_elements,
4336     void *data)
4337 {
4338     VAEncPackedHeaderParameterBuffer* p = (VAEncPackedHeaderParameterBuffer*)data;
4339     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4340 
4341     if (!p)
4342         return;
4343     va_TraceMsg(trace_ctx, "\t--VAEncPackedHeaderParameterBuffer\n");
4344     va_TraceMsg(trace_ctx, "\ttype = 0x%08x\n", p->type);
4345     va_TraceMsg(trace_ctx, "\tbit_length = %d\n", p->bit_length);
4346     va_TraceMsg(trace_ctx, "\thas_emulation_bytes = %d\n", p->has_emulation_bytes);
4347     va_TraceMsg(trace_ctx, NULL);
4348 
4349     return;
4350 }
4351 
va_TraceVAEncMiscParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4352 static void va_TraceVAEncMiscParameterBuffer(
4353     VADisplay dpy,
4354     VAContextID context,
4355     VABufferID buffer,
4356     VABufferType type,
4357     unsigned int size,
4358     unsigned int num_elements,
4359     void *data)
4360 {
4361     VAEncMiscParameterBuffer* tmp = (VAEncMiscParameterBuffer*)data;
4362     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4363 
4364     switch (tmp->type) {
4365     case VAEncMiscParameterTypeFrameRate: {
4366         VAEncMiscParameterFrameRate *p = (VAEncMiscParameterFrameRate *)tmp->data;
4367         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterFrameRate\n");
4368         va_TraceMsg(trace_ctx, "\tframerate = %d\n", p->framerate);
4369         va_TraceMsg(trace_ctx, "\tframerate_flags.temporal_id = %d\n", p->framerate_flags.bits.temporal_id);
4370         break;
4371     }
4372     case VAEncMiscParameterTypeRateControl: {
4373         VAEncMiscParameterRateControl *p = (VAEncMiscParameterRateControl *)tmp->data;
4374 
4375         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterRateControl\n");
4376         va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4377         va_TraceMsg(trace_ctx, "\ttarget_percentage = %d\n", p->target_percentage);
4378         va_TraceMsg(trace_ctx, "\twindow_size = %d\n", p->window_size);
4379         va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
4380         va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
4381         va_TraceMsg(trace_ctx, "\tbasic_unit_size = %d\n", p->basic_unit_size);
4382         va_TraceMsg(trace_ctx, "\trc_flags.reset = %d \n", p->rc_flags.bits.reset);
4383         va_TraceMsg(trace_ctx, "\trc_flags.disable_frame_skip = %d\n", p->rc_flags.bits.disable_frame_skip);
4384         va_TraceMsg(trace_ctx, "\trc_flags.disable_bit_stuffing = %d\n", p->rc_flags.bits.disable_bit_stuffing);
4385         va_TraceMsg(trace_ctx, "\trc_flags.mb_rate_control = %d\n", p->rc_flags.bits.mb_rate_control);
4386         va_TraceMsg(trace_ctx, "\trc_flags.temporal_id = %d\n", p->rc_flags.bits.temporal_id);
4387         va_TraceMsg(trace_ctx, "\trc_flags.cfs_I_frames = %d\n", p->rc_flags.bits.cfs_I_frames);
4388         va_TraceMsg(trace_ctx, "\trc_flags.enable_parallel_brc = %d\n", p->rc_flags.bits.enable_parallel_brc);
4389         va_TraceMsg(trace_ctx, "\trc_flags.enable_dynamic_scaling = %d\n", p->rc_flags.bits.enable_dynamic_scaling);
4390         va_TraceMsg(trace_ctx, "\trc_flags.frame_tolerance_mode = %d\n", p->rc_flags.bits.frame_tolerance_mode);
4391         va_TraceMsg(trace_ctx, "\tICQ_quality_factor = %d\n", p->ICQ_quality_factor);
4392         va_TraceMsg(trace_ctx, "\tmax_qp = %d\n", p->max_qp);
4393         va_TraceMsg(trace_ctx, "\tquality_factor = %d\n", p->quality_factor);
4394         va_TraceMsg(trace_ctx, "\ttarget_frame_size = %d\n", p->target_frame_size);
4395         break;
4396     }
4397     case VAEncMiscParameterTypeMaxSliceSize: {
4398         VAEncMiscParameterMaxSliceSize *p = (VAEncMiscParameterMaxSliceSize *)tmp->data;
4399 
4400         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxSliceSize\n");
4401         va_TraceMsg(trace_ctx, "\tmax_slice_size = %d\n", p->max_slice_size);
4402         break;
4403     }
4404     case VAEncMiscParameterTypeAIR: {
4405         VAEncMiscParameterAIR *p = (VAEncMiscParameterAIR *)tmp->data;
4406 
4407         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterAIR\n");
4408         va_TraceMsg(trace_ctx, "\tair_num_mbs = %d\n", p->air_num_mbs);
4409         va_TraceMsg(trace_ctx, "\tair_threshold = %d\n", p->air_threshold);
4410         va_TraceMsg(trace_ctx, "\tair_auto = %d\n", p->air_auto);
4411         break;
4412     }
4413     case VAEncMiscParameterTypeHRD: {
4414         VAEncMiscParameterHRD *p = (VAEncMiscParameterHRD *)tmp->data;
4415 
4416         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterHRD\n");
4417         va_TraceMsg(trace_ctx, "\tinitial_buffer_fullness = %d\n", p->initial_buffer_fullness);
4418         va_TraceMsg(trace_ctx, "\tbuffer_size = %d\n", p->buffer_size);
4419         break;
4420     }
4421     case VAEncMiscParameterTypeMaxFrameSize: {
4422         VAEncMiscParameterBufferMaxFrameSize *p = (VAEncMiscParameterBufferMaxFrameSize *)tmp->data;
4423 
4424         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMaxFrameSize\n");
4425         va_TraceMsg(trace_ctx, "\tmax_frame_size = %d\n", p->max_frame_size);
4426         break;
4427     }
4428     case VAEncMiscParameterTypeMultiPassFrameSize: {
4429         int i;
4430         VAEncMiscParameterBufferMultiPassFrameSize *p = (VAEncMiscParameterBufferMultiPassFrameSize *)tmp->data;
4431 
4432         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTypeMultiPassFrameSize\n");
4433         va_TraceMsg(trace_ctx, "\tmax_frame_size = %d\n", p->max_frame_size);
4434         va_TraceMsg(trace_ctx, "\tnum_passes = %d\n", p->num_passes);
4435         for (i = 0; i < p->num_passes; ++i)
4436             va_TraceMsg(trace_ctx, "\tdelta_qp[%d] = %d\n", i, p->delta_qp[i]);
4437         break;
4438     }
4439     case VAEncMiscParameterTypeQualityLevel: {
4440         VAEncMiscParameterBufferQualityLevel *p = (VAEncMiscParameterBufferQualityLevel *)tmp->data;
4441 
4442         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterBufferQualityLevel\n");
4443         va_TraceMsg(trace_ctx, "\tquality_level = %d\n", p->quality_level);
4444         break;
4445     }
4446     case VAEncMiscParameterTypeROI: {
4447         int i;
4448         VAEncMiscParameterBufferROI *p = (VAEncMiscParameterBufferROI *)tmp->data;
4449 
4450         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterBufferROI\n");
4451         va_TraceMsg(trace_ctx, "\tnum_roi = %d\n", p->num_roi);
4452         va_TraceMsg(trace_ctx, "\tmax_delta_qp = %d\n", p->max_delta_qp);
4453         va_TraceMsg(trace_ctx, "\tmin_delta_qp = %d\n", p->min_delta_qp);
4454         va_TraceMsg(trace_ctx, "\troi_flags.bits.roi_value_is_qp_delta = %d\n", p->roi_flags.bits.roi_value_is_qp_delta);
4455         for (i = 0; i < p->num_roi; i++) {
4456             va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.x      = %d\n", i, p->roi[i].roi_rectangle.x);
4457             va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.y      = %d\n", i, p->roi[i].roi_rectangle.y);
4458             va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.width  = %d\n", i, p->roi[i].roi_rectangle.width);
4459             va_TraceMsg(trace_ctx, "\troi[%d].roi_rectangle.height = %d\n", i, p->roi[i].roi_rectangle.height);
4460             va_TraceMsg(trace_ctx, "\troi[%d].roi_value            = %d\n", i, p->roi[i].roi_value);
4461         }
4462         break;
4463     }
4464     case VAEncMiscParameterTypeRIR: {
4465         VAEncMiscParameterRIR *p = (VAEncMiscParameterRIR *)tmp->data;
4466 
4467         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterRIR\n");
4468         va_TraceMsg(trace_ctx, "\trir_flags.bits.enable_rir_column = %d\n", p->rir_flags.bits.enable_rir_column);
4469         va_TraceMsg(trace_ctx, "\trir_flags.bits.enable_rir_row = %d\n", p->rir_flags.bits.enable_rir_row);
4470         va_TraceMsg(trace_ctx, "\tintra_insertion_location = %d\n", p->intra_insertion_location);
4471         va_TraceMsg(trace_ctx, "\tintra_insert_size = %d\n", p->intra_insert_size);
4472         va_TraceMsg(trace_ctx, "\tqp_delta_for_inserted_intra = %d\n", p->qp_delta_for_inserted_intra);
4473         break;
4474     }
4475     case VAEncMiscParameterTypeEncQuality: {
4476         int i;
4477         VAEncMiscParameterEncQuality *p = (VAEncMiscParameterEncQuality *)tmp->data;
4478 
4479         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterEncQuality\n");
4480         va_TraceMsg(trace_ctx, "\tuseRawPicForRef = %d\n", p->useRawPicForRef);
4481         va_TraceMsg(trace_ctx, "\tskipCheckDisable = %d\n", p->skipCheckDisable);
4482         va_TraceMsg(trace_ctx, "\tFTQOverride = %d\n", p->FTQOverride);
4483         va_TraceMsg(trace_ctx, "\tFTQEnable = %d\n", p->FTQEnable);
4484         va_TraceMsg(trace_ctx, "\tFTQSkipThresholdLUTInput = %d\n", p->FTQSkipThresholdLUTInput);
4485         va_TraceMsg(trace_ctx, "\tNonFTQSkipThresholdLUTInput = %d\n", p->NonFTQSkipThresholdLUTInput);
4486         va_TraceMsg(trace_ctx, "\tReservedBit = %d\n", p->ReservedBit);
4487         va_TraceMsg(trace_ctx, "\tdirectBiasAdjustmentEnable = %d\n", p->directBiasAdjustmentEnable);
4488         va_TraceMsg(trace_ctx, "\tglobalMotionBiasAdjustmentEnable = %d\n", p->globalMotionBiasAdjustmentEnable);
4489         va_TraceMsg(trace_ctx, "\tHMEMVCostScalingFactor = %d\n", p->HMEMVCostScalingFactor);
4490         va_TraceMsg(trace_ctx, "\tHMEDisable = %d\n", p->HMEDisable);
4491         va_TraceMsg(trace_ctx, "\tSuperHMEDisable = %d\n", p->SuperHMEDisable);
4492         va_TraceMsg(trace_ctx, "\tUltraHMEDisable = %d\n", p->UltraHMEDisable);
4493         va_TraceMsg(trace_ctx, "\tPanicModeDisable = %d\n", p->PanicModeDisable);
4494         va_TraceMsg(trace_ctx, "\tForceRepartitionCheck = %d\n", p->ForceRepartitionCheck);
4495         if (p->FTQSkipThresholdLUTInput) {
4496             va_TraceMsg(trace_ctx, "\tFTQSkipThresholdLUT[52]=\n");
4497             for (i = 0; i < 52; i++) {
4498                 va_TraceMsg(trace_ctx, "\t%d", p->FTQSkipThresholdLUT[i]);
4499                 if ((i + 1) % 8 == 0)
4500                     TRACE_NEWLINE();
4501             }
4502             va_TracePrint(trace_ctx, "\n");
4503         }
4504         if (p->NonFTQSkipThresholdLUTInput) {
4505             va_TraceMsg(trace_ctx, "\tNonFTQSkipThresholdLUT[52]=\n");
4506             for (i = 0; i < 52; i++) {
4507                 va_TraceMsg(trace_ctx, "\t%d", p->NonFTQSkipThresholdLUT[i]);
4508                 if ((i + 1) % 8 == 0)
4509                     TRACE_NEWLINE();
4510             }
4511             va_TracePrint(trace_ctx, "\n");
4512         }
4513         break;
4514     }
4515     case VAEncMiscParameterTypeSkipFrame: {
4516         VAEncMiscParameterSkipFrame *p = (VAEncMiscParameterSkipFrame *)tmp->data;
4517         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterSkipFrame\n");
4518         va_TraceMsg(trace_ctx, "\tskip_frame_flag = %d\n", p->skip_frame_flag);
4519         va_TraceMsg(trace_ctx, "\tnum_skip_frames = %d\n", p->num_skip_frames);
4520         va_TraceMsg(trace_ctx, "\tsize_skip_frames = %d\n", p->size_skip_frames);
4521         break;
4522     }
4523     case VAEncMiscParameterTypeTemporalLayerStructure: {
4524         int i;
4525         VAEncMiscParameterTemporalLayerStructure *p = (VAEncMiscParameterTemporalLayerStructure *)tmp->data;
4526         va_TraceMsg(trace_ctx, "\t--VAEncMiscParameterTemporalLayerStructure\n");
4527         va_TraceMsg(trace_ctx, "\tnumber_of_layers = %d\n", p->number_of_layers);
4528         va_TraceMsg(trace_ctx, "\tperiodicity = %d\n", p->periodicity);
4529         va_TraceMsg(trace_ctx, "\tlayer_id =\n");
4530         va_TraceMsg(trace_ctx, "");
4531         for (i = 0; i < 32; i++) {
4532             if (i % 8 == 0)
4533                 va_TracePrint(trace_ctx, "\t");
4534 
4535             va_TracePrint(trace_ctx, "\t%u", p->layer_id[i]);
4536             if ((i + 1) % 8 == 0) {
4537                 if (i == 31)
4538                     va_TracePrint(trace_ctx, "\n");
4539                 else
4540                     TRACE_NEWLINE();
4541             }
4542         }
4543         break;
4544     }
4545     default:
4546         va_TraceMsg(trace_ctx, "Unknown VAEncMiscParameterBuffer(type = %d):\n", tmp->type);
4547         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, data);
4548         break;
4549     }
4550     va_TraceMsg(trace_ctx, NULL);
4551 
4552     return;
4553 }
4554 
4555 
va_TraceVAPictureParameterBufferVC1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4556 static void va_TraceVAPictureParameterBufferVC1(
4557     VADisplay dpy,
4558     VAContextID context,
4559     VABufferID buffer,
4560     VABufferType type,
4561     unsigned int size,
4562     unsigned int num_elements,
4563     void *data
4564 )
4565 {
4566     VAPictureParameterBufferVC1* p = (VAPictureParameterBufferVC1*)data;
4567     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4568 
4569     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVC1\n");
4570 
4571     va_TraceMsg(trace_ctx, "\tforward_reference_picture = 0x%08x\n", p->forward_reference_picture);
4572     va_TraceMsg(trace_ctx, "\tbackward_reference_picture = 0x%08x\n", p->backward_reference_picture);
4573     va_TraceMsg(trace_ctx, "\tinloop_decoded_picture = 0x%08x\n", p->inloop_decoded_picture);
4574 
4575     va_TraceMsg(trace_ctx, "\tpulldown = %d\n", p->sequence_fields.bits.pulldown);
4576     va_TraceMsg(trace_ctx, "\tinterlace = %d\n", p->sequence_fields.bits.interlace);
4577     va_TraceMsg(trace_ctx, "\ttfcntrflag = %d\n", p->sequence_fields.bits.tfcntrflag);
4578     va_TraceMsg(trace_ctx, "\tfinterpflag = %d\n", p->sequence_fields.bits.finterpflag);
4579     va_TraceMsg(trace_ctx, "\tpsf = %d\n", p->sequence_fields.bits.psf);
4580     va_TraceMsg(trace_ctx, "\tmultires = %d\n", p->sequence_fields.bits.multires);
4581     va_TraceMsg(trace_ctx, "\toverlap = %d\n", p->sequence_fields.bits.overlap);
4582     va_TraceMsg(trace_ctx, "\tsyncmarker = %d\n", p->sequence_fields.bits.syncmarker);
4583     va_TraceMsg(trace_ctx, "\trangered = %d\n", p->sequence_fields.bits.rangered);
4584     va_TraceMsg(trace_ctx, "\tmax_b_frames = %d\n", p->sequence_fields.bits.max_b_frames);
4585     va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->sequence_fields.bits.profile);
4586     va_TraceMsg(trace_ctx, "\tcoded_width = %d\n", p->coded_width);
4587     va_TraceMsg(trace_ctx, "\tcoded_height = %d\n", p->coded_height);
4588     va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
4589     va_TraceMsg(trace_ctx, "\tbroken_link = %d\n", p->entrypoint_fields.bits.broken_link);
4590     va_TraceMsg(trace_ctx, "\tclosed_entry = %d\n", p->entrypoint_fields.bits.closed_entry);
4591     va_TraceMsg(trace_ctx, "\tpanscan_flag = %d\n", p->entrypoint_fields.bits.panscan_flag);
4592     va_TraceMsg(trace_ctx, "\tloopfilter = %d\n", p->entrypoint_fields.bits.loopfilter);
4593     va_TraceMsg(trace_ctx, "\tconditional_overlap_flag = %d\n", p->conditional_overlap_flag);
4594     va_TraceMsg(trace_ctx, "\tfast_uvmc_flag = %d\n", p->fast_uvmc_flag);
4595     va_TraceMsg(trace_ctx, "\trange_mapping_luma_flag = %d\n", p->range_mapping_fields.bits.luma_flag);
4596     va_TraceMsg(trace_ctx, "\trange_mapping_luma = %d\n", p->range_mapping_fields.bits.luma);
4597     va_TraceMsg(trace_ctx, "\trange_mapping_chroma_flag = %d\n", p->range_mapping_fields.bits.chroma_flag);
4598     va_TraceMsg(trace_ctx, "\trange_mapping_chroma = %d\n", p->range_mapping_fields.bits.chroma);
4599     va_TraceMsg(trace_ctx, "\tb_picture_fraction = %d\n", p->b_picture_fraction);
4600     va_TraceMsg(trace_ctx, "\tcbp_table = %d\n", p->cbp_table);
4601     va_TraceMsg(trace_ctx, "\tmb_mode_table = %d\n", p->mb_mode_table);
4602     va_TraceMsg(trace_ctx, "\trange_reduction_frame = %d\n", p->range_reduction_frame);
4603     va_TraceMsg(trace_ctx, "\trounding_control = %d\n", p->rounding_control);
4604     va_TraceMsg(trace_ctx, "\tpost_processing = %d\n", p->post_processing);
4605     va_TraceMsg(trace_ctx, "\tpicture_resolution_index = %d\n", p->picture_resolution_index);
4606     va_TraceMsg(trace_ctx, "\tluma_scale = %d\n", p->luma_scale);
4607     va_TraceMsg(trace_ctx, "\tluma_shift = %d\n", p->luma_shift);
4608     va_TraceMsg(trace_ctx, "\tpicture_type = %d\n", p->picture_fields.bits.picture_type);
4609     va_TraceMsg(trace_ctx, "\tframe_coding_mode = %d\n", p->picture_fields.bits.frame_coding_mode);
4610     va_TraceMsg(trace_ctx, "\ttop_field_first = %d\n", p->picture_fields.bits.top_field_first);
4611     va_TraceMsg(trace_ctx, "\tis_first_field = %d\n", p->picture_fields.bits.is_first_field);
4612     va_TraceMsg(trace_ctx, "\tintensity_compensation = %d\n", p->picture_fields.bits.intensity_compensation);
4613     va_TraceMsg(trace_ctx, "\tmv_type_mb = %d\n", p->raw_coding.flags.mv_type_mb);
4614     va_TraceMsg(trace_ctx, "\tdirect_mb = %d\n", p->raw_coding.flags.direct_mb);
4615     va_TraceMsg(trace_ctx, "\tskip_mb = %d\n", p->raw_coding.flags.skip_mb);
4616     va_TraceMsg(trace_ctx, "\tfield_tx = %d\n", p->raw_coding.flags.field_tx);
4617     va_TraceMsg(trace_ctx, "\tforward_mb = %d\n", p->raw_coding.flags.forward_mb);
4618     va_TraceMsg(trace_ctx, "\tac_pred = %d\n", p->raw_coding.flags.ac_pred);
4619     va_TraceMsg(trace_ctx, "\toverflags = %d\n", p->raw_coding.flags.overflags);
4620     va_TraceMsg(trace_ctx, "\tbp_mv_type_mb = %d\n", p->bitplane_present.flags.bp_mv_type_mb);
4621     va_TraceMsg(trace_ctx, "\tbp_direct_mb = %d\n", p->bitplane_present.flags.bp_direct_mb);
4622     va_TraceMsg(trace_ctx, "\tbp_skip_mb = %d\n", p->bitplane_present.flags.bp_skip_mb);
4623     va_TraceMsg(trace_ctx, "\tbp_field_tx = %d\n", p->bitplane_present.flags.bp_field_tx);
4624     va_TraceMsg(trace_ctx, "\tbp_forward_mb = %d\n", p->bitplane_present.flags.bp_forward_mb);
4625     va_TraceMsg(trace_ctx, "\tbp_ac_pred = %d\n", p->bitplane_present.flags.bp_ac_pred);
4626     va_TraceMsg(trace_ctx, "\tbp_overflags = %d\n", p->bitplane_present.flags.bp_overflags);
4627     va_TraceMsg(trace_ctx, "\treference_distance_flag = %d\n", p->reference_fields.bits.reference_distance_flag);
4628     va_TraceMsg(trace_ctx, "\treference_distance = %d\n", p->reference_fields.bits.reference_distance);
4629     va_TraceMsg(trace_ctx, "\tnum_reference_pictures = %d\n", p->reference_fields.bits.num_reference_pictures);
4630     va_TraceMsg(trace_ctx, "\treference_field_pic_indicator = %d\n", p->reference_fields.bits.reference_field_pic_indicator);
4631     va_TraceMsg(trace_ctx, "\tmv_mode = %d\n", p->mv_fields.bits.mv_mode);
4632     va_TraceMsg(trace_ctx, "\tmv_mode2 = %d\n", p->mv_fields.bits.mv_mode2);
4633     va_TraceMsg(trace_ctx, "\tmv_table = %d\n", p->mv_fields.bits.mv_table);
4634     va_TraceMsg(trace_ctx, "\ttwo_mv_block_pattern_table = %d\n", p->mv_fields.bits.two_mv_block_pattern_table);
4635     va_TraceMsg(trace_ctx, "\tfour_mv_switch = %d\n", p->mv_fields.bits.four_mv_switch);
4636     va_TraceMsg(trace_ctx, "\tfour_mv_block_pattern_table = %d\n", p->mv_fields.bits.four_mv_block_pattern_table);
4637     va_TraceMsg(trace_ctx, "\textended_mv_flag = %d\n", p->mv_fields.bits.extended_mv_flag);
4638     va_TraceMsg(trace_ctx, "\textended_mv_range = %d\n", p->mv_fields.bits.extended_mv_range);
4639     va_TraceMsg(trace_ctx, "\textended_dmv_flag = %d\n", p->mv_fields.bits.extended_dmv_flag);
4640     va_TraceMsg(trace_ctx, "\textended_dmv_range = %d\n", p->mv_fields.bits.extended_dmv_range);
4641     va_TraceMsg(trace_ctx, "\tdquant = %d\n", p->pic_quantizer_fields.bits.dquant);
4642     va_TraceMsg(trace_ctx, "\tquantizer = %d\n", p->pic_quantizer_fields.bits.quantizer);
4643     va_TraceMsg(trace_ctx, "\thalf_qp = %d\n", p->pic_quantizer_fields.bits.half_qp);
4644     va_TraceMsg(trace_ctx, "\tpic_quantizer_scale = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_scale);
4645     va_TraceMsg(trace_ctx, "\tpic_quantizer_type = %d\n", p->pic_quantizer_fields.bits.pic_quantizer_type);
4646     va_TraceMsg(trace_ctx, "\tdq_frame = %d\n", p->pic_quantizer_fields.bits.dq_frame);
4647     va_TraceMsg(trace_ctx, "\tdq_profile = %d\n", p->pic_quantizer_fields.bits.dq_profile);
4648     va_TraceMsg(trace_ctx, "\tdq_sb_edge = %d\n", p->pic_quantizer_fields.bits.dq_sb_edge);
4649     va_TraceMsg(trace_ctx, "\tdq_db_edge = %d\n", p->pic_quantizer_fields.bits.dq_db_edge);
4650     va_TraceMsg(trace_ctx, "\tdq_binary_level = %d\n", p->pic_quantizer_fields.bits.dq_binary_level);
4651     va_TraceMsg(trace_ctx, "\talt_pic_quantizer = %d\n", p->pic_quantizer_fields.bits.alt_pic_quantizer);
4652     va_TraceMsg(trace_ctx, "\tvariable_sized_transform_flag = %d\n", p->transform_fields.bits.variable_sized_transform_flag);
4653     va_TraceMsg(trace_ctx, "\tmb_level_transform_type_flag = %d\n", p->transform_fields.bits.mb_level_transform_type_flag);
4654     va_TraceMsg(trace_ctx, "\tframe_level_transform_type = %d\n", p->transform_fields.bits.frame_level_transform_type);
4655     va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx1 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx1);
4656     va_TraceMsg(trace_ctx, "\ttransform_ac_codingset_idx2 = %d\n", p->transform_fields.bits.transform_ac_codingset_idx2);
4657     va_TraceMsg(trace_ctx, "\tintra_transform_dc_table = %d\n", p->transform_fields.bits.intra_transform_dc_table);
4658     va_TraceMsg(trace_ctx, NULL);
4659 }
4660 
va_TraceVASliceParameterBufferVC1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4661 static void va_TraceVASliceParameterBufferVC1(
4662     VADisplay dpy,
4663     VAContextID context,
4664     VABufferID buffer,
4665     VABufferType type,
4666     unsigned int size,
4667     unsigned int num_elements,
4668     void* data
4669 )
4670 {
4671     VASliceParameterBufferVC1 *p = (VASliceParameterBufferVC1*)data;
4672     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4673 
4674     trace_ctx->trace_slice_no++;
4675     trace_ctx->trace_slice_size = p->slice_data_size;
4676 
4677     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVC1\n");
4678     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
4679     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
4680     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
4681     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
4682     va_TraceMsg(trace_ctx, "\tslice_vertical_position = %d\n", p->slice_vertical_position);
4683     va_TraceMsg(trace_ctx, NULL);
4684 }
4685 
va_TraceVAPictureParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4686 static void va_TraceVAPictureParameterBufferVP8(
4687     VADisplay dpy,
4688     VAContextID context,
4689     VABufferID buffer,
4690     VABufferType type,
4691     unsigned int size,
4692     unsigned int num_elements,
4693     void *data)
4694 {
4695     char tmp[1024];
4696     VAPictureParameterBufferVP8 *p = (VAPictureParameterBufferVP8 *)data;
4697     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4698     int i, j;
4699 
4700     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVP8\n");
4701 
4702     va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4703     va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4704     va_TraceMsg(trace_ctx, "\tlast_ref_frame = %x\n", p->last_ref_frame);
4705     va_TraceMsg(trace_ctx, "\tgolden_ref_frame = %x\n", p->golden_ref_frame);
4706     va_TraceMsg(trace_ctx, "\talt_ref_frame = %x\n", p->alt_ref_frame);
4707     va_TraceMsg(trace_ctx, "\tout_of_loop_frame = %x\n", p->out_of_loop_frame);
4708 
4709     va_TraceMsg(trace_ctx, "\tkey_frame = %d\n", p->pic_fields.bits.key_frame);
4710     va_TraceMsg(trace_ctx, "\tversion = %d\n", p->pic_fields.bits.version);
4711     va_TraceMsg(trace_ctx, "\tsegmentation_enabled = %d\n", p->pic_fields.bits.segmentation_enabled);
4712     va_TraceMsg(trace_ctx, "\tupdate_mb_segmentation_map = %d\n", p->pic_fields.bits.update_mb_segmentation_map);
4713     va_TraceMsg(trace_ctx, "\tupdate_segment_feature_data = %d\n", p->pic_fields.bits.update_segment_feature_data);
4714     va_TraceMsg(trace_ctx, "\tfilter_type = %d\n", p->pic_fields.bits.filter_type);
4715     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->pic_fields.bits.sharpness_level);
4716     va_TraceMsg(trace_ctx, "\tloop_filter_adj_enable = %d\n", p->pic_fields.bits.loop_filter_adj_enable);
4717     va_TraceMsg(trace_ctx, "\tmode_ref_lf_delta_update = %d\n", p->pic_fields.bits.mode_ref_lf_delta_update);
4718     va_TraceMsg(trace_ctx, "\tsign_bias_golden = %d\n", p->pic_fields.bits.sign_bias_golden);
4719     va_TraceMsg(trace_ctx, "\tsign_bias_alternate = %d\n", p->pic_fields.bits.sign_bias_alternate);
4720     va_TraceMsg(trace_ctx, "\tmb_no_coeff_skip = %d\n", p->pic_fields.bits.mb_no_coeff_skip);
4721     va_TraceMsg(trace_ctx, "\tloop_filter_disable = %d\n", p->pic_fields.bits.loop_filter_disable);
4722 
4723     va_TraceMsg(trace_ctx, "\tmb_segment_tree_probs: 0x%2x, 0x%2x, 0x%2x\n",
4724                 p->mb_segment_tree_probs[0], p->mb_segment_tree_probs[1], p->mb_segment_tree_probs[2]);
4725 
4726     va_TraceMsg(trace_ctx, "\tloop_filter_level: %d, %d, %d, %d\n",
4727                 p->loop_filter_level[0], p->loop_filter_level[1], p->loop_filter_level[2], p->loop_filter_level[3]);
4728 
4729     va_TraceMsg(trace_ctx, "\tloop_filter_deltas_ref_frame: %d, %d, %d, %d\n",
4730                 p->loop_filter_deltas_ref_frame[0], p->loop_filter_deltas_ref_frame[1], p->loop_filter_deltas_ref_frame[2], p->loop_filter_deltas_ref_frame[3]);
4731 
4732     va_TraceMsg(trace_ctx, "\tloop_filter_deltas_mode: %d, %d, %d, %d\n",
4733                 p->loop_filter_deltas_mode[0], p->loop_filter_deltas_mode[1], p->loop_filter_deltas_mode[2], p->loop_filter_deltas_mode[3]);
4734 
4735     va_TraceMsg(trace_ctx, "\tprob_skip_false = %2x\n", p->prob_skip_false);
4736     va_TraceMsg(trace_ctx, "\tprob_intra = %2x\n", p->prob_intra);
4737     va_TraceMsg(trace_ctx, "\tprob_last = %2x\n", p->prob_last);
4738     va_TraceMsg(trace_ctx, "\tprob_gf = %2x\n", p->prob_gf);
4739 
4740     va_TraceMsg(trace_ctx, "\ty_mode_probs: 0x%2x, 0x%2x, 0x%2x, 0x%2x\n",
4741                 p->y_mode_probs[0], p->y_mode_probs[1], p->y_mode_probs[2], p->y_mode_probs[3]);
4742 
4743     va_TraceMsg(trace_ctx, "\tuv_mode_probs: 0x%2x, 0x%2x, 0x%2x\n",
4744                 p->uv_mode_probs[0], p->uv_mode_probs[1], p->uv_mode_probs[2]);
4745 
4746     va_TraceMsg(trace_ctx, "\tmv_probs[2][19]:\n");
4747     for (i = 0; i < 2; ++i) {
4748         memset(tmp, 0, sizeof tmp);
4749         for (j = 0; j < 19; j++)
4750             sprintf(tmp + strlen(tmp), "%2x ", p->mv_probs[i][j]);
4751         va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
4752     }
4753 
4754     va_TraceMsg(trace_ctx, "\tbool_coder_ctx: range = %02x, value = %02x, count = %d\n",
4755                 p->bool_coder_ctx.range, p->bool_coder_ctx.value, p->bool_coder_ctx.count);
4756 
4757     va_TraceMsg(trace_ctx, NULL);
4758 
4759     return;
4760 }
4761 
va_TraceVASliceParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4762 static void va_TraceVASliceParameterBufferVP8(
4763     VADisplay dpy,
4764     VAContextID context,
4765     VABufferID buffer,
4766     VABufferType type,
4767     unsigned int size,
4768     unsigned int num_elements,
4769     void *data)
4770 {
4771     VASliceParameterBufferVP8 *p = (VASliceParameterBufferVP8 *)data;
4772     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4773     int i;
4774 
4775     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVP8\n");
4776 
4777     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
4778     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
4779     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
4780     va_TraceMsg(trace_ctx, "\tmacroblock_offset = %d\n", p->macroblock_offset);
4781     va_TraceMsg(trace_ctx, "\tnum_of_partitions = %d\n", p->num_of_partitions);
4782 
4783     for (i = 0; i < 9; ++i)
4784         va_TraceMsg(trace_ctx, "\tpartition_size[%d] = %d\n", i, p->partition_size[i]);
4785 
4786     va_TraceMsg(trace_ctx, NULL);
4787 
4788     return;
4789 }
4790 
va_TraceVAIQMatrixBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4791 static void va_TraceVAIQMatrixBufferVP8(
4792     VADisplay dpy,
4793     VAContextID context,
4794     VABufferID buffer,
4795     VABufferType type,
4796     unsigned int size,
4797     unsigned int num_elements,
4798     void *data)
4799 {
4800     char tmp[1024];
4801     VAIQMatrixBufferVP8 *p = (VAIQMatrixBufferVP8 *)data;
4802     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4803     int i, j;
4804 
4805     va_TraceMsg(trace_ctx, "\t--VAIQMatrixBufferVP8\n");
4806 
4807     va_TraceMsg(trace_ctx, "\tquantization_index[4][6]=\n");
4808     for (i = 0; i < 4; i++) {
4809         memset(tmp, 0, sizeof tmp);
4810         for (j = 0; j < 6; j++)
4811             sprintf(tmp + strlen(tmp), "%4x, ", p->quantization_index[i][j]);
4812         va_TraceMsg(trace_ctx, "\t\t[%d] = %s\n", i, tmp);
4813     }
4814 
4815     va_TraceMsg(trace_ctx, NULL);
4816 
4817     return;
4818 }
va_TraceVAProbabilityBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4819 static void va_TraceVAProbabilityBufferVP8(
4820     VADisplay dpy,
4821     VAContextID context,
4822     VABufferID buffer,
4823     VABufferType type,
4824     unsigned int size,
4825     unsigned int num_elements,
4826     void *data)
4827 {
4828     char tmp[1024];
4829     VAProbabilityDataBufferVP8 *p = (VAProbabilityDataBufferVP8 *)data;
4830     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4831     int i, j, k, l;
4832 
4833     va_TraceMsg(trace_ctx, "\t--VAProbabilityDataBufferVP8\n");
4834 
4835     for (i = 0; i < 4; i++)
4836         for (j = 0; j < 8; j++) {
4837             memset(tmp, 0, sizeof tmp);
4838             for (k = 0; k < 3; k++)
4839                 for (l = 0; l < 11; l++)
4840                     sprintf(tmp + strlen(tmp), "%2x, ", p->dct_coeff_probs[i][j][k][l]);
4841             va_TraceMsg(trace_ctx, "\t\t[%d, %d] = %s\n", i, j, tmp);
4842         }
4843 
4844     va_TraceMsg(trace_ctx, NULL);
4845 
4846     return;
4847 }
4848 
va_TraceVAEncSequenceParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4849 static void va_TraceVAEncSequenceParameterBufferVP8(
4850     VADisplay dpy,
4851     VAContextID context,
4852     VABufferID buffer,
4853     VABufferType type,
4854     unsigned int size,
4855     unsigned int num_elements,
4856     void *data)
4857 {
4858     VAEncSequenceParameterBufferVP8 *p = (VAEncSequenceParameterBufferVP8 *)data;
4859     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4860     int i;
4861 
4862     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP8\n");
4863 
4864     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4865     va_TraceMsg(trace_ctx, "\terror_resilient = %d\n", p->error_resilient);
4866     va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4867     va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4868     va_TraceMsg(trace_ctx, "\tframe_height_scale = %d\n", p->frame_height_scale);
4869     va_TraceMsg(trace_ctx, "\tframe_width_scale = %d\n", p->frame_width_scale);
4870     va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
4871     va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
4872     va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
4873     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4874 
4875     for (i = 0; i < 4; ++i)
4876         va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
4877 
4878     va_TraceMsg(trace_ctx, NULL);
4879 
4880     return;
4881 }
4882 
va_TraceVAEncSequenceParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4883 static void va_TraceVAEncSequenceParameterBufferVP9(
4884     VADisplay dpy,
4885     VAContextID context,
4886     VABufferID buffer,
4887     VABufferType type,
4888     unsigned int size,
4889     unsigned int num_elements,
4890     void *data)
4891 {
4892     VAEncSequenceParameterBufferVP9 *p = (VAEncSequenceParameterBufferVP9 *)data;
4893     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4894 
4895     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferVP9\n");
4896 
4897     va_TraceMsg(trace_ctx, "\tmax_frame_height = %d\n", p->max_frame_height);
4898     va_TraceMsg(trace_ctx, "\tmax_frame_width = %d\n", p->max_frame_width);
4899     va_TraceMsg(trace_ctx, "\tkf_auto = %d\n", p->kf_auto);
4900     va_TraceMsg(trace_ctx, "\tkf_min_dist = %d\n", p->kf_min_dist);
4901     va_TraceMsg(trace_ctx, "\tkf_max_dist = %d\n", p->kf_max_dist);
4902     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4903     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4904 
4905     va_TraceMsg(trace_ctx, NULL);
4906 
4907     return;
4908 }
4909 
va_TraceVAPictureParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4910 static void va_TraceVAPictureParameterBufferVP9(
4911     VADisplay dpy,
4912     VAContextID context,
4913     VABufferID buffer,
4914     VABufferType type,
4915     unsigned int size,
4916     unsigned int num_elements,
4917     void *data)
4918 {
4919     VADecPictureParameterBufferVP9 *p = (VADecPictureParameterBufferVP9 *)data;
4920     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4921     int i;
4922 
4923     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferVP9\n");
4924 
4925     va_TraceMsg(trace_ctx, "\tframe_width = %d\n", p->frame_width);
4926     va_TraceMsg(trace_ctx, "\tframe_height = %d\n", p->frame_height);
4927     va_TraceMsg(trace_ctx, "\treference_frames[8] =\n");
4928     for (i = 0; i < 8; i++) {
4929         va_TraceMsg(trace_ctx, "\t\t0x%x\n", p->reference_frames[i]);
4930     }
4931     va_TraceMsg(trace_ctx, "\tsubsampling_x = %d\n", p->pic_fields.bits.subsampling_x);
4932     va_TraceMsg(trace_ctx, "\tsubsampling_y = %d\n", p->pic_fields.bits.subsampling_y);
4933     va_TraceMsg(trace_ctx, "\tframe_type = %d\n",    p->pic_fields.bits.frame_type);
4934     va_TraceMsg(trace_ctx, "\tshow_frame = %d\n",    p->pic_fields.bits.show_frame);
4935     va_TraceMsg(trace_ctx, "\terror_resilient_mode = %d\n", p->pic_fields.bits.error_resilient_mode);
4936     va_TraceMsg(trace_ctx, "\tintra_only = %d\n", p->pic_fields.bits.intra_only);
4937     va_TraceMsg(trace_ctx, "\tallow_high_precision_mv = %d\n", p->pic_fields.bits.allow_high_precision_mv);
4938     va_TraceMsg(trace_ctx, "\tmcomp_filter_type = %d\n", p->pic_fields.bits.mcomp_filter_type);
4939     va_TraceMsg(trace_ctx, "\tframe_parallel_decoding_mode = %d\n", p->pic_fields.bits.frame_parallel_decoding_mode);
4940     va_TraceMsg(trace_ctx, "\treset_frame_context = %d\n", p->pic_fields.bits.reset_frame_context);
4941     va_TraceMsg(trace_ctx, "\trefresh_frame_context = %d\n", p->pic_fields.bits.refresh_frame_context);
4942     va_TraceMsg(trace_ctx, "\tframe_context_idx = %d\n", p->pic_fields.bits.frame_context_idx);
4943     va_TraceMsg(trace_ctx, "\tsegmentation_enabled = %d\n", p->pic_fields.bits.segmentation_enabled);
4944     va_TraceMsg(trace_ctx, "\tsegmentation_temporal_update = %d\n", p->pic_fields.bits.segmentation_temporal_update);
4945     va_TraceMsg(trace_ctx, "\tsegmentation_update_map = %d\n", p->pic_fields.bits.segmentation_update_map);
4946     va_TraceMsg(trace_ctx, "\tlast_ref_frame = %d\n", p->pic_fields.bits.last_ref_frame);
4947     va_TraceMsg(trace_ctx, "\tlast_ref_frame_sign_bias = %d\n",    p->pic_fields.bits.last_ref_frame_sign_bias);
4948     va_TraceMsg(trace_ctx, "\tgolden_ref_frame = %d\n",    p->pic_fields.bits.golden_ref_frame);
4949     va_TraceMsg(trace_ctx, "\tgolden_ref_frame_sign_bias = %d\n", p->pic_fields.bits.golden_ref_frame_sign_bias);
4950     va_TraceMsg(trace_ctx, "\talt_ref_frame = %d\n", p->pic_fields.bits.alt_ref_frame);
4951     va_TraceMsg(trace_ctx, "\talt_ref_frame_sign_bias = %d\n", p->pic_fields.bits.alt_ref_frame_sign_bias);
4952     va_TraceMsg(trace_ctx, "\tlossless_flag = %d\n", p->pic_fields.bits.lossless_flag);
4953 
4954     va_TraceMsg(trace_ctx, "\tfilter_level = %d\n", p->filter_level);
4955     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
4956     va_TraceMsg(trace_ctx, "\tlog2_tile_rows = %d\n", p->log2_tile_rows);
4957     va_TraceMsg(trace_ctx, "\tlog2_tile_columns = %d\n", p->log2_tile_columns);
4958     va_TraceMsg(trace_ctx, "\tframe_header_length_in_bytes = %d\n", p->frame_header_length_in_bytes);
4959     va_TraceMsg(trace_ctx, "\tfirst_partition_size = %d\n", p->first_partition_size);
4960 
4961     va_TraceMsg(trace_ctx, "\tmb_segment_tree_probs[7]: [0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x]\n",
4962                 p->mb_segment_tree_probs[0], p->mb_segment_tree_probs[1],
4963                 p->mb_segment_tree_probs[2], p->mb_segment_tree_probs[3],
4964                 p->mb_segment_tree_probs[4], p->mb_segment_tree_probs[5],
4965                 p->mb_segment_tree_probs[6]);
4966 
4967     va_TraceMsg(trace_ctx, "\tsegment_pred_probs[3]: [0x%02x, 0x%02x, 0x%02x]\n", p->segment_pred_probs[0], p->segment_pred_probs[1], p->segment_pred_probs[2]);
4968 
4969     va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->profile);
4970     va_TraceMsg(trace_ctx, "\tbit_depth = %d\n", p->bit_depth);
4971 
4972     va_TraceMsg(trace_ctx, NULL);
4973 
4974     return;
4975 }
4976 
va_TraceVAEncSequenceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)4977 static void va_TraceVAEncSequenceParameterBufferAV1(
4978     VADisplay dpy,
4979     VAContextID context,
4980     VABufferID buffer,
4981     VABufferType type,
4982     unsigned int size,
4983     unsigned int num_elements,
4984     void *data)
4985 {
4986     VAEncSequenceParameterBufferAV1 *p = (VAEncSequenceParameterBufferAV1 *)data;
4987     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
4988 
4989     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferAV1\n");
4990 
4991     va_TraceMsg(trace_ctx, "\tseq_profile = %d\n", p->seq_profile);
4992     va_TraceMsg(trace_ctx, "\tseq_level_idx = %d\n", p->seq_level_idx);
4993     va_TraceMsg(trace_ctx, "\tseq_tier = %d\n", p->seq_tier);
4994     va_TraceMsg(trace_ctx, "\thierarchical_flag = %d\n", p->hierarchical_flag);
4995     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
4996     va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
4997     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
4998 
4999     va_TraceMsg(trace_ctx, "\tseq_fields.still_picture = %d\n", p->seq_fields.bits.still_picture);
5000     va_TraceMsg(trace_ctx, "\tseq_fields.use_128x128_superblock = %d\n", p->seq_fields.bits.use_128x128_superblock);
5001     va_TraceMsg(trace_ctx, "\tseq_fields.enable_filter_intra = %d\n", p->seq_fields.bits.enable_filter_intra);
5002     va_TraceMsg(trace_ctx, "\tseq_fields.enable_intra_edge_filter = %d\n", p->seq_fields.bits.enable_intra_edge_filter);
5003     va_TraceMsg(trace_ctx, "\tseq_fields.enable_interintra_compound = %d\n", p->seq_fields.bits.enable_interintra_compound);
5004     va_TraceMsg(trace_ctx, "\tseq_fields.enable_masked_compound = %d\n", p->seq_fields.bits.enable_masked_compound);
5005     va_TraceMsg(trace_ctx, "\tseq_fields.enable_warped_motion = %d\n", p->seq_fields.bits.enable_warped_motion);
5006     va_TraceMsg(trace_ctx, "\tseq_fields.enable_dual_filter = %d\n", p->seq_fields.bits.enable_dual_filter);
5007     va_TraceMsg(trace_ctx, "\tseq_fields.enable_order_hint = %d\n", p->seq_fields.bits.enable_order_hint);
5008     va_TraceMsg(trace_ctx, "\tseq_fields.enable_jnt_comp = %d\n", p->seq_fields.bits.enable_jnt_comp);
5009     va_TraceMsg(trace_ctx, "\tseq_fields.enable_ref_frame_mvs = %d\n", p->seq_fields.bits.enable_ref_frame_mvs);
5010     va_TraceMsg(trace_ctx, "\tseq_fields.enable_superres = %d\n", p->seq_fields.bits.enable_superres);
5011     va_TraceMsg(trace_ctx, "\tseq_fields.enable_cdef = %d\n", p->seq_fields.bits.enable_cdef);
5012     va_TraceMsg(trace_ctx, "\tseq_fields.enable_restoration = %d\n", p->seq_fields.bits.enable_restoration);
5013     va_TraceMsg(trace_ctx, "\tseq_fields.bit_depth_minus8 = %d\n", p->seq_fields.bits.bit_depth_minus8);
5014     va_TraceMsg(trace_ctx, "\tseq_fields.subsampling_x = %d\n", p->seq_fields.bits.subsampling_x);
5015     va_TraceMsg(trace_ctx, "\tseq_fields.subsampling_y = %d\n", p->seq_fields.bits.subsampling_y);
5016 
5017     va_TraceMsg(trace_ctx, "\torder_hint_bits_minus_1 = %d\n", p->order_hint_bits_minus_1);
5018 
5019     va_TraceMsg(trace_ctx, NULL);
5020 
5021     return;
5022 }
5023 
va_TraceVAEncPictureParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5024 static void va_TraceVAEncPictureParameterBufferAV1(
5025     VADisplay dpy,
5026     VAContextID context,
5027     VABufferID buffer,
5028     VABufferType type,
5029     unsigned int size,
5030     unsigned int num_elements,
5031     void *data)
5032 {
5033     VAEncPictureParameterBufferAV1 *p = (VAEncPictureParameterBufferAV1 *)data;
5034     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5035     int i, j;
5036 
5037     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferAV1\n");
5038 
5039     va_TraceMsg(trace_ctx, "\tframe_width_minus_1 = %d\n", p->frame_width_minus_1);
5040     va_TraceMsg(trace_ctx, "\tframe_height_minus_1 = %d\n", p->frame_height_minus_1);
5041     va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5042     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
5043 
5044     for (i = 0; i < 8; i++)
5045         va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
5046     for (i = 0; i < 7; i++)
5047         va_TraceMsg(trace_ctx, "\tref_frame_idx[%d] = %d\n", i, p->ref_frame_idx[i]);
5048 
5049     va_TraceMsg(trace_ctx, "\thierarchical_level_plus1 = %d\n", p->hierarchical_level_plus1);
5050     va_TraceMsg(trace_ctx, "\tprimary_ref_frame = %d\n", p->primary_ref_frame);
5051     va_TraceMsg(trace_ctx, "\torder_hint = %d\n", p->order_hint);
5052     va_TraceMsg(trace_ctx, "\trefresh_frame_flags = %d\n", p->refresh_frame_flags);
5053 
5054     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx0 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx0);
5055     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx1 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx1);
5056     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx2 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx2);
5057     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx3 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx3);
5058     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx4 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx4);
5059     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx5 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx5);
5060     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx6 = %d\n", p->ref_frame_ctrl_l0.fields.search_idx6);
5061     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx0 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx0);
5062     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx1 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx1);
5063     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx2 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx2);
5064     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx3 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx3);
5065     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx4 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx4);
5066     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx5 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx5);
5067     va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx6 = %d\n", p->ref_frame_ctrl_l1.fields.search_idx6);
5068 
5069     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.frame_type = %d\n", p->picture_flags.bits.frame_type);
5070     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.error_resilient_mode = %d\n", p->picture_flags.bits.error_resilient_mode);
5071     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_cdf_update = %d\n", p->picture_flags.bits.disable_cdf_update);
5072     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_superres = %d\n", p->picture_flags.bits.use_superres);
5073     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_high_precision_mv = %d\n", p->picture_flags.bits.allow_high_precision_mv);
5074     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_ref_frame_mvs = %d\n", p->picture_flags.bits.use_ref_frame_mvs);
5075     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_end_update_cdf = %d\n", p->picture_flags.bits.disable_frame_end_update_cdf);
5076     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.reduced_tx_set = %d\n", p->picture_flags.bits.reduced_tx_set);
5077     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.enable_frame_obu = %d\n", p->picture_flags.bits.enable_frame_obu);
5078     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.long_term_reference = %d\n", p->picture_flags.bits.long_term_reference);
5079     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_recon = %d\n", p->picture_flags.bits.disable_frame_recon);
5080     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_intrabc = %d\n", p->picture_flags.bits.allow_intrabc);
5081     va_TraceMsg(trace_ctx, "\tpicture_flags.bits.palette_mode_enable = %d\n", p->picture_flags.bits.palette_mode_enable);
5082 
5083     va_TraceMsg(trace_ctx, "\tseg_id_block_size = %d\n", p->seg_id_block_size);
5084     va_TraceMsg(trace_ctx, "\tnum_tile_groups_minus1 = %d\n", p->num_tile_groups_minus1);
5085     va_TraceMsg(trace_ctx, "\ttemporal_id = %d\n", p->temporal_id);
5086 
5087     for (i = 0; i < 2; i++)
5088         va_TraceMsg(trace_ctx, "\tfilter_level[%d] = %d\n", i, p->filter_level[i]);
5089 
5090     va_TraceMsg(trace_ctx, "\tfilter_level_u = %d\n", p->filter_level_u);
5091     va_TraceMsg(trace_ctx, "\tfilter_level_v = %d\n", p->filter_level_v);
5092 
5093     va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.sharpness_level = %d\n", p->loop_filter_flags.bits.sharpness_level);
5094     va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_enabled = %d\n", p->loop_filter_flags.bits.mode_ref_delta_enabled);
5095     va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_update = %d\n", p->loop_filter_flags.bits.mode_ref_delta_update);
5096 
5097     va_TraceMsg(trace_ctx, "\tsuperres_scale_denominator = %d\n", p->superres_scale_denominator);
5098     va_TraceMsg(trace_ctx, "\tinterpolation_filter = %d\n", p->interpolation_filter);
5099 
5100     for (i = 0; i < 8; i++)
5101         va_TraceMsg(trace_ctx, "\tref_deltas[%d] = %d\n", i, p->ref_deltas[i]);
5102     for (i = 0; i < 2; i++)
5103         va_TraceMsg(trace_ctx, "\tmode_deltas[%d] = %d\n", i, p->mode_deltas[i]);
5104 
5105     va_TraceMsg(trace_ctx, "\tbase_qindex = %d\n", p->base_qindex);
5106     va_TraceMsg(trace_ctx, "\ty_dc_delta_q = %d\n", p->y_dc_delta_q);
5107     va_TraceMsg(trace_ctx, "\tu_dc_delta_q = %d\n", p->u_dc_delta_q);
5108     va_TraceMsg(trace_ctx, "\tu_ac_delta_q = %d\n", p->u_ac_delta_q);
5109     va_TraceMsg(trace_ctx, "\tv_dc_delta_q = %d\n", p->v_dc_delta_q);
5110     va_TraceMsg(trace_ctx, "\tv_ac_delta_q = %d\n", p->v_ac_delta_q);
5111     va_TraceMsg(trace_ctx, "\tmin_base_qindex = %d\n", p->min_base_qindex);
5112     va_TraceMsg(trace_ctx, "\tmax_base_qindex = %d\n", p->max_base_qindex);
5113 
5114     va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.using_qmatrix = %d\n", p->qmatrix_flags.bits.using_qmatrix);
5115     va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_y = %d\n", p->qmatrix_flags.bits.qm_y);
5116     va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_u = %d\n", p->qmatrix_flags.bits.qm_u);
5117     va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_v = %d\n", p->qmatrix_flags.bits.qm_v);
5118 
5119     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_present = %d\n", p->mode_control_flags.bits.delta_q_present);
5120     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_res = %d\n", p->mode_control_flags.bits.delta_q_res);
5121     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_present = %d\n", p->mode_control_flags.bits.delta_lf_present);
5122     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_res = %d\n", p->mode_control_flags.bits.delta_lf_res);
5123     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_multi = %d\n", p->mode_control_flags.bits.delta_lf_multi);
5124     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.tx_mode = %d\n", p->mode_control_flags.bits.tx_mode);
5125     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.reference_mode = %d\n", p->mode_control_flags.bits.reference_mode);
5126     va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.skip_mode_present = %d\n", p->mode_control_flags.bits.skip_mode_present);
5127 
5128     va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_enabled = %d\n", p->segments.seg_flags.bits.segmentation_enabled);
5129     va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_update_map = %d\n", p->segments.seg_flags.bits.segmentation_update_map);
5130     va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_temporal_update = %d\n", p->segments.seg_flags.bits.segmentation_temporal_update);
5131     va_TraceMsg(trace_ctx, "\tsegments.segment_number = %d\n", p->segments.segment_number);
5132 
5133     for (i = 0; i < 8; i++) {
5134         for (j = 0; j < 8; j++)
5135             va_TraceMsg(trace_ctx, "\tsegments.feature_data[%d][%d] = %d\n", i, j, p->segments.feature_data[i][j]);
5136     }
5137     for (i = 0; i < 8; i++)
5138         va_TraceMsg(trace_ctx, "\tsegments.feature_mask[%d] = %d\n", i, p->segments.feature_mask[i]);
5139 
5140     va_TraceMsg(trace_ctx, "\ttile_cols = %d\n", p->tile_cols);
5141     va_TraceMsg(trace_ctx, "\ttile_rows = %d\n", p->tile_rows);
5142 
5143     for (i = 0; i < 63; i++)
5144         va_TraceMsg(trace_ctx, "\twidth_in_sbs_minus_1[%d] = %d\n", i, p->width_in_sbs_minus_1[i]);
5145     for (i = 0; i < 63; i++)
5146         va_TraceMsg(trace_ctx, "\theight_in_sbs_minus_1[%d] = %d\n", i, p->height_in_sbs_minus_1[i]);
5147 
5148     va_TraceMsg(trace_ctx, "\tcontext_update_tile_id = %d\n", p->context_update_tile_id);
5149     va_TraceMsg(trace_ctx, "\tcdef_damping_minus_3 = %d\n", p->cdef_damping_minus_3);
5150     va_TraceMsg(trace_ctx, "\tcdef_bits= %d\n", p->cdef_bits);
5151 
5152     for (i = 0; i < 8; i++)
5153         va_TraceMsg(trace_ctx, "\tcdef_y_strengths[%d] = %d\n", i, p->cdef_y_strengths[i]);
5154     for (i = 0; i < 8; i++)
5155         va_TraceMsg(trace_ctx, "\tcdef_uv_strengths[%d] = %d\n", i, p->cdef_uv_strengths[i]);
5156 
5157     va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.yframe_restoration_type = %d\n", p->loop_restoration_flags.bits.yframe_restoration_type);
5158     va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.cbframe_restoration_type = %d\n", p->loop_restoration_flags.bits.cbframe_restoration_type);
5159     va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.crframe_restoration_type = %d\n", p->loop_restoration_flags.bits.crframe_restoration_type);
5160     va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_unit_shift = %d\n", p->loop_restoration_flags.bits.lr_unit_shift);
5161     va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_uv_shift = %d\n", p->loop_restoration_flags.bits.lr_uv_shift);
5162 
5163     for (i = 0; i < 7; i++) {
5164         va_TraceMsg(trace_ctx, "\twm[%d].wmtype= %d\n", i, p->wm[i].wmtype);
5165         for (j = 0; j < 8; j++)
5166             va_TraceMsg(trace_ctx, "\twm[%d].wmmat[%d]= %d\n", i, j, p->wm[i].wmmat[j]);
5167         va_TraceMsg(trace_ctx, "\twm[%d].invalid= %d\n", i, p->wm[i].invalid);
5168     }
5169 
5170     va_TraceMsg(trace_ctx, "\tbit_offset_qindex = %d\n", p->bit_offset_qindex);
5171     va_TraceMsg(trace_ctx, "\tbit_offset_segmentation = %d\n", p->bit_offset_segmentation);
5172     va_TraceMsg(trace_ctx, "\tbit_offset_loopfilter_params = %d\n", p->bit_offset_loopfilter_params);
5173     va_TraceMsg(trace_ctx, "\tbit_offset_cdef_params = %d\n", p->bit_offset_cdef_params);
5174     va_TraceMsg(trace_ctx, "\tsize_in_bits_cdef_params = %d\n", p->size_in_bits_cdef_params);
5175     va_TraceMsg(trace_ctx, "\tbyte_offset_frame_hdr_obu_size = %d\n", p->byte_offset_frame_hdr_obu_size);
5176     va_TraceMsg(trace_ctx, "\tsize_in_bits_frame_hdr_obu = %d\n", p->size_in_bits_frame_hdr_obu);
5177 
5178     va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_extension_flag = %d\n", p->tile_group_obu_hdr_info.bits.obu_extension_flag);
5179     va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_has_size_field = %d\n", p->tile_group_obu_hdr_info.bits.obu_has_size_field);
5180     va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.temporal_id = %d\n", p->tile_group_obu_hdr_info.bits.temporal_id);
5181     va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.spatial_id = %d\n", p->tile_group_obu_hdr_info.bits.spatial_id);
5182 
5183     va_TraceMsg(trace_ctx, "\tnumber_skip_frames = %d\n", p->number_skip_frames);
5184     va_TraceMsg(trace_ctx, "\tskip_frames_reduced_size = %d\n", p->skip_frames_reduced_size);
5185 
5186     va_TraceMsg(trace_ctx, NULL);
5187 
5188     return;
5189 }
5190 
va_TraceVAEncSliceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5191 static void va_TraceVAEncSliceParameterBufferAV1(
5192     VADisplay dpy,
5193     VAContextID context,
5194     VABufferID buffer,
5195     VABufferType type,
5196     unsigned int size,
5197     unsigned int num_elements,
5198     void *data)
5199 {
5200     VAEncTileGroupBufferAV1* p = (VAEncTileGroupBufferAV1*)data;
5201     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5202 
5203     if (!p)
5204         return;
5205 
5206     va_TraceMsg(trace_ctx, "\t--VAEncTileGroupBufferAV1\n");
5207     va_TraceMsg(trace_ctx, "\ttg_start = %u\n", p->tg_start);
5208     va_TraceMsg(trace_ctx, "\ttg_end = %u\n", p->tg_end);
5209 
5210     va_TraceMsg(trace_ctx, NULL);
5211 
5212     return;
5213 }
5214 
va_TraceVAPictureParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5215 static void va_TraceVAPictureParameterBufferAV1(
5216     VADisplay dpy,
5217     VAContextID context,
5218     VABufferID buffer,
5219     VABufferType type,
5220     unsigned int size,
5221     unsigned int num_elements,
5222     void *data)
5223 {
5224     VADecPictureParameterBufferAV1 *p = (VADecPictureParameterBufferAV1 *)data;
5225     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5226     int i, j;
5227 
5228     va_TraceMsg(trace_ctx, "\t--VAPictureParameterBufferAV1\n");
5229 
5230     va_TraceMsg(trace_ctx, "\tprofile = %d\n", p->profile);
5231     va_TraceMsg(trace_ctx, "\torder_hint_bits_minus_1 = %d\n", p->order_hint_bits_minus_1);
5232     va_TraceMsg(trace_ctx, "\tbit_depth_idx = %d\n", p->bit_depth_idx);
5233     va_TraceMsg(trace_ctx, "\tmatrix_coefficients = %d\n", p->matrix_coefficients);
5234 
5235     va_TraceMsg(trace_ctx, "\tseq_info_fields = %X\n", p->seq_info_fields.value);
5236     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.still_picture = %d\n", p->seq_info_fields.fields.still_picture);
5237     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.use_128x128_superblock = %d\n", p->seq_info_fields.fields.use_128x128_superblock);
5238     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_filter_intra = %d\n", p->seq_info_fields.fields.enable_filter_intra);
5239     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_intra_edge_filter = %d\n", p->seq_info_fields.fields.enable_intra_edge_filter);
5240     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_interintra_compound = %d\n", p->seq_info_fields.fields.enable_interintra_compound);
5241     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_masked_compound = %d\n", p->seq_info_fields.fields.enable_masked_compound);
5242     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_dual_filter = %d\n", p->seq_info_fields.fields.enable_dual_filter);
5243     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_order_hint = %d\n", p->seq_info_fields.fields.enable_order_hint);
5244     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_jnt_comp = %d\n", p->seq_info_fields.fields.enable_jnt_comp);
5245     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.enable_cdef = %d\n", p->seq_info_fields.fields.enable_cdef);
5246     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.mono_chrome = %d\n", p->seq_info_fields.fields.mono_chrome);
5247     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.color_range = %d\n", p->seq_info_fields.fields.color_range);
5248     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.subsampling_x = %d\n", p->seq_info_fields.fields.subsampling_x);
5249     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.subsampling_y = %d\n", p->seq_info_fields.fields.subsampling_y);
5250     va_TraceMsg(trace_ctx, "\t\tseq_info_fields.film_grain_params_present = %d\n", p->seq_info_fields.fields.film_grain_params_present);
5251 
5252     va_TraceMsg(trace_ctx, "\tcurrent_frame = %X\n", p->current_frame);
5253     va_TraceMsg(trace_ctx, "\tcurrent_display_picture = %X\n", p->current_display_picture);
5254 
5255     va_TraceMsg(trace_ctx, "\tanchor_frames_num = %d\n", p->anchor_frames_num);
5256     for (i = 0; i < p->anchor_frames_num; i++)
5257         va_TraceMsg(trace_ctx, "\t\tanchor_frames_list[%d] = %X\n", i, p->anchor_frames_list[i]);
5258 
5259     va_TraceMsg(trace_ctx, "\tframe_width_minus_1 = %d\n", p->frame_width_minus1);
5260     va_TraceMsg(trace_ctx, "\tframe_height_minus1 = %d\n", p->frame_height_minus1);
5261     va_TraceMsg(trace_ctx, "\toutput_frame_width_in_tiles_minus_1 = %d\n", p->output_frame_width_in_tiles_minus_1);
5262     va_TraceMsg(trace_ctx, "\toutput_frame_height_in_tiles_minus_1 = %d\n", p->output_frame_height_in_tiles_minus_1);
5263 
5264     for (i = 0; i < 8; i++)
5265         va_TraceMsg(trace_ctx, "\tref_frame_map[%d] = %X\n", i, p->ref_frame_map[i]);
5266     for (i = 0; i < 7; i++)
5267         va_TraceMsg(trace_ctx, "\tref_frame_idx[%d] = %d\n", i, p->ref_frame_idx[i]);
5268     va_TraceMsg(trace_ctx, "\tprimary_ref_frame = %d\n", p->primary_ref_frame);
5269 
5270     va_TraceMsg(trace_ctx, "\torder_hint = %d\n", p->order_hint);
5271 
5272     va_TraceMsg(trace_ctx, "\tseg_info:\n");
5273     va_TraceMsg(trace_ctx, "\t\tseg_info.segment_info_fields = %d\n", p->seg_info.segment_info_fields.value);
5274     va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.enabled = %d\n", p->seg_info.segment_info_fields.bits.enabled);
5275     va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.update_map = %d\n", p->seg_info.segment_info_fields.bits.update_map);
5276     va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.temporal_update = %d\n", p->seg_info.segment_info_fields.bits.temporal_update);
5277     va_TraceMsg(trace_ctx, "\t\t\tseg_info.segment_info_fields.bits.update_data = %d\n", p->seg_info.segment_info_fields.bits.update_data);
5278     for (i = 0; i < 8; i++)
5279         for (j = 0; j < 8; j++)
5280             va_TraceMsg(trace_ctx, "\t\tseg_info.feature_data[%d][%d] = %d\n", i, j, p->seg_info.feature_data[i][j]);
5281     for (i = 0; i < 8; i++)
5282         va_TraceMsg(trace_ctx, "\t\tseg_info.feature_mask[%d] = %d\n", i, p->seg_info.feature_mask[i]);
5283 
5284     va_TraceMsg(trace_ctx, "\tfilm_grain_info:\n");
5285     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.film_grain_info_fields = %d\n", p->film_grain_info.film_grain_info_fields.value);
5286     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.apply_grain = %d\n", p->film_grain_info.film_grain_info_fields.bits.apply_grain);
5287     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.chroma_scaling_from_luma = %d\n", p->film_grain_info.film_grain_info_fields.bits.chroma_scaling_from_luma);
5288     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.grain_scaling_minus_8 = %d\n", p->film_grain_info.film_grain_info_fields.bits.grain_scaling_minus_8);
5289     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.ar_coeff_lag = %d\n", p->film_grain_info.film_grain_info_fields.bits.ar_coeff_lag);
5290     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.ar_coeff_shift_minus_6 = %d\n", p->film_grain_info.film_grain_info_fields.bits.ar_coeff_shift_minus_6);
5291     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.grain_scale_shift = %d\n", p->film_grain_info.film_grain_info_fields.bits.grain_scale_shift);
5292     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.overlap_flag = %d\n", p->film_grain_info.film_grain_info_fields.bits.overlap_flag);
5293     va_TraceMsg(trace_ctx, "\t\t\tfilm_grain_info.film_grain_info_fields.clip_to_restricted_range = %d\n", p->film_grain_info.film_grain_info_fields.bits.clip_to_restricted_range);
5294     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.grain_seed = %d\n", p->film_grain_info.grain_seed);
5295     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_y_points = %d\n", p->film_grain_info.num_y_points);
5296     for (i = 0; i < 14; i++)
5297         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_y_value[%d] = %d\n", i, p->film_grain_info.point_y_value[i]);
5298     for (i = 0; i < 14; i++)
5299         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_y_scaling[%d] = %d\n", i, p->film_grain_info.point_y_scaling[i]);
5300     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_cb_points = %d\n", p->film_grain_info.num_cb_points);
5301     for (i = 0; i < 10; i++)
5302         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cb_value[%d] = %d\n", i, p->film_grain_info.point_cb_value[i]);
5303     for (i = 0; i < 10; i++)
5304         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cb_scaling[%d] = %d\n", i, p->film_grain_info.point_cb_scaling[i]);
5305     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.num_cr_points = %d\n", p->film_grain_info.num_cr_points);
5306     for (i = 0; i < 10; i++)
5307         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cr_value[%d] = %d\n", i, p->film_grain_info.point_cr_value[i]);
5308     for (i = 0; i < 10; i++)
5309         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.point_cr_scaling[%d] = %d\n", i, p->film_grain_info.point_cr_scaling[i]);
5310     for (i = 0; i < 24; i++)
5311         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_y[%d] = %d\n", i, p->film_grain_info.ar_coeffs_y[i]);
5312     for (i = 0; i < 25; i++)
5313         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_cb[%d] = %d\n", i, p->film_grain_info.ar_coeffs_cb[i]);
5314     for (i = 0; i < 25; i++)
5315         va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.ar_coeffs_cr[%d] = %d\n", i, p->film_grain_info.ar_coeffs_cr[i]);
5316     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_mult = %d\n", p->film_grain_info.cb_mult);
5317     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_luma_mult = %d\n", p->film_grain_info.cb_luma_mult);
5318     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cb_offset = %d\n", p->film_grain_info.cb_offset);
5319     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_mult = %d\n", p->film_grain_info.cr_mult);
5320     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_luma_mult = %d\n", p->film_grain_info.cr_luma_mult);
5321     va_TraceMsg(trace_ctx, "\t\tfilm_grain_info.cr_offset = %d\n", p->film_grain_info.cr_offset);
5322 
5323     va_TraceMsg(trace_ctx, "\ttile_cols = %d\n", p->tile_cols);
5324     va_TraceMsg(trace_ctx, "\ttile_rows = %d\n", p->tile_rows);
5325     for (i = 0; i < 63; i++)
5326         va_TraceMsg(trace_ctx, "\twidth_in_sbs_minus_1[%d] = %d\n", i, p->width_in_sbs_minus_1[i]);
5327     for (i = 0; i < 63; i++)
5328         va_TraceMsg(trace_ctx, "\theight_in_sbs_minus_1[%d] = %d\n", i, p->height_in_sbs_minus_1[i]);
5329     va_TraceMsg(trace_ctx, "\ttile_count_minus_1 = %d\n", p->tile_count_minus_1);
5330     va_TraceMsg(trace_ctx, "\tcontext_update_tile_id = %d\n", p->context_update_tile_id);
5331 
5332     va_TraceMsg(trace_ctx, "\tpic_info_fields = %X\n", p->pic_info_fields.value);
5333     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.frame_type = %d\n", p->pic_info_fields.bits.frame_type);
5334     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.show_frame = %d\n", p->pic_info_fields.bits.show_frame);
5335     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.showable_frame = %d\n", p->pic_info_fields.bits.showable_frame);
5336     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.error_resilient_mode = %d\n", p->pic_info_fields.bits.error_resilient_mode);
5337     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.disable_cdf_update = %d\n", p->pic_info_fields.bits.disable_cdf_update);
5338     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_screen_content_tools = %d\n", p->pic_info_fields.bits.allow_screen_content_tools);
5339     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.force_integer_mv = %d\n", p->pic_info_fields.bits.force_integer_mv);
5340     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_intrabc = %d\n", p->pic_info_fields.bits.allow_intrabc);
5341     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.use_superres = %d\n", p->pic_info_fields.bits.use_superres);
5342     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_high_precision_mv = %d\n", p->pic_info_fields.bits.allow_high_precision_mv);
5343     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.is_motion_mode_switchable = %d\n", p->pic_info_fields.bits.is_motion_mode_switchable);
5344     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.use_ref_frame_mvs = %d\n", p->pic_info_fields.bits.use_ref_frame_mvs);
5345     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.disable_frame_end_update_cdf = %d\n", p->pic_info_fields.bits.disable_frame_end_update_cdf);
5346     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.uniform_tile_spacing_flag = %d\n", p->pic_info_fields.bits.uniform_tile_spacing_flag);
5347     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.allow_warped_motion = %d\n", p->pic_info_fields.bits.allow_warped_motion);
5348     va_TraceMsg(trace_ctx, "\t\tpic_info_fields.large_scale_tile = %d\n", p->pic_info_fields.bits.large_scale_tile);
5349 
5350     va_TraceMsg(trace_ctx, "\tsuperres_scale_denominator = %d\n", p->superres_scale_denominator);
5351 
5352     va_TraceMsg(trace_ctx, "\tinterp_filter = %d\n", p->interp_filter);
5353     va_TraceMsg(trace_ctx, "\tfilter_level[0] = %d\n", p->filter_level[0]);
5354     va_TraceMsg(trace_ctx, "\tfilter_level[1] = %d\n", p->filter_level[1]);
5355     va_TraceMsg(trace_ctx, "\tfilter_level_u = %d\n", p->filter_level_u);
5356     va_TraceMsg(trace_ctx, "\tfilter_level_v = %d\n", p->filter_level_v);
5357 
5358     va_TraceMsg(trace_ctx, "\tloop_filter_info_fields = %X\n", p->loop_filter_info_fields.value);
5359     va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.sharpness_level = %d\n", p->loop_filter_info_fields.bits.sharpness_level);
5360     va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.mode_ref_delta_enabled = %d\n", p->loop_filter_info_fields.bits.mode_ref_delta_enabled);
5361     va_TraceMsg(trace_ctx, "\t\tloop_filter_info_fields.bits.mode_ref_delta_update = %d\n", p->loop_filter_info_fields.bits.mode_ref_delta_update);
5362 
5363     for (i = 0; i < 8; i++)
5364         va_TraceMsg(trace_ctx, "\tref_deltas[%d] = %d\n", i, p->ref_deltas[i]);
5365     for (i = 0; i < 2; i++)
5366         va_TraceMsg(trace_ctx, "\tmode_deltas[%d] = %d\n", i, p->mode_deltas[i]);
5367 
5368     va_TraceMsg(trace_ctx, "\tbase_qindex = %d\n", p->base_qindex);
5369     va_TraceMsg(trace_ctx, "\ty_dc_delta_q = %d\n", p->y_dc_delta_q);
5370     va_TraceMsg(trace_ctx, "\tu_dc_delta_q = %d\n", p->u_dc_delta_q);
5371     va_TraceMsg(trace_ctx, "\tu_ac_delta_q = %d\n", p->u_ac_delta_q);
5372     va_TraceMsg(trace_ctx, "\tv_dc_delta_q = %d\n", p->v_dc_delta_q);
5373     va_TraceMsg(trace_ctx, "\tv_ac_delta_q = %d\n", p->v_ac_delta_q);
5374 
5375     va_TraceMsg(trace_ctx, "\tqmatrix_fields = %X\n", p->qmatrix_fields.value);
5376     va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.using_qmatrix = %d\n", p->qmatrix_fields.bits.using_qmatrix);
5377     va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_y = %d\n", p->qmatrix_fields.bits.qm_y);
5378     va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_u = %d\n", p->qmatrix_fields.bits.qm_u);
5379     va_TraceMsg(trace_ctx, "\t\tqmatrix_fields.bits.qm_v = %d\n", p->qmatrix_fields.bits.qm_v);
5380 
5381     va_TraceMsg(trace_ctx, "\tmode_control_fields = %X\n", p->mode_control_fields.value);
5382     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_q_present_flag = %d\n", p->mode_control_fields.bits.delta_q_present_flag);
5383     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.log2_delta_q_res = %d\n", p->mode_control_fields.bits.log2_delta_q_res);
5384     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_lf_present_flag = %d\n", p->mode_control_fields.bits.delta_lf_present_flag);
5385     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.log2_delta_lf_res = %d\n", p->mode_control_fields.bits.log2_delta_lf_res);
5386     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.delta_lf_multi = %d\n", p->mode_control_fields.bits.delta_lf_multi);
5387     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.tx_mode = %d\n", p->mode_control_fields.bits.tx_mode);
5388     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.reference_select = %d\n", p->mode_control_fields.bits.reference_select);
5389     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.reduced_tx_set_used = %d\n", p->mode_control_fields.bits.reduced_tx_set_used);
5390     va_TraceMsg(trace_ctx, "\t\tmode_control_fields.skip_mode_present = %d\n", p->mode_control_fields.bits.skip_mode_present);
5391 
5392     va_TraceMsg(trace_ctx, "\tcdef_damping_minus_3 = %X\n", p->cdef_damping_minus_3);
5393     va_TraceMsg(trace_ctx, "\tcdef_bits = %X\n", p->cdef_bits);
5394     for (i = 0; i < 8; i++)
5395         va_TraceMsg(trace_ctx, "\tcdef_y_strengths[%d] = %d\n", i, p->cdef_y_strengths[i]);
5396     for (i = 0; i < 8; i++)
5397         va_TraceMsg(trace_ctx, "\tcdef_uv_strengths[%d] = %d\n", i, p->cdef_uv_strengths[i]);
5398 
5399     va_TraceMsg(trace_ctx, "\tloop_restoration_fields = %X\n", p->loop_restoration_fields.value);
5400     va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.yframe_restoration_type = %d\n", p->loop_restoration_fields.bits.yframe_restoration_type);
5401     va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.cbframe_restoration_type = %d\n", p->loop_restoration_fields.bits.cbframe_restoration_type);
5402     va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.crframe_restoration_type = %d\n", p->loop_restoration_fields.bits.crframe_restoration_type);
5403     va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.lr_unit_shift = %d\n", p->loop_restoration_fields.bits.lr_unit_shift);
5404     va_TraceMsg(trace_ctx, "\t\tloop_restoration_fields.bits.lr_uv_shift = %d\n", p->loop_restoration_fields.bits.lr_uv_shift);
5405 
5406     for (i = 0; i < 7; i++) {
5407         va_TraceMsg(trace_ctx, "\twm[%d]:\n", i);
5408         va_TraceMsg(trace_ctx, "\t\twm[%d].wmtype = %d:\n", i, p->wm[i].wmtype);
5409         for (j = 0; j < 8; j++)
5410             va_TraceMsg(trace_ctx, "\t\twm[%d].wmmat[%d] = %d:\n", i, j, p->wm[i].wmmat[j]);
5411         va_TraceMsg(trace_ctx, "\t\twm[%d].invalid = %d:\n", i, p->wm[i].invalid);
5412     }
5413 
5414     va_TraceMsg(trace_ctx, NULL);
5415 
5416     return;
5417 }
5418 
va_TraceVAEncPictureParameterBufferVP8(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5419 static void va_TraceVAEncPictureParameterBufferVP8(
5420     VADisplay dpy,
5421     VAContextID context,
5422     VABufferID buffer,
5423     VABufferType type,
5424     unsigned int size,
5425     unsigned int num_elements,
5426     void *data)
5427 {
5428     VAEncPictureParameterBufferVP8 *p = (VAEncPictureParameterBufferVP8 *)data;
5429     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5430     int i;
5431 
5432     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP8\n");
5433     va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5434     va_TraceMsg(trace_ctx, "\tref_last_frame = 0x%08x\n", p->ref_last_frame);
5435     va_TraceMsg(trace_ctx, "\tref_gf_frame = 0x%08x\n", p->ref_gf_frame);
5436     va_TraceMsg(trace_ctx, "\tref_arf_frame = 0x%08x\n", p->ref_arf_frame);
5437     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
5438 
5439     va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", p->ref_flags.bits.force_kf);
5440     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_last = %d\n", p->ref_flags.bits.no_ref_last);
5441     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_gf = %d\n", p->ref_flags.bits.no_ref_gf);
5442     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = %d\n", p->ref_flags.bits.no_ref_arf);
5443     va_TraceMsg(trace_ctx, "\tref_flags.bits.no_ref_arf = 0x%08x\n", p->ref_flags.bits.reserved);
5444 
5445     va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_type = %d\n", p->pic_flags.bits.frame_type);
5446     va_TraceMsg(trace_ctx, "\tpic_flags.bits.version = %d\n", p->pic_flags.bits.version);
5447     va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", p->pic_flags.bits.show_frame);
5448     va_TraceMsg(trace_ctx, "\tpic_flags.bits.color_space = %d\n", p->pic_flags.bits.color_space);
5449     va_TraceMsg(trace_ctx, "\tpic_flags.bits.recon_filter_type = %d\n", p->pic_flags.bits.recon_filter_type);
5450     va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_type = %d\n", p->pic_flags.bits.loop_filter_type);
5451     va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_partitions = %d\n", p->pic_flags.bits.auto_partitions);
5452     va_TraceMsg(trace_ctx, "\tpic_flags.bits.num_token_partitions = %d\n", p->pic_flags.bits.num_token_partitions);
5453     va_TraceMsg(trace_ctx, "\tpic_flags.bits.clamping_type = %d\n", p->pic_flags.bits.clamping_type);
5454     va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", p->pic_flags.bits.segmentation_enabled);
5455     va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_mb_segmentation_map = %d\n", p->pic_flags.bits.update_mb_segmentation_map);
5456     va_TraceMsg(trace_ctx, "\tpic_flags.bits.update_segment_feature_data = %d\n", p->pic_flags.bits.update_segment_feature_data);
5457     va_TraceMsg(trace_ctx, "\tpic_flags.bits.loop_filter_adj_enable = %d\n", p->pic_flags.bits.loop_filter_adj_enable);
5458     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_entropy_probs = %d\n", p->pic_flags.bits.refresh_entropy_probs);
5459     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_golden_frame = %d\n", p->pic_flags.bits.refresh_golden_frame);
5460     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_alternate_frame = %d\n", p->pic_flags.bits.refresh_alternate_frame);
5461     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_last = %d\n", p->pic_flags.bits.refresh_last);
5462     va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_golden = %d\n", p->pic_flags.bits.copy_buffer_to_golden);
5463     va_TraceMsg(trace_ctx, "\tpic_flags.bits.copy_buffer_to_alternate = %d\n", p->pic_flags.bits.copy_buffer_to_alternate);
5464 
5465     va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_golden = %d\n", p->pic_flags.bits.sign_bias_golden);
5466     va_TraceMsg(trace_ctx, "\tpic_flags.bits.sign_bias_alternate = %d\n", p->pic_flags.bits.sign_bias_alternate);
5467     va_TraceMsg(trace_ctx, "\tpic_flags.bits.mb_no_coeff_skip = %d\n", p->pic_flags.bits.mb_no_coeff_skip);
5468     va_TraceMsg(trace_ctx, "\tpic_flags.bits.forced_lf_adjustment = %d\n", p->pic_flags.bits.forced_lf_adjustment);
5469     va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", p->pic_flags.bits.reserved);
5470 
5471     for (i = 0; i < 4; i++)
5472         va_TraceMsg(trace_ctx, "\tloop_filter_level[%d] = %d\n", i, p->loop_filter_level[i]);
5473     for (i = 0; i < 4; i++)
5474         va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
5475     for (i = 0; i < 4; i++)
5476         va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
5477 
5478     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
5479     va_TraceMsg(trace_ctx, "\tclamp_qindex_high = %d\n", p->clamp_qindex_high);
5480     va_TraceMsg(trace_ctx, "\tclamp_qindex_low = %d\n", p->clamp_qindex_low);
5481 
5482     va_TraceMsg(trace_ctx, NULL);
5483 
5484     return;
5485 }
5486 
va_TraceVAEncPictureParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5487 static void va_TraceVAEncPictureParameterBufferVP9(
5488     VADisplay dpy,
5489     VAContextID context,
5490     VABufferID buffer,
5491     VABufferType type,
5492     unsigned int size,
5493     unsigned int num_elements,
5494     void *data)
5495 {
5496     VAEncPictureParameterBufferVP9 *p = (VAEncPictureParameterBufferVP9 *)data;
5497     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5498     int i;
5499 
5500     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferVP9\n");
5501     va_TraceMsg(trace_ctx, "\tframe_width_src = %d\n", p->frame_width_src);
5502     va_TraceMsg(trace_ctx, "\tframe_height_src = %d\n", p->frame_height_src);
5503     va_TraceMsg(trace_ctx, "\tframe_width_dst = %d\n", p->frame_width_dst);
5504     va_TraceMsg(trace_ctx, "\tframe_height_dst = %d\n", p->frame_height_dst);
5505     va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", p->reconstructed_frame);
5506 
5507     for (i = 0; i < 8; i++)
5508         va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, p->reference_frames[i]);
5509 
5510     va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%x\n", p->coded_buf);
5511 
5512     va_TraceMsg(trace_ctx, "\tref_flags.bits.force_kf = %d\n", p->ref_flags.bits.force_kf);
5513     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_frame_ctrl_l0 = %d\n", p->ref_flags.bits.ref_frame_ctrl_l0);
5514     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_frame_ctrl_l1 = %d\n", p->ref_flags.bits.ref_frame_ctrl_l1);
5515     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_last_idx = %d\n", p->ref_flags.bits.ref_last_idx);
5516     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_last_sign_bias = %d\n", p->ref_flags.bits.ref_last_sign_bias);
5517     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_gf_idx = %d\n", p->ref_flags.bits.ref_gf_idx);
5518     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_gf_sign_bias = %d\n", p->ref_flags.bits.ref_gf_sign_bias);
5519     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_arf_idx = %d\n", p->ref_flags.bits.ref_arf_idx);
5520     va_TraceMsg(trace_ctx, "\tref_flags.bits.ref_arf_sign_bias = %d\n", p->ref_flags.bits.ref_arf_sign_bias);
5521     va_TraceMsg(trace_ctx, "\tref_flags.bits.temporal_id = %d\n", p->ref_flags.bits.temporal_id);
5522     va_TraceMsg(trace_ctx, "\tref_flags.bits.reserved = %d\n", p->ref_flags.bits.reserved);
5523 
5524     va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_type = %d\n", p->pic_flags.bits.frame_type);
5525     va_TraceMsg(trace_ctx, "\tpic_flags.bits.show_frame = %d\n", p->pic_flags.bits.show_frame);
5526     va_TraceMsg(trace_ctx, "\tpic_flags.bits.error_resilient_mode = %d\n", p->pic_flags.bits.error_resilient_mode);
5527     va_TraceMsg(trace_ctx, "\tpic_flags.bits.intra_only = %d\n", p->pic_flags.bits.intra_only);
5528     va_TraceMsg(trace_ctx, "\tpic_flags.bits.allow_high_precision_mv = %d\n", p->pic_flags.bits.allow_high_precision_mv);
5529 
5530     va_TraceMsg(trace_ctx, "\tpic_flags.bits.mcomp_filter_type = %d\n", p->pic_flags.bits.mcomp_filter_type);
5531     va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_parallel_decoding_mode = %d\n", p->pic_flags.bits.frame_parallel_decoding_mode);
5532     va_TraceMsg(trace_ctx, "\tpic_flags.bits.reset_frame_context = %d\n", p->pic_flags.bits.reset_frame_context);
5533     va_TraceMsg(trace_ctx, "\tpic_flags.bits.refresh_frame_context = %d\n", p->pic_flags.bits.refresh_frame_context);
5534     va_TraceMsg(trace_ctx, "\tpic_flags.bits.frame_context_idx = %d\n", p->pic_flags.bits.frame_context_idx);
5535     va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_enabled = %d\n", p->pic_flags.bits.segmentation_enabled);
5536     va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_temporal_update = %d\n", p->pic_flags.bits.segmentation_temporal_update);
5537     va_TraceMsg(trace_ctx, "\tpic_flags.bits.segmentation_update_map = %d\n", p->pic_flags.bits.segmentation_update_map);
5538     va_TraceMsg(trace_ctx, "\tpic_flags.bits.lossless_mode = %d\n", p->pic_flags.bits.lossless_mode);
5539     va_TraceMsg(trace_ctx, "\tpic_flags.bits.comp_prediction_mode = %d\n", p->pic_flags.bits.comp_prediction_mode);
5540     va_TraceMsg(trace_ctx, "\tpic_flags.bits.auto_segmentation = %d\n", p->pic_flags.bits.auto_segmentation);
5541     va_TraceMsg(trace_ctx, "\tpic_flags.bits.super_frame_flag = %d\n", p->pic_flags.bits.super_frame_flag);
5542     va_TraceMsg(trace_ctx, "\tpic_flags.bits.reserved = %d\n", p->pic_flags.bits.reserved);
5543 
5544     va_TraceMsg(trace_ctx, "\trefresh_frame_flags = %d\n", p->refresh_frame_flags);
5545     va_TraceMsg(trace_ctx, "\tluma_ac_qindex = %d\n", p->luma_ac_qindex);
5546     va_TraceMsg(trace_ctx, "\tluma_dc_qindex_delta = %d\n", p->luma_dc_qindex_delta);
5547     va_TraceMsg(trace_ctx, "\tchroma_ac_qindex_delta = %d\n", p->chroma_ac_qindex_delta);
5548     va_TraceMsg(trace_ctx, "\tchroma_dc_qindex_delta = %d\n", p->chroma_dc_qindex_delta);
5549     va_TraceMsg(trace_ctx, "\tfilter_level = %d\n", p->filter_level);
5550     va_TraceMsg(trace_ctx, "\tsharpness_level = %d\n", p->sharpness_level);
5551 
5552     for (i = 0; i < 4; i++)
5553         va_TraceMsg(trace_ctx, "\tref_lf_delta[%d] = %d\n", i, p->ref_lf_delta[i]);
5554     for (i = 0; i < 2; i++)
5555         va_TraceMsg(trace_ctx, "\tmode_lf_delta[%d] = %d\n", i, p->mode_lf_delta[i]);
5556 
5557 
5558     va_TraceMsg(trace_ctx, "\tbit_offset_ref_lf_delta = %d\n", p->bit_offset_ref_lf_delta);
5559     va_TraceMsg(trace_ctx, "\tbit_offset_mode_lf_delta = %d\n", p->bit_offset_mode_lf_delta);
5560     va_TraceMsg(trace_ctx, "\tbit_offset_lf_level = %d\n", p->bit_offset_lf_level);
5561     va_TraceMsg(trace_ctx, "\tbit_offset_qindex = %d\n", p->bit_offset_qindex);
5562     va_TraceMsg(trace_ctx, "\tbit_offset_first_partition_size = %d\n", p->bit_offset_first_partition_size);
5563     va_TraceMsg(trace_ctx, "\tbit_offset_segmentation = %d\n", p->bit_offset_segmentation);
5564     va_TraceMsg(trace_ctx, "\tbit_size_segmentation = %d\n", p->bit_size_segmentation);
5565     va_TraceMsg(trace_ctx, "\tlog2_tile_rows = %d\n", p->log2_tile_rows);
5566     va_TraceMsg(trace_ctx, "\tlog2_tile_columns = %d\n", p->log2_tile_columns);
5567     va_TraceMsg(trace_ctx, "\tskip_frame_flag = %d\n", p->skip_frame_flag);
5568     va_TraceMsg(trace_ctx, "\tnumber_skip_frames = %d\n", p->number_skip_frames);
5569     va_TraceMsg(trace_ctx, "\tskip_frames_size = %d\n", p->skip_frames_size);
5570 
5571     va_TraceMsg(trace_ctx, NULL);
5572 
5573     return;
5574 }
5575 
va_TraceVASliceParameterBufferVP9(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5576 static void va_TraceVASliceParameterBufferVP9(
5577     VADisplay dpy,
5578     VAContextID context,
5579     VABufferID buffer,
5580     VABufferType type,
5581     unsigned int size,
5582     unsigned int num_elements,
5583     void *data)
5584 {
5585 
5586     VASliceParameterBufferVP9 *p = (VASliceParameterBufferVP9 *)data;
5587     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5588     int i, j;
5589 
5590     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferVP9\n");
5591 
5592     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
5593     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
5594     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
5595 
5596     for (i = 0; i < 8; i++) {
5597         VASegmentParameterVP9* seg = p->seg_param + i;
5598         va_TraceMsg(trace_ctx, "\tseg_param[%d] = \n",  i);
5599         va_TraceMsg(trace_ctx, "\t\tsegment_reference_enabled = %d\n", seg->segment_flags.fields.segment_reference_enabled);
5600         va_TraceMsg(trace_ctx, "\t\tsegment_reference = %d\n", seg->segment_flags.fields.segment_reference);
5601         va_TraceMsg(trace_ctx, "\t\tsegment_reference_skipped = %d\n", seg->segment_flags.fields.segment_reference_skipped);
5602         va_TraceMsg(trace_ctx, "\t\tfilter_level[4][2] = \n");
5603         for (j  = 0; j < 4; j++) {
5604             va_TraceMsg(trace_ctx, "\t\t\t[%3d, %3d]\n", seg->filter_level[j][0], seg->filter_level[j][1]);
5605         }
5606         va_TraceMsg(trace_ctx, "\t\tluma_ac_quant_scale = %d\n", seg->luma_ac_quant_scale);
5607         va_TraceMsg(trace_ctx, "\t\tluma_dc_quant_scale = %d\n", seg->luma_dc_quant_scale);
5608         va_TraceMsg(trace_ctx, "\t\tchroma_ac_quant_scale = %d\n", seg->chroma_ac_quant_scale);
5609         va_TraceMsg(trace_ctx, "\t\tchroma_dc_quant_scale = %d\n", seg->chroma_dc_quant_scale);
5610     }
5611 
5612     va_TraceMsg(trace_ctx, NULL);
5613 
5614     return;
5615 }
5616 
va_TraceVASliceParameterBufferAV1(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5617 static void va_TraceVASliceParameterBufferAV1(
5618     VADisplay dpy,
5619     VAContextID context,
5620     VABufferID buffer,
5621     VABufferType type,
5622     unsigned int size,
5623     unsigned int num_elements,
5624     void *data)
5625 {
5626 
5627     VASliceParameterBufferAV1 *p = (VASliceParameterBufferAV1 *)data;
5628     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5629 
5630     va_TraceMsg(trace_ctx, "\t--VASliceParameterBufferAV1\n");
5631 
5632     va_TraceMsg(trace_ctx, "\tslice_data_size = %d\n", p->slice_data_size);
5633     va_TraceMsg(trace_ctx, "\tslice_data_offset = %d\n", p->slice_data_offset);
5634     va_TraceMsg(trace_ctx, "\tslice_data_flag = %d\n", p->slice_data_flag);
5635 
5636     va_TraceMsg(trace_ctx, "\ttile_row = %d\n", p->tile_row);
5637     va_TraceMsg(trace_ctx, "\ttile_column = %d\n", p->tile_column);
5638 
5639     va_TraceMsg(trace_ctx, "\tanchor_frame_idx = %d\n", p->anchor_frame_idx);
5640     va_TraceMsg(trace_ctx, "\ttile_idx_in_tile_list = %d\n", p->tile_idx_in_tile_list);
5641 
5642     va_TraceMsg(trace_ctx, NULL);
5643 
5644     return;
5645 }
5646 
va_TraceBeginPicture(VADisplay dpy,VAContextID context,VASurfaceID render_target)5647 void va_TraceBeginPicture(
5648     VADisplay dpy,
5649     VAContextID context,
5650     VASurfaceID render_target
5651 )
5652 {
5653     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5654 
5655     TRACE_FUNCNAME(idx);
5656 
5657     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
5658     va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", render_target);
5659     va_TraceMsg(trace_ctx, "\tframe_count  = #%d\n", trace_ctx->trace_frame_no);
5660     va_TraceMsg(trace_ctx, NULL);
5661 
5662     trace_ctx->trace_rendertarget = render_target; /* for surface data dump after vaEndPicture */
5663 
5664     trace_ctx->trace_frame_no++;
5665     trace_ctx->trace_slice_no = 0;
5666 }
5667 
va_TraceMPEG2Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5668 static void va_TraceMPEG2Buf(
5669     VADisplay dpy,
5670     VAContextID context,
5671     VABufferID buffer,
5672     VABufferType type,
5673     unsigned int size,
5674     unsigned int num_elements,
5675     void *pbuf
5676 )
5677 {
5678     switch (type) {
5679     case VAPictureParameterBufferType:
5680         va_TraceVAPictureParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5681         break;
5682     case VAIQMatrixBufferType:
5683         va_TraceVAIQMatrixBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5684         break;
5685     case VABitPlaneBufferType:
5686         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5687         break;
5688     case VASliceGroupMapBufferType:
5689         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5690         break;
5691     case VASliceParameterBufferType:
5692         va_TraceVASliceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5693         break;
5694     case VASliceDataBufferType:
5695         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5696         break;
5697     case VAMacroblockParameterBufferType:
5698         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5699         break;
5700     case VAResidualDataBufferType:
5701         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5702         break;
5703     case VADeblockingParameterBufferType:
5704         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5705         break;
5706     case VAImageBufferType:
5707         break;
5708     case VAProtectedSliceDataBufferType:
5709         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5710         break;
5711     case VAEncCodedBufferType:
5712         break;
5713     case VAEncSequenceParameterBufferType:
5714         va_TraceVAEncSequenceParameterBufferMPEG2(dpy, context, buffer, type, size, num_elements, pbuf);
5715         break;
5716     case VAEncPictureParameterBufferType:
5717         break;
5718     case VAEncSliceParameterBufferType:
5719         break;
5720     case VAEncMiscParameterBufferType:
5721         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
5722         break;
5723     default:
5724         break;
5725     }
5726 }
5727 
va_TraceVAEncSequenceParameterBufferH263(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5728 static void va_TraceVAEncSequenceParameterBufferH263(
5729     VADisplay dpy,
5730     VAContextID context,
5731     VABufferID buffer,
5732     VABufferType type,
5733     unsigned int size,
5734     unsigned int num_elements,
5735     void *data)
5736 {
5737     VAEncSequenceParameterBufferH263 *p = (VAEncSequenceParameterBufferH263 *)data;
5738     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5739 
5740     va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferH263\n");
5741 
5742     va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
5743     va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
5744     va_TraceMsg(trace_ctx, "\tframe_rate = %d\n", p->frame_rate);
5745     va_TraceMsg(trace_ctx, "\tinitial_qp = %d\n", p->initial_qp);
5746     va_TraceMsg(trace_ctx, "\tmin_qp = %d\n", p->min_qp);
5747     va_TraceMsg(trace_ctx, NULL);
5748 
5749     return;
5750 }
5751 
5752 
va_TraceVAEncPictureParameterBufferH263(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5753 static void va_TraceVAEncPictureParameterBufferH263(
5754     VADisplay dpy,
5755     VAContextID context,
5756     VABufferID buffer,
5757     VABufferType type,
5758     unsigned int size,
5759     unsigned int num_elements,
5760     void *data)
5761 {
5762     VAEncPictureParameterBufferH263 *p = (VAEncPictureParameterBufferH263 *)data;
5763     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5764 
5765     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferH263\n");
5766     va_TraceMsg(trace_ctx, "\treference_picture = 0x%08x\n", p->reference_picture);
5767     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
5768     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
5769     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
5770     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
5771     va_TraceMsg(trace_ctx, "\tpicture_type = 0x%08x\n", p->picture_type);
5772     va_TraceMsg(trace_ctx, NULL);
5773 
5774     return;
5775 }
5776 
va_TraceVAEncPictureParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5777 static void va_TraceVAEncPictureParameterBufferJPEG(
5778     VADisplay dpy,
5779     VAContextID context,
5780     VABufferID buffer,
5781     VABufferType type,
5782     unsigned int size,
5783     unsigned int num_elements,
5784     void *data)
5785 {
5786     VAEncPictureParameterBufferJPEG *p = (VAEncPictureParameterBufferJPEG *)data;
5787     int i;
5788 
5789     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5790 
5791     va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferJPEG\n");
5792     va_TraceMsg(trace_ctx, "\treconstructed_picture = 0x%08x\n", p->reconstructed_picture);
5793     va_TraceMsg(trace_ctx, "\tcoded_buf = %08x\n", p->coded_buf);
5794     va_TraceMsg(trace_ctx, "\tpicture_width = %d\n", p->picture_width);
5795     va_TraceMsg(trace_ctx, "\tpicture_height = %d\n", p->picture_height);
5796     va_TraceMsg(trace_ctx, "\tpic_flags.bits.profile = %d\n", p->pic_flags.bits.profile);
5797     va_TraceMsg(trace_ctx, "\tpic_flags.bits.progressive = %d\n", p->pic_flags.bits.profile);
5798     va_TraceMsg(trace_ctx, "\tpic_flags.bits.huffman = %d\n", p->pic_flags.bits.huffman);
5799     va_TraceMsg(trace_ctx, "\tpic_flags.bits.interleaved = %d\n", p->pic_flags.bits.interleaved);
5800     va_TraceMsg(trace_ctx, "\tpic_flags.bits.differential = %d\n", p->pic_flags.bits.differential);
5801     va_TraceMsg(trace_ctx, "\tsample_bit_depth = %d\n", p->sample_bit_depth);
5802     va_TraceMsg(trace_ctx, "\tnum_scan = %d\n", p->num_scan);
5803     va_TraceMsg(trace_ctx, "\tnum_components = %d\n", p->num_components);
5804     for (i = 0; i < p->num_components; i++)
5805         va_TraceMsg(trace_ctx, "\tcomponent_id[%d] = %d\n", i, p->component_id[i]);
5806 
5807     if (p->quality > 0)
5808         va_TraceMsg(trace_ctx, "\tquality = %d\n", p->quality);
5809     else
5810         va_TraceMsg(trace_ctx, "\tquantiser_table_selector[] = %d %d %d %d\n",
5811                     p->quantiser_table_selector[0],
5812                     p->quantiser_table_selector[1],
5813                     p->quantiser_table_selector[2],
5814                     p->quantiser_table_selector[3]);
5815 
5816     va_TraceMsg(trace_ctx, NULL);
5817 
5818     return;
5819 }
5820 
va_TraceVAEncQMatrixBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5821 static void va_TraceVAEncQMatrixBufferJPEG(
5822     VADisplay dpy,
5823     VAContextID context,
5824     VABufferID buffer,
5825     VABufferType type,
5826     unsigned int size,
5827     unsigned int num_elements,
5828     void *data)
5829 {
5830     VAQMatrixBufferJPEG *p = (VAQMatrixBufferJPEG *)data;
5831     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5832 
5833     va_TraceMsg(trace_ctx, "\t--VAQMatrixBufferJPEG\n");
5834     va_TraceMsg(trace_ctx, "\tload_lum_quantiser_matrix = %d", p->load_lum_quantiser_matrix);
5835     if (p->load_lum_quantiser_matrix) {
5836         int i;
5837         for (i = 0; i < 64; i++) {
5838             if ((i % 8) == 0)
5839                 va_TraceMsg(trace_ctx, "\n\t");
5840             va_TraceMsg(trace_ctx, "\t0x%02x", p->lum_quantiser_matrix[i]);
5841         }
5842         va_TraceMsg(trace_ctx, "\n");
5843     }
5844     va_TraceMsg(trace_ctx, "\tload_chroma_quantiser_matrix = %08x\n", p->load_chroma_quantiser_matrix);
5845     if (p->load_chroma_quantiser_matrix) {
5846         int i;
5847         for (i = 0; i < 64; i++) {
5848             if ((i % 8) == 0)
5849                 va_TraceMsg(trace_ctx, "\n\t");
5850             va_TraceMsg(trace_ctx, "\t0x%02x", p->chroma_quantiser_matrix[i]);
5851         }
5852         va_TraceMsg(trace_ctx, "\n");
5853     }
5854 
5855     va_TraceMsg(trace_ctx, NULL);
5856 
5857     return;
5858 }
5859 
5860 
va_TraceVAEncSliceParameterBufferJPEG(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)5861 static void va_TraceVAEncSliceParameterBufferJPEG(
5862     VADisplay dpy,
5863     VAContextID context,
5864     VABufferID buffer,
5865     VABufferType type,
5866     unsigned int size,
5867     unsigned int num_elements,
5868     void *data)
5869 {
5870     VAEncSliceParameterBufferJPEG *p = (VAEncSliceParameterBufferJPEG *)data;
5871     int i;
5872 
5873     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
5874 
5875     va_TraceMsg(trace_ctx, "\t--VAEncSliceParameterBufferJPEG\n");
5876     va_TraceMsg(trace_ctx, "\trestart_interval = 0x%04x\n", p->restart_interval);
5877     va_TraceMsg(trace_ctx, "\tnum_components = 0x%08x\n", p->num_components);
5878     for (i = 0; i < 4; i++) {
5879         va_TraceMsg(trace_ctx, "\tcomponents[%i] =\n", i);
5880         va_TraceMsg(trace_ctx, "\t\tcomponent_selector = %d\n", p->components[i].component_selector);
5881         va_TraceMsg(trace_ctx, "\t\tdc_table_selector = %d\n", p->components[i].dc_table_selector);
5882         va_TraceMsg(trace_ctx, "\t\tac_table_selector = %d\n", p->components[i].ac_table_selector);
5883     }
5884 
5885     va_TraceMsg(trace_ctx, NULL);
5886 
5887     return;
5888 }
5889 
5890 
va_TraceH263Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5891 static void va_TraceH263Buf(
5892     VADisplay dpy,
5893     VAContextID context,
5894     VABufferID buffer,
5895     VABufferType type,
5896     unsigned int size,
5897     unsigned int num_elements,
5898     void *pbuf
5899 )
5900 {
5901     switch (type) {
5902     case VAPictureParameterBufferType:/* print MPEG4 buffer */
5903         va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5904         break;
5905     case VAIQMatrixBufferType:/* print MPEG4 buffer */
5906         va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5907         break;
5908     case VABitPlaneBufferType:/* print MPEG4 buffer */
5909         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5910         break;
5911     case VASliceGroupMapBufferType:
5912         break;
5913     case VASliceParameterBufferType:/* print MPEG4 buffer */
5914         va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
5915         break;
5916     case VASliceDataBufferType:
5917         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5918         break;
5919     case VAMacroblockParameterBufferType:
5920         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5921         break;
5922     case VAResidualDataBufferType:
5923         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5924         break;
5925     case VADeblockingParameterBufferType:
5926         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5927         break;
5928     case VAImageBufferType:
5929         break;
5930     case VAProtectedSliceDataBufferType:
5931         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5932         break;
5933     case VAEncCodedBufferType:
5934         break;
5935     case VAEncSequenceParameterBufferType:
5936         va_TraceVAEncSequenceParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
5937         break;
5938     case VAEncPictureParameterBufferType:
5939         va_TraceVAEncPictureParameterBufferH263(dpy, context, buffer, type, size, num_elements, pbuf);
5940         break;
5941     case VAEncSliceParameterBufferType:
5942         va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
5943         break;
5944     case VAEncPackedHeaderParameterBufferType:
5945         va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
5946         break;
5947     default:
5948         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5949         break;
5950     }
5951 }
5952 
5953 
va_TraceJPEGBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)5954 static void va_TraceJPEGBuf(
5955     VADisplay dpy,
5956     VAContextID context,
5957     VABufferID buffer,
5958     VABufferType type,
5959     unsigned int size,
5960     unsigned int num_elements,
5961     void *pbuf
5962 )
5963 {
5964     switch (type) {
5965     case VABitPlaneBufferType:
5966     case VASliceGroupMapBufferType:
5967     case VASliceDataBufferType:
5968     case VAMacroblockParameterBufferType:
5969     case VAResidualDataBufferType:
5970     case VADeblockingParameterBufferType:
5971     case VAImageBufferType:
5972     case VAProtectedSliceDataBufferType:
5973     case VAEncCodedBufferType:
5974     case VAEncSequenceParameterBufferType:
5975         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
5976         break;
5977     case VAEncSliceParameterBufferType:
5978         va_TraceVAEncSliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5979         break;
5980     case VAPictureParameterBufferType:
5981         va_TraceVAPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5982         break;
5983     case VAIQMatrixBufferType:
5984         va_TraceVAIQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5985         break;
5986     case VASliceParameterBufferType:
5987         va_TraceVASliceParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5988         break;
5989     case VAHuffmanTableBufferType:
5990         va_TraceVAHuffmanTableBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5991         break;
5992     case VAEncPictureParameterBufferType:
5993         va_TraceVAEncPictureParameterBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5994         break;
5995     case VAQMatrixBufferType:
5996         va_TraceVAEncQMatrixBufferJPEG(dpy, context, buffer, type, size, num_elements, pbuf);
5997         break;
5998     default:
5999         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6000         break;
6001     }
6002 }
6003 
va_TraceMPEG4Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6004 static void va_TraceMPEG4Buf(
6005     VADisplay dpy,
6006     VAContextID context,
6007     VABufferID buffer,
6008     VABufferType type,
6009     unsigned int size,
6010     unsigned int num_elements,
6011     void *pbuf
6012 )
6013 {
6014     switch (type) {
6015     case VAPictureParameterBufferType:
6016         va_TraceVAPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6017         break;
6018     case VAIQMatrixBufferType:
6019         va_TraceVAIQMatrixBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6020         break;
6021     case VABitPlaneBufferType:
6022         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6023         break;
6024     case VASliceGroupMapBufferType:
6025         break;
6026     case VASliceParameterBufferType:
6027         va_TraceVASliceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6028         break;
6029     case VASliceDataBufferType:
6030         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6031         break;
6032     case VAMacroblockParameterBufferType:
6033         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6034         break;
6035     case VAResidualDataBufferType:
6036         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6037         break;
6038     case VADeblockingParameterBufferType:
6039         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6040         break;
6041     case VAImageBufferType:
6042         break;
6043     case VAProtectedSliceDataBufferType:
6044         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6045         break;
6046     case VAEncCodedBufferType:
6047         break;
6048     case VAEncSequenceParameterBufferType:
6049         va_TraceVAEncSequenceParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6050         break;
6051     case VAEncPictureParameterBufferType:
6052         va_TraceVAEncPictureParameterBufferMPEG4(dpy, context, buffer, type, size, num_elements, pbuf);
6053         break;
6054     case VAEncSliceParameterBufferType:
6055         va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6056         break;
6057     default:
6058         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6059         break;
6060     }
6061 }
6062 
va_TraceVVCBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6063 static void va_TraceVVCBuf(
6064     VADisplay dpy,
6065     VAContextID context,
6066     VABufferID buffer,
6067     VABufferType type,
6068     unsigned int size,
6069     unsigned int num_elements,
6070     void* pbuf
6071 )
6072 {
6073     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6074 
6075     switch (type) {
6076     case VAPictureParameterBufferType:
6077         va_TraceVAPictureParameterBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6078         break;
6079     case VASliceParameterBufferType:
6080         va_TraceVASliceParameterBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6081         break;
6082     case VAIQMatrixBufferType:
6083         va_TraceVAScalingListBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6084         break;
6085     case VAAlfBufferType:
6086         va_TraceVAAlfBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6087         break;
6088     case VALmcsBufferType:
6089         va_TraceVALmcsBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6090         break;
6091     case VASubPicBufferType:
6092         va_TraceVASubPicBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6093         break;
6094     case VATileBufferType:
6095         va_TraceVATileBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6096         break;
6097     case VASliceStructBufferType:
6098         va_TraceVASliceStructBufferVVC(dpy, context, buffer, type, size, num_elements, pbuf);
6099         break;
6100     default:
6101         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6102         break;
6103     }
6104 }
6105 
va_TraceHEVCBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6106 static void va_TraceHEVCBuf(
6107     VADisplay dpy,
6108     VAContextID context,
6109     VABufferID buffer,
6110     VABufferType type,
6111     unsigned int size,
6112     unsigned int num_elements,
6113     void *pbuf
6114 )
6115 {
6116     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6117 
6118     switch (type) {
6119     case VAPictureParameterBufferType:
6120         va_TraceVAPictureParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6121         break;
6122     case VASliceParameterBufferType:
6123         va_TraceVASliceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6124         break;
6125     case VAIQMatrixBufferType:
6126         va_TraceVAIQMatrixBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6127         break;
6128     case VAEncSequenceParameterBufferType:
6129         va_TraceVAEncSequenceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6130         break;
6131     case VAEncPictureParameterBufferType:
6132         va_TraceVAEncPictureParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6133         break;
6134     case VAEncSliceParameterBufferType:
6135         va_TraceVAEncSliceParameterBufferHEVC(dpy, context, buffer, type, size, num_elements, pbuf);
6136         break;
6137     case VAEncMiscParameterBufferType:
6138         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6139         break;
6140     default:
6141         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6142         break;
6143     }
6144 }
6145 
va_TraceH264Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6146 static void va_TraceH264Buf(
6147     VADisplay dpy,
6148     VAContextID context,
6149     VABufferID buffer,
6150     VABufferType type,
6151     unsigned int size,
6152     unsigned int num_elements,
6153     void *pbuf
6154 )
6155 {
6156     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6157 
6158     switch (type) {
6159     case VAPictureParameterBufferType:
6160         va_TraceVAPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6161         break;
6162     case VAIQMatrixBufferType:
6163         va_TraceVAIQMatrixBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6164         break;
6165     case VABitPlaneBufferType:
6166         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6167         break;
6168     case VASliceGroupMapBufferType:
6169         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6170         break;
6171     case VASliceParameterBufferType:
6172         va_TraceVASliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6173         break;
6174     case VASliceDataBufferType:
6175         va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
6176         break;
6177     case VAMacroblockParameterBufferType:
6178         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6179         break;
6180     case VAResidualDataBufferType:
6181         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6182         break;
6183     case VADeblockingParameterBufferType:
6184         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6185         break;
6186     case VAImageBufferType:
6187         break;
6188     case VAProtectedSliceDataBufferType:
6189         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6190         break;
6191     case VAEncCodedBufferType:
6192         break;
6193     case VAEncSequenceParameterBufferType:
6194         va_TraceVAEncSequenceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6195         break;
6196     case VAEncPictureParameterBufferType:
6197         va_TraceVAEncPictureParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6198         break;
6199     case VAEncSliceParameterBufferType:
6200         if (size == sizeof(VAEncSliceParameterBuffer))
6201             va_TraceVAEncSliceParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6202         else
6203             va_TraceVAEncSliceParameterBufferH264(dpy, context, buffer, type, size, num_elements, pbuf);
6204         break;
6205     case VAEncPackedHeaderParameterBufferType:
6206         va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
6207         break;
6208 
6209     case VAEncMiscParameterBufferType:
6210         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6211         break;
6212     default:
6213         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6214         break;
6215     }
6216 }
6217 
va_TraceVP8Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6218 static void va_TraceVP8Buf(
6219     VADisplay dpy,
6220     VAContextID context,
6221     VABufferID buffer,
6222     VABufferType type,
6223     unsigned int size,
6224     unsigned int num_elements,
6225     void *pbuf
6226 )
6227 {
6228     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6229 
6230     switch (type) {
6231     case VAPictureParameterBufferType:
6232         va_TraceVAPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6233         break;
6234     case VAIQMatrixBufferType:
6235         va_TraceVAIQMatrixBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6236         break;
6237     case VAQMatrixBufferType:
6238         break;
6239     case VABitPlaneBufferType:
6240         break;
6241     case VASliceGroupMapBufferType:
6242         break;
6243     case VASliceParameterBufferType:
6244         va_TraceVASliceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6245         break;
6246     case VASliceDataBufferType:
6247         break;
6248     case VAProbabilityBufferType:
6249         va_TraceVAProbabilityBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6250         break;
6251     case VAMacroblockParameterBufferType:
6252         break;
6253     case VAResidualDataBufferType:
6254         break;
6255     case VADeblockingParameterBufferType:
6256         break;
6257     case VAImageBufferType:
6258         break;
6259     case VAProtectedSliceDataBufferType:
6260         break;
6261     case VAEncCodedBufferType:
6262         break;
6263     case VAEncSequenceParameterBufferType:
6264         va_TraceVAEncSequenceParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6265         break;
6266     case VAEncPictureParameterBufferType:
6267         va_TraceVAEncPictureParameterBufferVP8(dpy, context, buffer, type, size, num_elements, pbuf);
6268         break;
6269     case VAEncSliceParameterBufferType:
6270         break;
6271     case VAEncPackedHeaderParameterBufferType:
6272         break;
6273     case VAEncMiscParameterBufferType:
6274         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6275         break;
6276     default:
6277         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6278         break;
6279     }
6280 }
6281 
va_TraceVP9Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6282 static void va_TraceVP9Buf(
6283     VADisplay dpy,
6284     VAContextID context,
6285     VABufferID buffer,
6286     VABufferType type,
6287     unsigned int size,
6288     unsigned int num_elements,
6289     void *pbuf
6290 )
6291 {
6292     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6293 
6294     switch (type) {
6295     case VAPictureParameterBufferType:
6296         va_TraceVAPictureParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6297         break;
6298     case VAEncSequenceParameterBufferType:
6299         va_TraceVAEncSequenceParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6300         break;
6301     case VAEncPictureParameterBufferType:
6302         va_TraceVAEncPictureParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6303         break;
6304     case VASliceParameterBufferType:
6305         va_TraceVASliceParameterBufferVP9(dpy, context, buffer, type, size, num_elements, pbuf);
6306         break;
6307     case VAEncMiscParameterBufferType:
6308         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6309         break;
6310     default:
6311         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6312         break;
6313     }
6314 }
6315 
va_TraceAV1Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6316 static void va_TraceAV1Buf(
6317     VADisplay dpy,
6318     VAContextID context,
6319     VABufferID buffer,
6320     VABufferType type,
6321     unsigned int size,
6322     unsigned int num_elements,
6323     void *pbuf
6324 )
6325 {
6326     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6327 
6328     switch (type) {
6329     case VAPictureParameterBufferType:
6330         va_TraceVAPictureParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6331         break;
6332     case VASliceParameterBufferType:
6333         va_TraceVASliceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6334         break;
6335     case VAEncSequenceParameterBufferType:
6336         va_TraceVAEncSequenceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6337         break;
6338     case VAEncPictureParameterBufferType:
6339         va_TraceVAEncPictureParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6340         break;
6341     case VAEncSliceParameterBufferType:
6342         va_TraceVAEncSliceParameterBufferAV1(dpy, context, buffer, type, size, num_elements, pbuf);
6343         break;
6344     case VAEncMiscParameterBufferType:
6345         va_TraceVAEncMiscParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6346         break;
6347     case VAEncPackedHeaderParameterBufferType:
6348         va_TraceVAEncPackedHeaderParameterBufferType(dpy, context, buffer, type, size, num_elements, pbuf);
6349         break;
6350     default:
6351         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6352         break;
6353     }
6354 }
6355 
va_TraceVC1Buf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6356 static void va_TraceVC1Buf(
6357     VADisplay dpy,
6358     VAContextID context,
6359     VABufferID buffer,
6360     VABufferType type,
6361     unsigned int size,
6362     unsigned int num_elements,
6363     void *pbuf
6364 )
6365 {
6366     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6367 
6368     switch (type) {
6369     case VAPictureParameterBufferType:
6370         va_TraceVAPictureParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
6371         break;
6372     case VAIQMatrixBufferType:
6373         break;
6374     case VABitPlaneBufferType:
6375         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6376         break;
6377     case VASliceGroupMapBufferType:
6378         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6379         break;
6380     case VASliceParameterBufferType:
6381         va_TraceVASliceParameterBufferVC1(dpy, context, buffer, type, size, num_elements, pbuf);
6382         break;
6383     case VASliceDataBufferType:
6384         va_TraceVABuffers(dpy, context, buffer, type, trace_ctx->trace_slice_size, num_elements, pbuf);
6385         break;
6386     case VAMacroblockParameterBufferType:
6387         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6388         break;
6389     case VAResidualDataBufferType:
6390         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6391         break;
6392     case VADeblockingParameterBufferType:
6393         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6394         break;
6395     case VAImageBufferType:
6396         break;
6397     case VAProtectedSliceDataBufferType:
6398         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6399         break;
6400     case VAEncCodedBufferType:
6401         break;
6402     case VAEncSequenceParameterBufferType:
6403         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6404         break;
6405     case VAEncPictureParameterBufferType:
6406         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6407         break;
6408     case VAEncSliceParameterBufferType:
6409         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6410         break;
6411     default:
6412         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6413         break;
6414     }
6415 }
6416 
6417 static void
va_TraceProcFilterParameterBufferDeinterlacing(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6418 va_TraceProcFilterParameterBufferDeinterlacing(
6419     VADisplay dpy,
6420     VAContextID context,
6421     VAProcFilterParameterBufferBase *base
6422 )
6423 {
6424     VAProcFilterParameterBufferDeinterlacing *deint = (VAProcFilterParameterBufferDeinterlacing *)base;
6425 
6426     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6427 
6428     va_TraceMsg(trace_ctx, "\t    type = %d\n", deint->type);
6429     va_TraceMsg(trace_ctx, "\t    algorithm = %d\n", deint->algorithm);
6430     va_TraceMsg(trace_ctx, "\t    flags = %d\n", deint->flags);
6431 }
6432 
6433 static void
va_TraceProcFilterParameterBufferColorBalance(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6434 va_TraceProcFilterParameterBufferColorBalance(
6435     VADisplay dpy,
6436     VAContextID context,
6437     VAProcFilterParameterBufferBase *base
6438 )
6439 {
6440     VAProcFilterParameterBufferColorBalance *color_balance = (VAProcFilterParameterBufferColorBalance *)base;
6441 
6442     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6443 
6444     va_TraceMsg(trace_ctx, "\t    type = %d\n", color_balance->type);
6445     va_TraceMsg(trace_ctx, "\t    attrib = %d\n", color_balance->attrib);
6446     va_TraceMsg(trace_ctx, "\t    value = %f\n", color_balance->value);
6447 }
6448 
6449 static void
va_TraceProcFilterParameterBufferBase(VADisplay dpy,VAContextID context,VAProcFilterParameterBufferBase * base)6450 va_TraceProcFilterParameterBufferBase(
6451     VADisplay dpy,
6452     VAContextID context,
6453     VAProcFilterParameterBufferBase *base
6454 )
6455 {
6456     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6457 
6458     va_TraceMsg(trace_ctx, "\t    type = %d\n", base->type);
6459 }
6460 
6461 static void
va_TraceProcFilterParameterBuffer(VADisplay dpy,VAContextID context,VABufferID * filters,unsigned int num_filters)6462 va_TraceProcFilterParameterBuffer(
6463     VADisplay dpy,
6464     VAContextID context,
6465     VABufferID *filters,
6466     unsigned int num_filters
6467 )
6468 {
6469     VABufferType type;
6470     unsigned int size;
6471     unsigned int num_elements;
6472     VAProcFilterParameterBufferBase *base_filter = NULL;
6473     unsigned int i;
6474 
6475     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6476 
6477     if (num_filters == 0 || filters == NULL) {
6478         va_TraceMsg(trace_ctx, "\t  num_filters = %d\n", num_filters);
6479         va_TraceMsg(trace_ctx, "\t  filters = %p\n", filters);
6480         return;
6481     }
6482 
6483     va_TraceMsg(trace_ctx, "\t  num_filters = %d\n", num_filters);
6484 
6485     /* get buffer type information */
6486     for (i = 0; i < num_filters; i++) {
6487         vaBufferInfo(dpy, context, filters[i], &type, &size, &num_elements);
6488 
6489         if (type != VAProcFilterParameterBufferType) {
6490             va_TraceMsg(trace_ctx, "\t  filters[%d] = 0x%08x (INVALID)\n", i, filters[i]);
6491             return;
6492         } else {
6493             va_TraceMsg(trace_ctx, "\t  filters[%d] = 0x%08x\n", i, filters[i]);
6494         }
6495 
6496         base_filter = NULL;
6497         vaMapBuffer(dpy, filters[i], (void **)&base_filter);
6498 
6499         if (base_filter == NULL) {
6500             vaUnmapBuffer(dpy, filters[i]);
6501             return;
6502         }
6503 
6504         switch (base_filter->type) {
6505         case VAProcFilterDeinterlacing:
6506             va_TraceProcFilterParameterBufferDeinterlacing(dpy,
6507                     context,
6508                     base_filter);
6509             break;
6510         case VAProcFilterColorBalance:
6511             va_TraceProcFilterParameterBufferColorBalance(dpy,
6512                     context,
6513                     base_filter);
6514             break;
6515         default:
6516             va_TraceProcFilterParameterBufferBase(dpy,
6517                                                   context,
6518                                                   base_filter);
6519             break;
6520         }
6521 
6522         vaUnmapBuffer(dpy, filters[i]);
6523     }
6524 }
6525 
6526 static void
va_TraceVAProcPipelineParameterBuffer(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * data)6527 va_TraceVAProcPipelineParameterBuffer(
6528     VADisplay dpy,
6529     VAContextID context,
6530     VABufferID buffer,
6531     VABufferType type,
6532     unsigned int size,
6533     unsigned int num_elements,
6534     void *data
6535 )
6536 {
6537     VAProcPipelineParameterBuffer *p = (VAProcPipelineParameterBuffer *)data;
6538     uint32_t i;
6539 
6540     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6541 
6542     va_TraceMsg(trace_ctx, "\t--VAProcPipelineParameterBuffer\n");
6543 
6544     va_TraceMsg(trace_ctx, "\t  surface = 0x%08x\n", p->surface);
6545 
6546     if (p->surface_region) {
6547         va_TraceMsg(trace_ctx, "\t  surface_region\n");
6548         va_TraceMsg(trace_ctx, "\t    x = %d\n", p->surface_region->x);
6549         va_TraceMsg(trace_ctx, "\t    y = %d\n", p->surface_region->y);
6550         va_TraceMsg(trace_ctx, "\t    width = %d\n", p->surface_region->width);
6551         va_TraceMsg(trace_ctx, "\t    height = %d\n", p->surface_region->height);
6552     } else {
6553         va_TraceMsg(trace_ctx, "\t  surface_region = (NULL)\n");
6554     }
6555 
6556     va_TraceMsg(trace_ctx, "\t  surface_color_standard = %d\n", p->surface_color_standard);
6557 
6558     if (p->output_region) {
6559         va_TraceMsg(trace_ctx, "\t  output_region\n");
6560         va_TraceMsg(trace_ctx, "\t    x = %d\n", p->output_region->x);
6561         va_TraceMsg(trace_ctx, "\t    y = %d\n", p->output_region->y);
6562         va_TraceMsg(trace_ctx, "\t    width = %d\n", p->output_region->width);
6563         va_TraceMsg(trace_ctx, "\t    height = %d\n", p->output_region->height);
6564     } else {
6565         va_TraceMsg(trace_ctx, "\t  output_region = (NULL)\n");
6566     }
6567 
6568     va_TraceMsg(trace_ctx, "\t  output_background_color = 0x%08x\n", p->output_background_color);
6569     va_TraceMsg(trace_ctx, "\t  output_color_standard = %d\n", p->output_color_standard);
6570     va_TraceMsg(trace_ctx, "\t  pipeline_flags = 0x%08x\n", p->pipeline_flags);
6571     va_TraceMsg(trace_ctx, "\t  filter_flags = 0x%08x\n", p->filter_flags);
6572 
6573     va_TraceProcFilterParameterBuffer(dpy, context, p->filters, p->num_filters);
6574 
6575     va_TraceMsg(trace_ctx, "\t  num_forward_references = 0x%08x\n", p->num_forward_references);
6576 
6577     if (p->num_forward_references) {
6578         va_TraceMsg(trace_ctx, "\t  forward_references\n");
6579 
6580         if (p->forward_references) {
6581             /* only dump the first 5 forward references */
6582             for (i = 0; i < p->num_forward_references && i < 5; i++) {
6583                 va_TraceMsg(trace_ctx, "\t    forward_references[%d] = 0x%08x\n", i, p->forward_references[i]);
6584             }
6585         } else {
6586             for (i = 0; i < p->num_forward_references && i < 5; i++) {
6587                 va_TraceMsg(trace_ctx, "\t    forward_references[%d] = (NULL)\n", i);
6588             }
6589         }
6590     }
6591 
6592     va_TraceMsg(trace_ctx, "\t  num_backward_references = 0x%08x\n", p->num_backward_references);
6593 
6594     if (p->num_backward_references) {
6595         va_TraceMsg(trace_ctx, "\t  backward_references\n");
6596 
6597         if (p->backward_references) {
6598             /* only dump the first 5 backward references */
6599             for (i = 0; i < p->num_backward_references && i < 5; i++) {
6600                 va_TraceMsg(trace_ctx, "\t    backward_references[%d] = 0x%08x\n", i, p->backward_references[i]);
6601             }
6602         } else {
6603             for (i = 0; i < p->num_backward_references && i < 5; i++) {
6604                 va_TraceMsg(trace_ctx, "\t    backward_references[%d] = (NULL)\n", i);
6605             }
6606         }
6607     }
6608 
6609     /* FIXME: add other info later */
6610 
6611     va_TraceMsg(trace_ctx, NULL);
6612 }
6613 
6614 static void
va_TraceNoneBuf(VADisplay dpy,VAContextID context,VABufferID buffer,VABufferType type,unsigned int size,unsigned int num_elements,void * pbuf)6615 va_TraceNoneBuf(
6616     VADisplay dpy,
6617     VAContextID context,
6618     VABufferID buffer,
6619     VABufferType type,
6620     unsigned int size,
6621     unsigned int num_elements,
6622     void *pbuf
6623 )
6624 {
6625     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6626 
6627     switch (type) {
6628     case VAProcPipelineParameterBufferType:
6629         va_TraceVAProcPipelineParameterBuffer(dpy, context, buffer, type, size, num_elements, pbuf);
6630         break;
6631     default:
6632         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, pbuf);
6633         break;
6634     }
6635 }
6636 
va_TraceRenderPicture(VADisplay dpy,VAContextID context,VABufferID * buffers,int num_buffers)6637 void va_TraceRenderPicture(
6638     VADisplay dpy,
6639     VAContextID context,
6640     VABufferID *buffers,
6641     int num_buffers
6642 )
6643 {
6644     VABufferType type;
6645     unsigned int size;
6646     unsigned int num_elements;
6647     int i;
6648     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6649 
6650     TRACE_FUNCNAME(idx);
6651 
6652     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
6653     va_TraceMsg(trace_ctx, "\tnum_buffers = %d\n", num_buffers);
6654     if (buffers == NULL)
6655         return;
6656 
6657     for (i = 0; i < num_buffers; i++) {
6658         unsigned char *pbuf = NULL;
6659         unsigned int j;
6660 
6661         /* get buffer type information */
6662         vaBufferInfo(dpy, context, buffers[i], &type, &size, &num_elements);
6663 
6664         va_TraceMsg(trace_ctx, "\t---------------------------\n");
6665         va_TraceMsg(trace_ctx, "\tbuffers[%d] = 0x%08x\n", i, buffers[i]);
6666         va_TraceMsg(trace_ctx, "\t  type = %s\n", vaBufferTypeStr(type));
6667         va_TraceMsg(trace_ctx, "\t  size = %d\n", size);
6668         va_TraceMsg(trace_ctx, "\t  num_elements = %d\n", num_elements);
6669 
6670         vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
6671         if (pbuf == NULL)
6672             continue;
6673 
6674         switch (trace_ctx->trace_profile) {
6675         case VAProfileMPEG2Simple:
6676         case VAProfileMPEG2Main:
6677             for (j = 0; j < num_elements; j++) {
6678                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6679                 va_TraceMPEG2Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6680             }
6681             break;
6682         case VAProfileMPEG4Simple:
6683         case VAProfileMPEG4AdvancedSimple:
6684         case VAProfileMPEG4Main:
6685             for (j = 0; j < num_elements; j++) {
6686                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6687                 va_TraceMPEG4Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6688             }
6689             break;
6690         case VAProfileH264High10:
6691         case VAProfileH264Main:
6692         case VAProfileH264High:
6693         case VAProfileH264ConstrainedBaseline:
6694             for (j = 0; j < num_elements; j++) {
6695                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6696 
6697                 va_TraceH264Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6698             }
6699             break;
6700         case VAProfileVC1Simple:
6701         case VAProfileVC1Main:
6702         case VAProfileVC1Advanced:
6703             for (j = 0; j < num_elements; j++) {
6704                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6705 
6706                 va_TraceVC1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6707             }
6708             break;
6709         case VAProfileH263Baseline:
6710             for (j = 0; j < num_elements; j++) {
6711                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6712 
6713                 va_TraceH263Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6714             }
6715             break;
6716         case VAProfileJPEGBaseline:
6717             for (j = 0; j < num_elements; j++) {
6718                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6719 
6720                 va_TraceJPEGBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6721             }
6722             break;
6723 
6724         case VAProfileNone:
6725             for (j = 0; j < num_elements; j++) {
6726                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6727 
6728                 va_TraceNoneBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6729             }
6730             break;
6731 
6732         case VAProfileVP8Version0_3:
6733             for (j = 0; j < num_elements; j++) {
6734                 va_TraceMsg(trace_ctx, "\telement[%d] =\n", j);
6735 
6736                 va_TraceVP8Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6737             }
6738             break;
6739 
6740         case VAProfileHEVCMain12:
6741         case VAProfileHEVCMain422_10:
6742         case VAProfileHEVCMain422_12:
6743         case VAProfileHEVCMain444:
6744         case VAProfileHEVCMain444_10:
6745         case VAProfileHEVCMain444_12:
6746         case VAProfileHEVCMain:
6747         case VAProfileHEVCMain10:
6748         case VAProfileHEVCSccMain:
6749         case VAProfileHEVCSccMain10:
6750         case VAProfileHEVCSccMain444:
6751         case VAProfileHEVCSccMain444_10:
6752             for (j = 0; j < num_elements; j++) {
6753                 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6754 
6755                 va_TraceHEVCBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6756             }
6757             break;
6758         case VAProfileVVCMain10:
6759         case VAProfileVVCMultilayerMain10:
6760             for (j = 0; j < num_elements; j++) {
6761                 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6762 
6763                 va_TraceVVCBuf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6764             }
6765             break;
6766         case VAProfileVP9Profile0:
6767         case VAProfileVP9Profile1:
6768         case VAProfileVP9Profile2:
6769         case VAProfileVP9Profile3:
6770             for (j = 0; j < num_elements; j++) {
6771                 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6772 
6773                 va_TraceVP9Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6774             }
6775             break;
6776         case VAProfileAV1Profile0:
6777         case VAProfileAV1Profile1:
6778             for (j = 0; j < num_elements; j++) {
6779                 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
6780 
6781                 va_TraceAV1Buf(dpy, context, buffers[i], type, size, num_elements, pbuf + size * j);
6782             }
6783             break;
6784         default:
6785             break;
6786         }
6787 
6788         vaUnmapBuffer(dpy, buffers[i]);
6789     }
6790 
6791     va_TraceMsg(trace_ctx, NULL);
6792 }
6793 
va_TraceEndPicture(VADisplay dpy,VAContextID context,int endpic_done)6794 void va_TraceEndPicture(
6795     VADisplay dpy,
6796     VAContextID context,
6797     int endpic_done
6798 )
6799 {
6800     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6801 
6802     TRACE_FUNCNAME(idx);
6803 
6804     va_TraceMsg(trace_ctx, "\tcontext = 0x%08x\n", context);
6805     va_TraceMsg(trace_ctx, "\trender_targets = 0x%08x\n", trace_ctx->trace_rendertarget);
6806     va_TraceMsg(trace_ctx, NULL);
6807 }
6808 
va_TraceEndPictureExt(VADisplay dpy,VAContextID context,int endpic_done)6809 void va_TraceEndPictureExt(
6810     VADisplay dpy,
6811     VAContextID context,
6812     int endpic_done
6813 )
6814 {
6815     int encode, decode, jpeg;
6816     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
6817     /* avoid to create so many empty files */
6818     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
6819     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
6820     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
6821 
6822     /* trace encode source surface, can do it before HW completes rendering */
6823     if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
6824         (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG)))
6825         va_TraceSurface(dpy, context);
6826 
6827     /* trace decoded surface, do it after HW completes rendering */
6828     if (decode && ((va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE))) {
6829         vaSyncSurface(dpy, trace_ctx->trace_rendertarget);
6830         va_TraceSurface(dpy, context);
6831     }
6832 }
6833 
6834 
va_TraceSyncSurface(VADisplay dpy,VASurfaceID render_target)6835 void va_TraceSyncSurface(
6836     VADisplay dpy,
6837     VASurfaceID render_target
6838 )
6839 {
6840     DPY2TRACE_VIRCTX(dpy);
6841 
6842     TRACE_FUNCNAME(idx);
6843 
6844     va_TraceMsg(trace_ctx, "\trender_target = 0x%08x\n", render_target);
6845     va_TraceMsg(trace_ctx, NULL);
6846 
6847     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6848 }
6849 
va_TraceSyncSurface2(VADisplay dpy,VASurfaceID surface,uint64_t timeout_ns)6850 void va_TraceSyncSurface2(
6851     VADisplay dpy,
6852     VASurfaceID surface,
6853     uint64_t timeout_ns
6854 )
6855 {
6856     DPY2TRACE_VIRCTX(dpy);
6857 
6858     TRACE_FUNCNAME(idx);
6859 
6860     va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
6861     va_TraceMsg(trace_ctx, "\ttimeout_ns = %lld\n", timeout_ns);
6862     va_TraceMsg(trace_ctx, NULL);
6863 
6864     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6865 }
6866 
va_TraceQuerySurfaceAttributes(VADisplay dpy,VAConfigID config,VASurfaceAttrib * attrib_list,unsigned int * num_attribs)6867 void va_TraceQuerySurfaceAttributes(
6868     VADisplay           dpy,
6869     VAConfigID          config,
6870     VASurfaceAttrib    *attrib_list,
6871     unsigned int       *num_attribs
6872 )
6873 {
6874     DPY2TRACE_VIRCTX(dpy);
6875 
6876     TRACE_FUNCNAME(idx);
6877     va_TraceMsg(trace_ctx, "\tconfig = 0x%08x\n", config);
6878     va_TraceSurfaceAttributes(trace_ctx, attrib_list, num_attribs, 0);
6879 
6880     va_TraceMsg(trace_ctx, NULL);
6881 
6882     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6883 }
6884 
6885 
va_TraceQuerySurfaceStatus(VADisplay dpy,VASurfaceID render_target,VASurfaceStatus * status)6886 void va_TraceQuerySurfaceStatus(
6887     VADisplay dpy,
6888     VASurfaceID render_target,
6889     VASurfaceStatus *status    /* out */
6890 )
6891 {
6892     DPY2TRACE_VIRCTX(dpy);
6893 
6894     TRACE_FUNCNAME(idx);
6895 
6896     va_TraceMsg(trace_ctx, "\trender_target = 0x%08x\n", render_target);
6897     if (status)
6898         va_TraceMsg(trace_ctx, "\tstatus = 0x%08x\n", *status);
6899     va_TraceMsg(trace_ctx, NULL);
6900 
6901     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6902 }
6903 
6904 
va_TraceQuerySurfaceError(VADisplay dpy,VASurfaceID surface,VAStatus error_status,void ** error_info)6905 void va_TraceQuerySurfaceError(
6906     VADisplay dpy,
6907     VASurfaceID surface,
6908     VAStatus error_status,
6909     void **error_info       /*out*/
6910 )
6911 {
6912     DPY2TRACE_VIRCTX(dpy);
6913 
6914     TRACE_FUNCNAME(idx);
6915     va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
6916     va_TraceMsg(trace_ctx, "\terror_status = 0x%08x\n", error_status);
6917     if (error_info && (error_status == VA_STATUS_ERROR_DECODING_ERROR)) {
6918         VASurfaceDecodeMBErrors *p = *error_info;
6919         while (p && (p->status != -1)) {
6920             va_TraceMsg(trace_ctx, "\t\tstatus = %d\n", p->status);
6921             va_TraceMsg(trace_ctx, "\t\tstart_mb = %d\n", p->start_mb);
6922             va_TraceMsg(trace_ctx, "\t\tend_mb = %d\n", p->end_mb);
6923             p++; /* next error record */
6924         }
6925     }
6926     va_TraceMsg(trace_ctx, NULL);
6927 
6928     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6929 }
6930 
va_TraceSyncBuffer(VADisplay dpy,VABufferID buf_id,uint64_t timeout_ns)6931 void va_TraceSyncBuffer(
6932     VADisplay dpy,
6933     VABufferID buf_id,
6934     uint64_t timeout_ns
6935 )
6936 {
6937     DPY2TRACE_VIRCTX(dpy);
6938 
6939     TRACE_FUNCNAME(idx);
6940 
6941     va_TraceMsg(trace_ctx, "\tbuf_id = 0x%08x\n", buf_id);
6942     va_TraceMsg(trace_ctx, "\ttimeout_ns = %lld\n", timeout_ns);
6943     va_TraceMsg(trace_ctx, NULL);
6944 
6945     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6946 }
6947 
va_TraceMaxNumDisplayAttributes(VADisplay dpy,int number)6948 void va_TraceMaxNumDisplayAttributes(
6949     VADisplay dpy,
6950     int number
6951 )
6952 {
6953     DPY2TRACE_VIRCTX(dpy);
6954 
6955     TRACE_FUNCNAME(idx);
6956 
6957     va_TraceMsg(trace_ctx, "\tmax_display_attributes = %d\n", number);
6958     va_TraceMsg(trace_ctx, NULL);
6959 
6960     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6961 }
6962 
va_TraceQueryDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int * num_attributes)6963 void va_TraceQueryDisplayAttributes(
6964     VADisplay dpy,
6965     VADisplayAttribute *attr_list,    /* out */
6966     int *num_attributes               /* out */
6967 )
6968 {
6969     int i;
6970 
6971     if (attr_list == NULL || num_attributes == NULL)
6972         return;
6973 
6974     DPY2TRACE_VIRCTX(dpy);
6975 
6976     TRACE_FUNCNAME(idx);
6977     va_TraceMsg(trace_ctx, "\tnum_attributes = %d\n", *num_attributes);
6978 
6979     for (i = 0; i < *num_attributes; i++) {
6980         va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n", i);
6981         va_TraceMsg(trace_ctx, "\t  type = 0x%08x\n", attr_list[i].type);
6982         va_TraceMsg(trace_ctx, "\t  min_value = %d\n", attr_list[i].min_value);
6983         va_TraceMsg(trace_ctx, "\t  max_value = %d\n", attr_list[i].max_value);
6984         va_TraceMsg(trace_ctx, "\t  value = %d\n", attr_list[i].value);
6985         va_TraceMsg(trace_ctx, "\t  flags = %d\n", attr_list[i].flags);
6986     }
6987     va_TraceMsg(trace_ctx, NULL);
6988 
6989     DPY2TRACE_VIRCTX_EXIT(pva_trace);
6990 }
6991 
6992 
va_TraceDisplayAttributes(struct trace_context * trace_ctx,VADisplayAttribute * attr_list,int num_attributes)6993 static void va_TraceDisplayAttributes(
6994     struct trace_context *trace_ctx,
6995     VADisplayAttribute *attr_list,
6996     int num_attributes
6997 )
6998 {
6999     int i;
7000 
7001     if (attr_list == NULL)
7002         return;
7003 
7004     va_TraceMsg(trace_ctx, "\tnum_attributes = %d\n", num_attributes);
7005 
7006     for (i = 0; i < num_attributes; i++) {
7007         va_TraceMsg(trace_ctx, "\tattr_list[%d] =\n", i);
7008         va_TraceMsg(trace_ctx, "\t  type = 0x%08x\n", attr_list[i].type);
7009         va_TraceMsg(trace_ctx, "\t  min_value = %d\n", attr_list[i].min_value);
7010         va_TraceMsg(trace_ctx, "\t  max_value = %d\n", attr_list[i].max_value);
7011         va_TraceMsg(trace_ctx, "\t  value = %d\n", attr_list[i].value);
7012         va_TraceMsg(trace_ctx, "\t  flags = %d\n", attr_list[i].flags);
7013     }
7014     va_TraceMsg(trace_ctx, NULL);
7015 }
7016 
7017 
va_TraceGetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)7018 void va_TraceGetDisplayAttributes(
7019     VADisplay dpy,
7020     VADisplayAttribute *attr_list,
7021     int num_attributes
7022 )
7023 {
7024     DPY2TRACE_VIRCTX(dpy);
7025 
7026     TRACE_FUNCNAME(idx);
7027 
7028     va_TraceDisplayAttributes(trace_ctx, attr_list, num_attributes);
7029 
7030     DPY2TRACE_VIRCTX_EXIT(pva_trace);
7031 }
7032 
va_TraceSetDisplayAttributes(VADisplay dpy,VADisplayAttribute * attr_list,int num_attributes)7033 void va_TraceSetDisplayAttributes(
7034     VADisplay dpy,
7035     VADisplayAttribute *attr_list,
7036     int num_attributes
7037 )
7038 {
7039     DPY2TRACE_VIRCTX(dpy);
7040 
7041     TRACE_FUNCNAME(idx);
7042 
7043     va_TraceDisplayAttributes(trace_ctx, attr_list, num_attributes);
7044 
7045     DPY2TRACE_VIRCTX_EXIT(pva_trace);
7046 }
7047 
7048 
va_TracePutSurface(VADisplay dpy,VASurfaceID surface,void * draw,short srcx,short srcy,unsigned short srcw,unsigned short srch,short destx,short desty,unsigned short destw,unsigned short desth,VARectangle * cliprects,unsigned int number_cliprects,unsigned int flags)7049 void va_TracePutSurface(
7050     VADisplay dpy,
7051     VASurfaceID surface,
7052     void *draw, /* the target Drawable */
7053     short srcx,
7054     short srcy,
7055     unsigned short srcw,
7056     unsigned short srch,
7057     short destx,
7058     short desty,
7059     unsigned short destw,
7060     unsigned short desth,
7061     VARectangle *cliprects, /* client supplied clip list */
7062     unsigned int number_cliprects, /* number of clip rects in the clip list */
7063     unsigned int flags /* de-interlacing flags */
7064 )
7065 {
7066     DPY2TRACE_VIRCTX(dpy);
7067 
7068     TRACE_FUNCNAME(idx);
7069 
7070     va_TraceMsg(trace_ctx, "\tsurface = 0x%08x\n", surface);
7071     va_TraceMsg(trace_ctx, "\tdraw = 0x%p\n", draw);
7072     va_TraceMsg(trace_ctx, "\tsrcx = %d\n", srcx);
7073     va_TraceMsg(trace_ctx, "\tsrcy = %d\n", srcy);
7074     va_TraceMsg(trace_ctx, "\tsrcw = %d\n", srcw);
7075     va_TraceMsg(trace_ctx, "\tsrch = %d\n", srch);
7076     va_TraceMsg(trace_ctx, "\tdestx = %d\n", destx);
7077     va_TraceMsg(trace_ctx, "\tdesty = %d\n", desty);
7078     va_TraceMsg(trace_ctx, "\tdestw = %d\n", destw);
7079     va_TraceMsg(trace_ctx, "\tdesth = %d\n", desth);
7080     va_TraceMsg(trace_ctx, "\tcliprects = 0x%p\n", cliprects);
7081     va_TraceMsg(trace_ctx, "\tnumber_cliprects = %d\n", number_cliprects);
7082     va_TraceMsg(trace_ctx, "\tflags = 0x%08x\n", flags);
7083     va_TraceMsg(trace_ctx, NULL);
7084 
7085     DPY2TRACE_VIRCTX_EXIT(pva_trace);
7086 }
7087 
va_TraceStatus(VADisplay dpy,const char * funcName,VAStatus status)7088 void va_TraceStatus(VADisplay dpy, const char * funcName, VAStatus status)
7089 {
7090     DPY2TRACE_VIRCTX(dpy);
7091 
7092     va_TraceMsg(trace_ctx, "=========%s ret = %s, %s \n", funcName, vaStatusStr(status), vaErrorStr(status));
7093     DPY2TRACE_VIRCTX_EXIT(pva_trace);
7094 }
7095 
va_TraceEvent(VADisplay dpy,unsigned short id,unsigned short opcode,unsigned int num,VAEventData * desc)7096 void va_TraceEvent(
7097     VADisplay dpy,
7098     unsigned short id,
7099     unsigned short opcode,
7100     unsigned int num,
7101     VAEventData *desc
7102 )
7103 {
7104     struct va_trace *pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
7105     int data[VA_TRACE_MAX_SIZE / sizeof(int)];
7106     size_t write_size = 0;
7107     char *p_data;
7108     int i;
7109 
7110     if (pva_trace == NULL || pva_trace->ftrace_fd < 0) {
7111         return;
7112     }
7113     /* trace event header: 32bit va trace id; 32bit event id + size; 32bit opcode */
7114     data[0] = VA_TRACE_ID;
7115     data[1] = id << 16;
7116     data[2] = opcode;
7117     /* append event data in scattered list */
7118     p_data = (char *)&data[3];
7119     write_size = VA_TRACE_HEADER_SIZE;
7120     for (i = 0; i < num; i++) {
7121         if (write_size + desc[i].size > VA_TRACE_MAX_SIZE) {
7122             va_errorMessage(pva_trace->dpy, "error: trace event %d carry too big data. max size %d \n", id, VA_TRACE_MAX_SIZE);
7123             break;
7124         }
7125         if (desc[i].buf) {
7126             memcpy(p_data, desc[i].buf, desc[i].size);
7127         } else {
7128             /*fill with 0xff for null input. 0 could be valid some case. */
7129             memset(p_data, 0xff, desc[i].size);
7130         }
7131         p_data += desc[i].size;
7132         write_size += desc[i].size;
7133     }
7134     if (i == num) {
7135         data[1] |= write_size; /* set event data size before write */
7136         write_size = write(pva_trace->ftrace_fd, data, write_size);
7137     }
7138     return;
7139 }
7140 
va_TraceEventBuffers(VADisplay dpy,VAContextID context,int num_buffers,VABufferID * buffers)7141 void va_TraceEventBuffers(
7142     VADisplay dpy,
7143     VAContextID context,
7144     int num_buffers,
7145     VABufferID *buffers)
7146 {
7147     struct va_trace *pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
7148     VABufferType type;
7149     unsigned int size, num;
7150     int i;
7151 
7152     if (pva_trace == NULL || pva_trace->ftrace_fd < 0) {
7153         return;
7154     }
7155     for (i = 0; i < num_buffers; i++) {
7156         unsigned char *pbuf = NULL;
7157         unsigned int total = 0;
7158         int data[3];
7159         vaBufferInfo(dpy, context, buffers[i], &type, &size, &num);
7160         vaMapBuffer(dpy, buffers[i], (void **)&pbuf);
7161         if (pbuf == NULL)
7162             continue;
7163         total = size * num;
7164         /* fill buffer dump header */
7165         data[0] = type;
7166         data[1] = size;
7167         data[2] = total;
7168         /* apeend buffer data */
7169         if (VA_TRACE_HEADER_SIZE + sizeof(data) + total <= VA_TRACE_MAX_SIZE) {
7170             /* send in trace info opcode if data is small */
7171             VAEventData desc[] = {{data, sizeof(data)}, {pbuf, total}};
7172             va_TraceEvent(dpy, BUFFER_DATA, TRACE_INFO, 2, desc);
7173         } else {
7174             // split buffer data to send in multi trace event
7175             VAEventData desc[2] = {{data, sizeof(data)}, {NULL, 0}};
7176             unsigned int write_size = 0;
7177 
7178             va_TraceEvent(dpy, BUFFER_DATA, TRACE_BEGIN, 1, desc);
7179             desc[0].buf = &write_size;
7180             desc[0].size = sizeof(write_size);
7181             while (total > 0) {
7182                 write_size = total;
7183                 if (write_size > VA_TRACE_MAX_SIZE - VA_TRACE_HEADER_SIZE - sizeof(unsigned int)) {
7184                     write_size = VA_TRACE_MAX_SIZE - VA_TRACE_HEADER_SIZE - sizeof(unsigned int);
7185                 }
7186                 desc[1].buf = pbuf;
7187                 desc[1].size = write_size;
7188                 va_TraceEvent(dpy, BUFFER_DATA, TRACE_DATA, 2, desc);
7189                 total -= write_size;
7190                 pbuf += write_size;
7191             }
7192             va_TraceEvent(dpy, BUFFER_DATA, TRACE_END, 0, NULL);
7193         }
7194     }
7195     return;
7196 }
7197 
va_TraceExportSurfaceHandle(VADisplay dpy,VASurfaceID surfaceId,uint32_t memType,uint32_t flags,void * descriptor)7198 void va_TraceExportSurfaceHandle(
7199     VADisplay        dpy,
7200     VASurfaceID      surfaceId,
7201     uint32_t         memType,
7202     uint32_t         flags,
7203     void             *descriptor)
7204 {
7205     int i;
7206 
7207     DPY2TRACE_VIRCTX(dpy);
7208 
7209     TRACE_FUNCNAME(idx);
7210 
7211     va_TraceMsg(trace_ctx, "\tsurfaceId = 0x%08x\n", surfaceId);
7212     va_TraceMsg(trace_ctx, "\tmemType   = 0x%08x\n", memType);
7213     va_TraceMsg(trace_ctx, "\tflags     = 0x%08x\n", flags);
7214 
7215     if (memType != VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2 && memType != VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_3) {
7216         DPY2TRACE_VIRCTX_EXIT(pva_trace);
7217         return;
7218     }
7219 
7220     VADRMPRIMESurfaceDescriptor *desc = (VADRMPRIMESurfaceDescriptor *)descriptor;
7221 
7222     if (!desc) {
7223         DPY2TRACE_VIRCTX_EXIT(pva_trace);
7224         return;
7225     }
7226 
7227     va_TraceMsg(trace_ctx, "\tfourcc      = %u\n", desc->fourcc);
7228     va_TraceMsg(trace_ctx, "\twidth       = %u\n", desc->width);
7229     va_TraceMsg(trace_ctx, "\theight      = %u\n", desc->height);
7230 
7231     va_TraceMsg(trace_ctx, "\tnum_objects = %u\n", desc->num_objects);
7232     for (i = 0; i < desc->num_objects; i++) {
7233         va_TraceMsg(trace_ctx, "\tobject %d, fd       = %d\n", i, desc->objects[i].fd);
7234         va_TraceMsg(trace_ctx, "\tobject %d, size     = %u\n", i, desc->objects[i].size);
7235         va_TraceMsg(trace_ctx, "\tobject %d, modifier = 0x%llx\n", i, desc->objects[i].drm_format_modifier);
7236     }
7237 
7238     va_TraceMsg(trace_ctx, "\tnum_objects = %u\n", desc->num_layers);
7239     for (i = 0; i < desc->num_layers; i++) {
7240         va_TraceMsg(trace_ctx, "\tlayer %d, drm_format = %d\n", i, desc->layers[i].drm_format);
7241         va_TraceMsg(trace_ctx, "\tlayer %d, size       = %u\n", i, desc->layers[i].num_planes);
7242         va_TraceMsg(trace_ctx, "\tlayer %d, object idx = [%d, %d, %d, %d]\n", i, desc->layers[i].object_index[0], desc->layers[i].object_index[1], desc->layers[i].object_index[2], desc->layers[i].object_index[3]);
7243         va_TraceMsg(trace_ctx, "\tlayer %d, offset     = [%d, %d, %d, %d]\n", i, desc->layers[i].offset[0], desc->layers[i].offset[1], desc->layers[i].offset[2], desc->layers[i].offset[3]);
7244         va_TraceMsg(trace_ctx, "\tlayer %d, pitch      = [%d, %d, %d, %d]\n", i, desc->layers[i].pitch[0], desc->layers[i].pitch[1], desc->layers[i].pitch[2], desc->layers[i].pitch[3]);
7245     }
7246 
7247     DPY2TRACE_VIRCTX_EXIT(pva_trace);
7248 }
7249