OSDN Git Service

isl/state: Put pitch calculations together
[android-x86/external-mesa.git] / src / intel / isl / isl_surface_state.c
index 0ada3e4..50570aa 100644 (file)
@@ -291,6 +291,26 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    s.SurfaceVerticalAlignment = valign;
    s.SurfaceHorizontalAlignment = halign;
 
+   if (info->surf->tiling == ISL_TILING_W) {
+      /* From the Broadwell PRM documentation for this field:
+       *
+       *    "If the surface is a stencil buffer (and thus has Tile Mode set
+       *    to TILEMODE_WMAJOR), the pitch must be set to 2x the value
+       *    computed based on width, as the stencil buffer is stored with
+       *    two rows interleaved."
+       */
+      s.SurfacePitch = info->surf->row_pitch * 2 - 1;
+   } else {
+      s.SurfacePitch = info->surf->row_pitch - 1;
+   }
+
+#if GEN_GEN >= 8
+   s.SurfaceQPitch = get_qpitch(info->surf) >> 2;
+#elif GEN_GEN == 7
+   s.SurfaceArraySpacing = info->surf->array_pitch_span ==
+                           ISL_ARRAY_PITCH_SPAN_COMPACT;
+#endif
+
 #if GEN_GEN >= 8
    s.TileMode = isl_to_gen_tiling[info->surf->tiling];
 #else
@@ -299,11 +319,6 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
                                                      TILEWALK_YMAJOR;
 #endif
 
-#if (GEN_GEN == 7)
-   s.SurfaceArraySpacing = info->surf->array_pitch_span ==
-                           ISL_ARRAY_PITCH_SPAN_COMPACT;
-#endif
-
 #if GEN_GEN >= 8
    s.SamplerL2BypassModeDisable = true;
 #endif
@@ -325,10 +340,6 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    s.CubeFaceEnables = 0x3f;
 #endif
 
-#if GEN_GEN >= 8
-   s.SurfaceQPitch = get_qpitch(info->surf) >> 2;
-#endif
-
    s.MultisampledSurfaceStorageFormat =
       isl_to_gen_multisample_layout[info->surf->msaa_layout];
    s.NumberofMultisamples = ffs(info->surf->samples) - 1;
@@ -349,19 +360,6 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
    s.MCSEnable = false;
 #endif
 
-   if (info->surf->tiling == ISL_TILING_W) {
-      /* From the Broadwell PRM documentation for this field:
-       *
-       *    "If the surface is a stencil buffer (and thus has Tile Mode set
-       *    to TILEMODE_WMAJOR), the pitch must be set to 2x the value
-       *    computed based on width, as the stencil buffer is stored with
-       *    two rows interleaved."
-       */
-      s.SurfacePitch = info->surf->row_pitch * 2 - 1;
-   } else {
-      s.SurfacePitch = info->surf->row_pitch - 1;
-   }
-
 #if GEN_GEN >= 8
    /* From the CHV PRM, Volume 2d, page 321 (RENDER_SURFACE_STATE dword 0
     * bit 9 "Sampler L2 Bypass Mode Disable" Programming Notes):