From: Kevin Rogovin <kevin.rogo...@intel.com> Blorp will only read from an ASTC5x5 texture if it copies from such a surface, that can only if an application is fetching such pixels. Because an ASTC5x3 texture can never be a render target, we do not need to worry about blorp reading such surfaces on framebuffer blits, or any other copying from a framebuffer.
Signed-off-by: Kevin Rogovin <kevin.rogo...@intel.com> --- src/mesa/drivers/dri/i965/genX_blorp_exec.c | 5 +++++ src/mesa/drivers/dri/i965/intel_tex_image.c | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c index 87e90fde91..73f72d2603 100644 --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c @@ -230,6 +230,11 @@ genX(blorp_exec)(struct blorp_batch *batch, struct gl_context *ctx = &brw->ctx; bool check_aperture_failed_once = false; + if (brw->astc5x5_wa.blorp_sampling_from_astc5x5) { + brw_set_astc5x5_wa_mode(brw, BRW_ASTC5x5_WA_MODE_HAS_ASTC5x5); + } else { + brw_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 diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c index 37c8e24f03..60028bb67a 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_image.c +++ b/src/mesa/drivers/dri/i965/intel_tex_image.c @@ -759,10 +759,18 @@ intel_get_tex_sub_image(struct gl_context *ctx, DBG("%s\n", __func__); if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - if (intel_gettexsubimage_blorp(brw, texImage, - xoffset, yoffset, zoffset, - width, height, depth, format, type, - pixels, &ctx->Pack)) + bool blorp_success; + + brw->astc5x5_wa.blorp_sampling_from_astc5x5 = + (texImage->TexFormat == MESA_FORMAT_RGBA_ASTC_5x5 || + texImage->TexFormat == MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5); + blorp_success = intel_gettexsubimage_blorp(brw, texImage, + xoffset, yoffset, zoffset, + width, height, depth, + format, type, pixels, + &ctx->Pack); + brw->astc5x5_wa.blorp_sampling_from_astc5x5 = false; + if (blorp_success) return; perf_debug("%s: fallback to CPU mapping in PBO case\n", __func__); -- 2.14.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev