[Mesa-dev] [PATCH 5/8] i965/miptree: Add space to store the clear value in the aux surface.
Rafael Antognolli
rafael.antognolli at intel.com
Fri Dec 15 22:53:32 UTC 2017
Similarly to vulkan where we store the clear value in the aux surface,
we can do the same in GL.
Signed-off-by: Rafael Antognolli <rafael.antognolli at intel.com>
---
src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index ead0c359c0f..6400a2a616a 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1663,6 +1663,21 @@ intel_miptree_init_mcs(struct brw_context *brw,
brw_bo_unmap(mt->mcs_buf->bo);
}
+static unsigned
+fast_clear_state_entry_size(const struct brw_context *brw)
+{
+ assert(brw);
+
+ /* Entry contents:
+ * +--------------------------------------------+
+ * | clear value dword(s) |
+ * +--------------------------------------------+
+ */
+ assert(brw->isl_dev.ss.clear_value_size % 4 == 0);
+
+ return brw->isl_dev.ss.clear_value_size;
+}
+
static struct intel_miptree_aux_buffer *
intel_alloc_aux_buffer(struct brw_context *brw,
const char *name,
@@ -1675,6 +1690,16 @@ intel_alloc_aux_buffer(struct brw_context *brw,
return false;
buf->size = aux_surf->size;
+
+ const struct gen_device_info *devinfo = &brw->screen->devinfo;
+ if (devinfo->gen >= 10) {
+ /* On CNL, instead of setting the clear color in the SURFACE_STATE, we
+ * will set a pointer to a dword somewhere that contains the color. So,
+ * allocate the space for the clear color value here on the aux buffer.
+ */
+ buf->size += fast_clear_state_entry_size(brw);
+ }
+
buf->pitch = aux_surf->row_pitch;
buf->qpitch = isl_surf_get_array_pitch_sa_rows(aux_surf);
--
2.14.3
More information about the mesa-dev
mailing list