Mesa (master): turnip: disable early_z for VK_FORMAT_S8_UINT
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 25 03:18:07 UTC 2020
Module: Mesa
Branch: master
Commit: c5b990f435e7145bfd8562c80a4dc1012aaa03f8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c5b990f435e7145bfd8562c80a4dc1012aaa03f8
Author: Jonathan Marek <jonathan at marek.ca>
Date: Sun Jun 21 22:08:45 2020 -0400
turnip: disable early_z for VK_FORMAT_S8_UINT
This format doesn't have depth, and apparently having earlyz enabled can
cause issues. Fixes at least these tests:
dEQP-VK.renderpass.suballocation.multisample.s8_uint.samples_*
Signed-off-by: Jonathan Marek <jonathan at marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5586>
---
.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt | 1 -
src/freedreno/vulkan/tu_pipeline.c | 11 +++++++----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt b/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt
index eabca8fb0bd..45fac70f001 100644
--- a/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt
+++ b/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt
@@ -119,5 +119,4 @@ dEQP-VK.renderpass2.dedicated_allocation.formats.d24_unorm_s8_uint.input.clear.s
dEQP-VK.renderpass2.dedicated_allocation.formats.d24_unorm_s8_uint.input.load.store.self_dep_draw_stencil_read_only
dEQP-VK.renderpass2.suballocation.formats.d24_unorm_s8_uint.input.clear.store.self_dep_draw_stencil_read_only
dEQP-VK.renderpass2.suballocation.multisample.d24_unorm_s8_uint.samples_4
-dEQP-VK.renderpass2.suballocation.multisample.s8_uint.samples_4
dEQP-VK.renderpass2.suballocation.multisample.separate_stencil_usage.d24_unorm_s8_uint.samples_2.test_stencil
diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index 281695d16cb..b0fb1cc9e46 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -1209,7 +1209,8 @@ static void
tu6_emit_fs_outputs(struct tu_cs *cs,
const struct ir3_shader_variant *fs,
uint32_t mrt_count, bool dual_src_blend,
- uint32_t render_components)
+ uint32_t render_components,
+ bool is_s8_uint)
{
uint32_t smask_regid, posz_regid;
@@ -1255,7 +1256,7 @@ tu6_emit_fs_outputs(struct tu_cs *cs,
enum a6xx_ztest_mode zmode;
- if (fs->no_earlyz || fs->has_kill || fs->writes_pos) {
+ if (fs->no_earlyz || fs->has_kill || fs->writes_pos || is_s8_uint) {
zmode = A6XX_LATE_Z;
} else {
zmode = A6XX_EARLY_Z;
@@ -1376,14 +1377,16 @@ tu6_emit_program(struct tu_cs *cs,
tu6_emit_fs_inputs(cs, fs);
tu6_emit_fs_outputs(cs, fs, builder->color_attachment_count,
builder->use_dual_src_blend,
- builder->render_components);
+ builder->render_components,
+ builder->depth_attachment_format == VK_FORMAT_S8_UINT);
} else {
/* TODO: check if these can be skipped if fs is disabled */
struct ir3_shader_variant dummy_variant = {};
tu6_emit_fs_inputs(cs, &dummy_variant);
tu6_emit_fs_outputs(cs, &dummy_variant, builder->color_attachment_count,
builder->use_dual_src_blend,
- builder->render_components);
+ builder->render_components,
+ builder->depth_attachment_format == VK_FORMAT_S8_UINT);
}
if (gs || hs) {
More information about the mesa-commit
mailing list