Package: i965-va-driver Version: 2.2.0+dfsg1-1 Severity: important Hi,
I'm developing an application that uses VA-API to decode JPEGs, and then fetch the decoded data down to the CPU. For this, you have two choices; either call vaDeriveImage() on the surface (which always gives you uncached memory, which is unusably slow to read data from), or create your own image and then vaGetImage() the surface into said image. However, on my Haswell laptop, vaGetImage() simply returns VA_STATUS_ERROR_UNIMPLEMENTED when running the Debian version of i965-va-driver. It turns out that after the patches to remove nonfree VPP shaders, .has_vpp = 0 on Haswell (and several others), but it still advertises a hardware getImage (.has_accelerated_getimage = 1). i965_hw_getimage() calls i965_image_processing() to do its bidding, which hits this code path: VAStatus status = VA_STATUS_ERROR_UNIMPLEMENTED; if (HAS_VPP(i965)) { // Checks .has_vpp ... } return status; Now, since .has_vpp has been set to 0 in Debian, this means that the simple operation of copying a surface to an image breaks completely, which breaks a major part of VA functionality. As far as I can see, this does not require any nonfree shaders; if I remove the part of 0002-Disable-post-processing-shaders.patch that sets .has_vpp = 0 for Haswell, vaGetImage() works just like it should. Is perhaps this patch too heavy-handed, and something more fine-grained required? -- Homepage: https://www.sesse.net/