From 69d64812e20e3b99237e1771cdce24be2d6d2356 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 28 Jul 2023 12:59:56 +0100 Subject: [PATCH] st/dri: Rework depth/stencil format selection When we're building configs, be a bit more explicit about which format we're using, as a prelude to passing the formats down explicitly to driCreateConfigs. Signed-off-by: Daniel Stone Part-of: --- src/gallium/frontends/dri/dri_screen.c | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index 6cd44f68c34..5e09f50f0f4 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -322,7 +322,6 @@ dri_fill_in_modes(struct dri_screen *screen) unsigned depth_buffer_factor; unsigned i; struct pipe_screen *p_screen = screen->base.screen; - bool pf_z16, pf_x8z24, pf_z24x8, pf_s8z24, pf_z24s8, pf_z32; bool mixed_color_depth; bool allow_rgba_ordering; bool allow_rgb10; @@ -349,28 +348,32 @@ dri_fill_in_modes(struct dri_screen *screen) PIPE_TEXTURE_2D, 0, 0, \ PIPE_BIND_DEPTH_STENCIL) - pf_x8z24 = HAS_ZS(Z24X8_UNORM); - pf_z24x8 = HAS_ZS(X8Z24_UNORM), - pf_s8z24 = HAS_ZS(Z24_UNORM_S8_UINT); - pf_z24s8 = HAS_ZS(S8_UINT_Z24_UNORM); - pf_z16 = HAS_ZS(Z16_UNORM); - pf_z32 = HAS_ZS(Z32_UNORM); - - if (pf_z16) { + if (HAS_ZS(Z16_UNORM)) { depth_bits_array[depth_buffer_factor] = 16; stencil_bits_array[depth_buffer_factor++] = 0; } - if (pf_x8z24 || pf_z24x8) { + + if (HAS_ZS(Z24X8_UNORM)) { depth_bits_array[depth_buffer_factor] = 24; stencil_bits_array[depth_buffer_factor++] = 0; - screen->d_depth_bits_last = pf_x8z24; + screen->d_depth_bits_last = true; + } else if (HAS_ZS(X8Z24_UNORM)) { + depth_bits_array[depth_buffer_factor] = 24; + stencil_bits_array[depth_buffer_factor++] = 0; + screen->d_depth_bits_last = false; } - if (pf_s8z24 || pf_z24s8) { + + if (HAS_ZS(Z24_UNORM_S8_UINT)) { depth_bits_array[depth_buffer_factor] = 24; stencil_bits_array[depth_buffer_factor++] = 8; - screen->sd_depth_bits_last = pf_s8z24; + screen->sd_depth_bits_last = true; + } else if (HAS_ZS(S8_UINT_Z24_UNORM)) { + depth_bits_array[depth_buffer_factor] = 24; + stencil_bits_array[depth_buffer_factor++] = 8; + screen->sd_depth_bits_last = false; } - if (pf_z32) { + + if (HAS_ZS(Z32_UNORM)) { depth_bits_array[depth_buffer_factor] = 32; stencil_bits_array[depth_buffer_factor++] = 0; }