[Intel-gfx] libva to play h264 on GMA4500HD

Alexey Fisher bug-track at fisher-privat.net
Tue Jul 13 15:48:52 CEST 2010


On Di, 2010-07-13 at 01:47 +0100, Pedro Ribeiro wrote:
> 2010/7/12 Niccolò Belli <darkbasic4 at gmail.com>:
> > I fear there is still no support for gma45...
> >
> > Darkbasic
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> >
> 
> Support should come in Q3 according to the devs.

I just digged to the code. Now i a bit disappointed, at the time i
choice this board, intel made difference between GMA4500 and GMA4500HD.
In the code there is no difference. it is just one of the boards form
kernels_gen4 with not really "hardware" acceleration:
i965_media_h264.c
        if (IS_IRONLAKE(i965->intel.device_id)) {
            h264_avc_kernels = h264_avc_kernels_gen5;
            avc_mc_kernel_offset = avc_mc_kernel_offset_gen5;
            intra_kernel_header = &intra_kernel_header_gen5;
            i965_h264_context->use_avc_hw_scoreboard = 1;
            i965_h264_context->use_hw_w128 = 1;
        } else {
            h264_avc_kernels = h264_avc_kernels_gen4;
            avc_mc_kernel_offset = avc_mc_kernel_offset_gen4;
            intra_kernel_header = &intra_kernel_header_gen4;
            i965_h264_context->use_avc_hw_scoreboard = 0;   <===
            i965_h264_context->use_hw_w128 = 0;             <===
        }


Any way, there is always some thing better...
About the bug, i see gen4 is enabled to do h264. 
Devs put assert here to prevent some thing bad - thank you.

Here is what i get:
i965_avc_ildb.c:620
============================================
	assert(avc_ildb_context->urb.cs_start +
		avc_ildb_context->urb.num_cs_entries *
		avc_ildb_context->urb.size_cs_entry <=
		URB_SIZE((&i965->intel)));
===============================================


and here is why i get it:
avc_ildb_context->urb.cs_start = 640
avc_ildb_context->urb.num_cs_entries = 1
avc_ildb_context->urb.size_cs_entry = 1
URB_SIZE((&i965->intel)) = 384


URB_SIZE is definded here:
i965_defines.h
========================================
#define URB_SIZE(intel)         (IS_IRONLAKE(intel->device_id) ? 1024 :
\
                                 IS_G4X(intel->device_id) ? 384 : 256)
===============================================


After it I tried to do some thing bad and set

avc_ildb_context->urb.size_vfe_entry = 380;

so i got GPU freeze. Now i'm happy :)

Hope this info help you.

Regards,
Alexey




More information about the Intel-gfx mailing list