From: Zhao Yakui <[email protected]>

This is to fix the regression caused by 
e25b3fbce3fc3c13ca054ba9a512bec954642fa8.
When one surface is created,the height/width is aligned to 16 pixels. But when
trying to allocate buffer object for it on SNB/IVB and the later chips,the width
is aligned to 128 and height is aligned to 32. If the surface is mapped and 
accessed
before allocating surface buffer object, the APP will get incorrect dimension.

Signed-off-by: Zhao Yakui <[email protected]>
---
 src/i965_drv_video.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 3bea253..662d8af 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -516,8 +516,13 @@ i965_CreateSurfaces(VADriverContextP ctx,
         obj_surface->orig_width = width;
         obj_surface->orig_height = height;
 
-        obj_surface->width = ALIGN(width, 16);
-        obj_surface->height = ALIGN(height, 16);
+       if (IS_G4X(i965->intel.device_id) || 
IS_IRONLAKE(i965->intel.device_id)) {
+               obj_surface->width = ALIGN(width, 16);
+               obj_surface->height = ALIGN(height, 16);
+       } else {
+               obj_surface->width = ALIGN(width, 128);
+               obj_surface->height = ALIGN(height, 32);
+       }
         obj_surface->flags = SURFACE_REFERENCED;
         obj_surface->fourcc = 0;
         obj_surface->bo = NULL;
-- 
1.7.12-rc1

_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to