[Mesa-dev] [PATCH v4 3/3] i965: ASTC5x5 workaround logic for blorp
kevin.rogovin at intel.com
kevin.rogovin at intel.com
Thu Mar 8 12:53:24 UTC 2018
From: Kevin Rogovin <kevin.rogovin at intel.com>
Signed-off-by: Kevin Rogovin <kevin.rogovin at 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
More information about the mesa-dev
mailing list