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.antogno...@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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev