| From 3a53032ebc5eb2c234a6678152590c5f4ca7757f Mon Sep 17 00:00:00 2001 |
| From: ChenJasonK <Jason.k.chen@intel.com> |
| Date: Thu, 26 Mar 2020 17:16:12 +0800 |
| Subject: [PATCH] [Media Common] Fix tiling issue |
| |
| For YV12 on Gen9, when driver set tile Y, but Gmm still create it as tile linear, thus driver need to query tiling info from gmm to update the tile type in DDI_MEDIA_SURFACE |
| |
| Change-Id: Id36ac4eca5fbcec3481477a4a6cac787c8e46a52 |
| --- |
| media_driver/linux/common/ddi/media_libva.cpp | 2 +- |
| .../linux/common/ddi/media_libva_util.cpp | 16 ++++++++++++++++ |
| 2 files changed, 17 insertions(+), 1 deletion(-) |
| |
| diff --git a/media_driver/linux/common/ddi/media_libva.cpp b/media_driver/linux/common/ddi/media_libva.cpp |
| index bd34dbf5..d0329cd8 100755 |
| --- a/media_driver/linux/common/ddi/media_libva.cpp |
| +++ b/media_driver/linux/common/ddi/media_libva.cpp |
| @@ -4847,7 +4847,7 @@ VAStatus DdiMedia_GetImage( |
| DDI_ASSERTMESSAGE("Unsupported surface type."); |
| return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; |
| } |
| - target_surface = (VASurfaceID)DdiMedia_CreateRenderTarget(mediaCtx, mediaFmt, vaimg->width, vaimg->height, nullptr, VA_SURFACE_ATTRIB_USAGE_HINT_VPP_WRITE); |
| + target_surface = (VASurfaceID)DdiMedia_CreateRenderTarget(mediaCtx, mediaFmt, vaimg->width, vaimg->height, nullptr, VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC); |
| DDI_CHK_RET(vaStatus, "Create temp surface failed."); |
| |
| VARectangle srcRect, dstRect; |
| diff --git a/media_driver/linux/common/ddi/media_libva_util.cpp b/media_driver/linux/common/ddi/media_libva_util.cpp |
| index acdcf4e9..b393cd51 100755 |
| --- a/media_driver/linux/common/ddi/media_libva_util.cpp |
| +++ b/media_driver/linux/common/ddi/media_libva_util.cpp |
| @@ -437,6 +437,22 @@ VAStatus DdiMediaUtil_AllocateSurface( |
| if (!DdiMediaUtil_IsExternalSurface(mediaSurface) || |
| mediaSurface->pSurfDesc->uiVaMemType == VA_SURFACE_ATTRIB_MEM_TYPE_VA) |
| { |
| + switch (gmmResourceInfo->GetTileType()) |
| + { |
| + case GMM_TILED_Y: |
| + tileformat = I915_TILING_Y; |
| + break; |
| + case GMM_TILED_X: |
| + tileformat = I915_TILING_X; |
| + break; |
| + case GMM_NOT_TILED: |
| + tileformat = I915_TILING_NONE; |
| + break; |
| + default: |
| + tileformat = I915_TILING_NONE; |
| + break; |
| + } |
| + |
| unsigned long ulPitch = 0; |
| if ( tileformat == I915_TILING_NONE ) |
| { |
| -- |
| 2.26.0.windows.1 |
| |