MGS-2092 [#imx-101] apply errata workaround to fix mmu exception
authorXianzhong <xianzhong.li@nxp.com>
Fri, 10 Feb 2017 06:11:09 +0000 (14:11 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:58:26 +0000 (14:58 -0500)
fixed gc7000xsvx mmu exception with hardware problems:
  - Texture border clamps to wrong max value (HBN1839)
  - MMU exception created when Image Load reads pixel data at end of
    buffer(HBN1847)

only apply errata workaround for the texture with GL_CLAMP_TO_BORDER.

Date: Jan 16, 2017
Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
drivers/mxc/gpu-viv/hal/kernel/inc/gc_hal_enum.h

index 44a7d9e..43bb6ec 100644 (file)
@@ -495,6 +495,8 @@ typedef enum _gceFEATURE
     gcvFEATURE_SH_HALF_DEPENDENCY_FIX,
     gcvFEATURE_SH_CLOCK_GATE_FIX,
     gcvFEATURE_GPIPE_CLOCK_GATE_FIX,
+    gcvFEATURE_TX_BORDER_CLAMP_FIX,
+    gcvFEATURE_SH_IMAGE_LD_LAST_PIXEL_FIX,
     /* Insert features above this comment only. */
     gcvFEATURE_COUNT                /* Not a feature. */
 }
@@ -652,7 +654,9 @@ typedef enum _gceSURF_TYPE
 
     gcvSURF_NO_HZ              = 0x100000,
 
-    gcvSURF_CMA_LIMIT           = 0x200000,
+    gcvSURF_3D                  = 0x200000, /* It's 3d surface */
+
+    gcvSURF_CMA_LIMIT           = 0x400000,
 
     gcvSURF_TEXTURE_LINEAR               = gcvSURF_TEXTURE
                                          | gcvSURF_LINEAR,
@@ -666,7 +670,7 @@ typedef enum _gceSURF_TYPE
     gcvSURF_RENDER_TARGET_NO_COMPRESSION = gcvSURF_RENDER_TARGET
                                          | gcvSURF_NO_COMPRESSION,
 
-    gcvSURF_RENDER_TARGET_TS_DIRTY = gcvSURF_RENDER_TARGET
+    gcvSURF_RENDER_TARGET_TS_DIRTY       = gcvSURF_RENDER_TARGET
                                          | gcvSURF_TILE_STATUS_DIRTY,
 
     gcvSURF_DEPTH_NO_TILE_STATUS         = gcvSURF_DEPTH
@@ -688,6 +692,9 @@ typedef enum _gceSURF_TYPE
 
     gcvSURF_CACHEABLE_BITMAP             = gcvSURF_BITMAP
                                          | gcvSURF_CACHEABLE,
+
+    gcvSURF_TEXTURE_3D                  = gcvSURF_TEXTURE
+                                         | gcvSURF_3D
 }
 gceSURF_TYPE;
 
@@ -1193,7 +1200,8 @@ gceSURF_INFO_TYPE;
 /* Format modifiers. */
 typedef enum _gceSURF_FORMAT_MODE
 {
-    gcvSURF_FORMAT_OCL = 0x80000000
+    gcvSURF_FORMAT_OCL          = 0x80000000,
+    gcvSURF_FORMAT_PATCH_BORDER = 0x40000000,
 }
 gceSURF_FORMAT_MODE;