summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/blorp/blorp.c12
-rw-r--r--src/intel/blorp/blorp_blit.c11
2 files changed, 11 insertions, 12 deletions
diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c
index c36ec703b18..ffe26076e16 100644
--- a/src/intel/blorp/blorp.c
+++ b/src/intel/blorp/blorp.c
@@ -75,18 +75,6 @@ brw_blorp_surface_info_init(struct blorp_context *blorp,
if (format == ISL_FORMAT_UNSUPPORTED)
format = surf->surf->format;
- if (format == ISL_FORMAT_R24_UNORM_X8_TYPELESS) {
- /* Unfortunately, ISL_FORMAT_R24_UNORM_X8_TYPELESS it isn't supported as
- * a render target, which would prevent us from blitting to 24-bit
- * depth. The miptree consists of 32 bits per pixel, arranged as 24-bit
- * depth values interleaved with 8 "don't care" bits. Since depth
- * values don't require any blending, it doesn't matter how we interpret
- * the bit pattern as long as we copy the right amount of data, so just
- * map it as 8-bit BGRA.
- */
- format = ISL_FORMAT_B8G8R8A8_UNORM;
- }
-
info->surf = *surf->surf;
info->addr = surf->addr;
diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c
index f4bf26d84a6..7cc580abd06 100644
--- a/src/intel/blorp/blorp_blit.c
+++ b/src/intel/blorp/blorp_blit.c
@@ -2250,6 +2250,17 @@ blorp_blit(struct blorp_batch *batch,
}
}
+ /* ISL_FORMAT_R24_UNORM_X8_TYPELESS it isn't supported as a render target,
+ * which requires shader math to render to it. Blitting Z24X8 to Z24X8
+ * is fairly common though, so we'd like to avoid it. Since we don't need
+ * to blend depth values, we can simply pick a renderable format with the
+ * right number of bits-per-pixel, like 8-bit BGRA.
+ */
+ if (dst_surf->surf->format == ISL_FORMAT_R24_UNORM_X8_TYPELESS &&
+ src_surf->surf->format == ISL_FORMAT_R24_UNORM_X8_TYPELESS) {
+ src_format = dst_format = ISL_FORMAT_B8G8R8A8_UNORM;
+ }
+
brw_blorp_surface_info_init(batch->blorp, &params.src, src_surf, src_level,
src_layer, src_format, false);
brw_blorp_surface_info_init(batch->blorp, &params.dst, dst_surf, dst_level,