From: Kevin Rogovin <kevin.rogo...@intel.com> Signed-off-by: Kevin Rogovin <kevin.rogo...@intel.com> --- src/intel/blorp/blorp.c | 16 ++++++++++++++++ src/intel/blorp/blorp.h | 6 ++++++ src/mesa/drivers/dri/i965/genX_blorp_exec.c | 9 +++++++++ 3 files changed, 31 insertions(+)
diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index e348cafb2e..1bd51a4f06 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -357,3 +357,19 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf, batch->blorp->exec(batch, ¶ms); } } + +bool +blorp_params_src_has_astc5x5(const struct blorp_params *params) +{ + return params->src.enabled && + (params->src.surf.format == ISL_FORMAT_ASTC_LDR_2D_5X5_U8SRGB || + params->src.surf.format == ISL_FORMAT_ASTC_LDR_2D_5X5_FLT16 || + params->src.surf.format == ISL_FORMAT_ASTC_HDR_2D_5X5_FLT16); +} + +bool +blorp_params_src_has_aux(const struct blorp_params *params) +{ + return params->src.enabled && + params->src.aux_usage != ISL_AUX_USAGE_NONE; +} diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index 4626f2f83c..fe602c6ccc 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -223,6 +223,12 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf, uint32_t level, uint32_t start_layer, uint32_t num_layers, enum isl_aux_op op); +bool +blorp_params_src_has_astc5x5(const struct blorp_params *params); + +bool +blorp_params_src_has_aux(const struct blorp_params *params); + #ifdef __cplusplus } /* end extern "C" */ #endif /* __cplusplus */ diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c index 062171af60..74fda5c810 100644 --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c @@ -230,6 +230,15 @@ genX(blorp_exec)(struct blorp_batch *batch, struct gl_context *ctx = &brw->ctx; bool check_aperture_failed_once = false; + if (gen9_astc5x5_wa_required(brw)) { + if (blorp_params_src_has_astc5x5(params)) { + assert(!blorp_params_src_has_aux(params)); + gen9_set_astc5x5_wa_mode(brw, BRW_ASTC5x5_WA_MODE_HAS_ASTC5x5); + } else if (blorp_params_src_has_aux(params)) { + gen9_set_astc5x5_wa_mode(brw, BRW_ASTC5x5_WA_MODE_HAS_AUX); + } + } + /* Flush the sampler and render caches. We definitely need to flush the * sampler cache so that we get updated contents from the render cache for * the glBlitFramebuffer() source. Also, we are sometimes warned in the -- 2.16.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev