From 94ca3377019b57f6558641de45750adaa7a8c34a Mon Sep 17 00:00:00 2001 From: Austin Yuan Date: Sat, 8 Jun 2013 11:16:03 +0800 Subject: [PATCH] vatrace: trace vaQuerySurfaceAttributes Signed-off-by: Austin Yuan (cherry picked from commit e468728f9e49603f91ccbce3a232aa3bd98d1fd4) [Haihao: Remove JPEG encode from this commit] Signed-off-by: Xiang, Haihao --- va/va.c | 34 ++++++++------ va/va_trace.c | 144 +++++++++++++++++++++++++++++++++++++++++++++++++--------- va/va_trace.h | 7 +++ 3 files changed, 151 insertions(+), 34 deletions(-) diff --git a/va/va.c b/va/va.c index 9ad2db4..ae853bb 100644 --- a/va/va.c +++ b/va/va.c @@ -827,11 +827,14 @@ vaQuerySurfaceAttributes( return VA_STATUS_ERROR_INVALID_DISPLAY; if (!ctx->vtable->vaQuerySurfaceAttributes) - return va_impl_query_surface_attributes(ctx, config, - attrib_list, num_attribs); + vaStatus = va_impl_query_surface_attributes(ctx, config, + attrib_list, num_attribs); + else + vaStatus = ctx->vtable->vaQuerySurfaceAttributes(ctx, config, + attrib_list, num_attribs); + + VA_TRACE_LOG(va_TraceQuerySurfaceAttributes, dpy, config, attrib_list, num_attribs); - vaStatus = ctx->vtable->vaQuerySurfaceAttributes(ctx, config, - attrib_list, num_attribs); return vaStatus; } @@ -856,16 +859,14 @@ vaCreateSurfaces( return VA_STATUS_ERROR_INVALID_DISPLAY; if (ctx->vtable->vaCreateSurfaces2) - return ctx->vtable->vaCreateSurfaces2(ctx, format, width, height, + vaStatus = ctx->vtable->vaCreateSurfaces2(ctx, format, width, height, surfaces, num_surfaces, attrib_list, num_attribs); - - if (attrib_list && num_attribs > 0) - return VA_STATUS_ERROR_ATTR_NOT_SUPPORTED; - - vaStatus = ctx->vtable->vaCreateSurfaces(ctx, width, height, format, - num_surfaces, surfaces); - + else if (attrib_list && num_attribs > 0) + vaStatus = VA_STATUS_ERROR_ATTR_NOT_SUPPORTED; + else + vaStatus = ctx->vtable->vaCreateSurfaces(ctx, width, height, format, + num_surfaces, surfaces); VA_TRACE_LOG(va_TraceCreateSurfaces, dpy, width, height, format, num_surfaces, surfaces, attrib_list, num_attribs); @@ -881,10 +882,17 @@ VAStatus vaDestroySurfaces ( ) { VADriverContextP ctx; + VAStatus vaStatus; + CHECK_DISPLAY(dpy); ctx = CTX(dpy); - return ctx->vtable->vaDestroySurfaces( ctx, surface_list, num_surfaces ); + VA_TRACE_LOG(va_TraceDestroySurfaces, + dpy, surface_list, num_surfaces); + + vaStatus = ctx->vtable->vaDestroySurfaces( ctx, surface_list, num_surfaces ); + + return vaStatus; } VAStatus vaCreateContext ( diff --git a/va/va_trace.c b/va/va_trace.c index bf1c525..8f5991d 100644 --- a/va/va_trace.c +++ b/va/va_trace.c @@ -475,9 +475,11 @@ void va_TraceCreateConfig( va_TraceMsg(idx, "\tprofile = %d\n", profile); va_TraceMsg(idx, "\tentrypoint = %d\n", entrypoint); va_TraceMsg(idx, "\tnum_attribs = %d\n", num_attribs); - for (i = 0; i < num_attribs; i++) { - va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type); - va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value); + if (attrib_list) { + for (i = 0; i < num_attribs; i++) { + va_TraceMsg(idx, "\t\tattrib_list[%d].type = 0x%08x\n", i, attrib_list[i].type); + va_TraceMsg(idx, "\t\tattrib_list[%d].value = 0x%08x\n", i, attrib_list[i].value); + } } va_TraceMsg(idx, NULL); @@ -519,6 +521,41 @@ void va_TraceCreateConfig( } } +static void va_TraceSurfaceAttributes( + int idx, + VASurfaceAttrib *attrib_list, + unsigned int *num_attribs +) +{ + int i, num; + VASurfaceAttrib *p; + + if (!attrib_list || !num_attribs) + return; + + p = attrib_list; + num = *num_attribs; + if (num > VASurfaceAttribCount) + num = VASurfaceAttribCount; + + for (i=0; itype); + va_TraceMsg(idx, "\t\tflags = %d\n", p->flags); + va_TraceMsg(idx, "\t\tvalue.type = %d\n", p->value.type); + if (p->value.type == VAGenericValueTypeInteger) + va_TraceMsg(idx, "\t\tvalue.value.i = 0x%08x\n", p->value.value.i); + else if (p->value.type == VAGenericValueTypeFloat) + va_TraceMsg(idx, "\t\tvalue.value.f = %f\n", p->value.value.f); + else if (p->value.type == VAGenericValueTypePointer) + va_TraceMsg(idx, "\t\tvalue.value.p = %p\n", p->value.value.p); + else if (p->value.type == VAGenericValueTypeFunc) + va_TraceMsg(idx, "\t\tvalue.value.fn = %p\n", p->value.value.fn); + + p++; + } +} void va_TraceCreateSurfaces( VADisplay dpy, @@ -541,9 +578,33 @@ void va_TraceCreateSurfaces( va_TraceMsg(idx, "\tformat = %d\n", format); va_TraceMsg(idx, "\tnum_surfaces = %d\n", num_surfaces); - for (i = 0; i < num_surfaces; i++) - va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]); + if (surfaces) { + for (i = 0; i < num_surfaces; i++) + va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surfaces[i]); + } + + va_TraceSurfaceAttributes(idx, attrib_list, &num_attribs); + + va_TraceMsg(idx, NULL); +} + + +void va_TraceDestroySurfaces( + VADisplay dpy, + VASurfaceID *surface_list, + int num_surfaces +) +{ + int i; + DPY2INDEX(dpy); + + TRACE_FUNCNAME(idx); + if (surface_list) { + for (i = 0; i < num_surfaces; i++) + va_TraceMsg(idx, "\t\tsurfaces[%d] = 0x%08x\n", i, surface_list[i]); + } + va_TraceMsg(idx, NULL); } @@ -563,18 +624,22 @@ void va_TraceCreateContext( DPY2INDEX(dpy); TRACE_FUNCNAME(idx); - + + va_TraceMsg(idx, "\tconfig = 0x%08x\n", config_id); va_TraceMsg(idx, "\twidth = %d\n", picture_width); va_TraceMsg(idx, "\theight = %d\n", picture_height); va_TraceMsg(idx, "\tflag = 0x%08x\n", flag); va_TraceMsg(idx, "\tnum_render_targets = %d\n", num_render_targets); - for (i=0; istatus != -1) { + while (p && (p->status != -1)) { va_TraceMsg(idx, "\t\tstatus = %d\n", p->status); va_TraceMsg(idx, "\t\tstart_mb = %d\n", p->start_mb); va_TraceMsg(idx, "\t\tend_mb = %d\n", p->end_mb); @@ -2578,7 +2675,9 @@ void va_TraceQueryDisplayAttributes ( DPY2INDEX(dpy); va_TraceMsg(idx, "\tnum_attributes = %d\n", *num_attributes); - + if (attr_list == NULL || num_attributes == NULL) + return; + for (i=0; i<*num_attributes; i++) { va_TraceMsg(idx, "\tattr_list[%d] =\n"); va_TraceMsg(idx, "\t typ = 0x%08x\n", attr_list[i].type); @@ -2602,6 +2701,9 @@ static void va_TraceDisplayAttributes ( DPY2INDEX(dpy); va_TraceMsg(idx, "\tnum_attributes = %d\n", num_attributes); + if (attr_list == NULL) + return; + for (i=0; i