diff options
author | Chad Versace <[email protected]> | 2015-08-28 07:52:19 -0700 |
---|---|---|
committer | Chad Versace <[email protected]> | 2015-08-28 07:52:19 -0700 |
commit | c6f19b42486dd8f17c19779e38f7ee84f4f14a52 (patch) | |
tree | c411224fdef9ffbc2a12badafc0162b82a30a2b0 /src/vulkan/gen8_cmd_buffer.c | |
parent | 35b0262a2d80b8b21dfccaf9a099278d3f3f6a6c (diff) |
vk: Don't duplicate anv_depth_stencil_view's surface data
In anv_depth_stencil_view, replace the members
bo
depth_offset
depth_stride
depth_format
depth_qpitch
stencil_offset
stencil_stride
stencil_qpitch
with the single member
const struct anv_image *image
The removed members duplicated data in anv_image::depth_surface and
anv_image::stencil_surface.
Diffstat (limited to 'src/vulkan/gen8_cmd_buffer.c')
-rw-r--r-- | src/vulkan/gen8_cmd_buffer.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/vulkan/gen8_cmd_buffer.c b/src/vulkan/gen8_cmd_buffer.c index 0ec0f666ae0..5aa78528f5c 100644 --- a/src/vulkan/gen8_cmd_buffer.c +++ b/src/vulkan/gen8_cmd_buffer.c @@ -469,6 +469,7 @@ gen8_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) view = (const struct anv_depth_stencil_view *)aview; } + const struct anv_image *image = view ? view->image : NULL; const bool has_depth = view && view->format->depth_format; const bool has_stencil = view && view->format->has_stencil; @@ -483,8 +484,11 @@ gen8_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) .StencilWriteEnable = has_stencil, .HierarchicalDepthBufferEnable = false, .SurfaceFormat = view->format->depth_format, - .SurfacePitch = view->depth_stride - 1, - .SurfaceBaseAddress = { view->bo, view->depth_offset }, + .SurfacePitch = image->depth_surface.stride - 1, + .SurfaceBaseAddress = { + .bo = image->bo, + .offset = image->depth_surface.offset, + }, .Height = fb->height - 1, .Width = fb->width - 1, .LOD = 0, @@ -492,7 +496,7 @@ gen8_cmd_buffer_emit_depth_stencil(struct anv_cmd_buffer *cmd_buffer) .MinimumArrayElement = 0, .DepthBufferObjectControlState = GEN8_MOCS, .RenderTargetViewExtent = 1 - 1, - .SurfaceQPitch = view->depth_qpitch >> 2); + .SurfaceQPitch = image->depth_surface.qpitch >> 2); } else { /* Even when no depth buffer is present, the hardware requires that * 3DSTATE_DEPTH_BUFFER be programmed correctly. The Broadwell PRM says: @@ -524,9 +528,12 @@ 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 = view->stencil_stride - 1, - .SurfaceBaseAddress = { view->bo, view->stencil_offset }, - .SurfaceQPitch = view->stencil_qpitch >> 2); + .SurfacePitch = image->stencil_surface.stride - 1, + .SurfaceBaseAddress = { + .bo = image->bo, + .offset = image->offset + image->stencil_surface.offset, + }, + .SurfaceQPitch = image->stencil_surface.stride >> 2); } else { anv_batch_emit(&cmd_buffer->batch, GEN8_3DSTATE_STENCIL_BUFFER); } |