On 11/11/2016 01:02 PM, Xiang, Haihao wrote:
On Wed, 2016-11-09 at 14:39 -0500, Zhao Yakui wrote:
Signed-off-by: Zhao Yakui<[email protected]>
---
  src/i965_gpe_utils.c | 16 ++++++++++++----
  src/i965_gpe_utils.h |  1 +
  2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
index a29237b..3cd41e8 100644
--- a/src/i965_gpe_utils.c
+++ b/src/i965_gpe_utils.c
@@ -1864,8 +1864,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
          height = gpe_resource->height / 2;
          pitch = gpe_resource->pitch;

-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4)>>  2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4)>>  2);
+            else
+                width = (ALIGN(width, 4)>>  2);
+        }

          if (tiling == I915_TILING_Y) {
              tile_alignment = 32;
@@ -1897,8 +1901,12 @@ gen9_gpe_context_add_surface(struct
i965_gpe_context *gpe_context,
          height = gpe_resource->height;
          pitch = gpe_resource->pitch;

-        if (gpe_surface->is_media_block_rw)
-            width = (ALIGN(width, 4)>>  2);
+        if (gpe_surface->is_media_block_rw) {
+            if (gpe_surface->is_10bit)
+                width = (ALIGN(width * 2, 4)>>  2);
+            else
+                width = (ALIGN(width, 4)>>  2);
+        }

          gen9_gpe_set_2d_surface_state(ss,
                                        gpe_surface-
cacheability_control,
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
index 39a6fad..c56d3d5 100644
--- a/src/i965_gpe_utils.h
+++ b/src/i965_gpe_utils.h
@@ -417,6 +417,7 @@ struct i965_gpe_surface
      unsigned int is_uv_surface:1;
      unsigned int is_media_block_rw:1;
      unsigned int is_raw_buffer:1;
+    unsigned int is_10bit     :1;

Do you have a better way if considering to support other>8bit format,
such as 12bits, 16bits etc in the future?

This is only to indicate that it is greater than 8-bit.
For the 12bit/16bit, it can be handled very well.
How about using is_16bpp?



      unsigned int vert_line_stride_offset;
      unsigned int vert_line_stride;

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

Reply via email to