vk: Fix stride of stencil buffers
authorChad Versace <chad.versace@intel.com>
Fri, 28 Aug 2015 15:03:31 +0000 (08:03 -0700)
committerChad Versace <chad.versace@intel.com>
Fri, 28 Aug 2015 15:03:46 +0000 (08:03 -0700)
Stencil buffers have strange pitch. The PRM says:

  The pitch must be set to 2x the value computed based on width,
  as the stencil buffer is stored with two rows interleaved.

src/vulkan/gen7_cmd_buffer.c
src/vulkan/gen8_cmd_buffer.c

index 8fe59bab1c883c71521abd88ba687d75d02ccb41..b149673f405310b2af98825372a68aa622ed45b7 100644 (file)
@@ -585,7 +585,14 @@ gen7_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer)
    if (has_stencil) {
       anv_batch_emit(&cmd_buffer->batch, GEN7_3DSTATE_STENCIL_BUFFER,
          .StencilBufferObjectControlState = GEN7_MOCS,
-         .SurfacePitch = image->stencil_surface.stride - 1,
+
+         /* Stencil buffers have strange pitch. The PRM says:
+          *
+          *    The pitch must be set to 2x the value computed based on width,
+          *    as the stencil buffer is stored with two rows interleaved.
+          */
+         .SurfacePitch = 2 * image->stencil_surface.stride - 1,
+
          .SurfaceBaseAddress = {
             .bo = image->bo,
             .offset = image->offset + image->stencil_surface.offset,
index 3a7f009dc66236e3713135f49221b9d761c80867..5737879ffe7a25cd47b1402a4d75f668f7679424 100644 (file)
@@ -520,7 +520,14 @@ gen8_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer)
       anv_batch_emit(&cmd_buffer->batch, GEN8_3DSTATE_STENCIL_BUFFER,
          .StencilBufferEnable = true,
          .StencilBufferObjectControlState = GEN8_MOCS,
-         .SurfacePitch = image->stencil_surface.stride - 1,
+
+         /* Stencil buffers have strange pitch. The PRM says:
+          *
+          *    The pitch must be set to 2x the value computed based on width,
+          *    as the stencil buffer is stored with two rows interleaved.
+          */
+         .SurfacePitch = 2 * image->stencil_surface.stride - 1,
+
          .SurfaceBaseAddress = {
             .bo = image->bo,
             .offset = image->offset + image->stencil_surface.offset,