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 <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27709>
This commit is contained in:
Daniel Stone
2023-07-28 12:59:56 +01:00
committed by Marge Bot
parent 4816cdd204
commit 69d64812e2
+17 -14
View File
@@ -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;
}