diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index e470dc013ed..6cd44f68c34 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -344,24 +344,17 @@ dri_fill_in_modes(struct dri_screen *screen) allow_rgb10 = driQueryOptionb(&screen->dev->option_cache, "allow_rgb10_configs"); allow_fp16 = dri_loader_get_cap(screen, DRI_LOADER_CAP_FP16); - pf_x8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24X8_UNORM, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); - pf_z24x8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_X8Z24_UNORM, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); - pf_s8z24 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z24_UNORM_S8_UINT, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); - pf_z24s8 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_S8_UINT_Z24_UNORM, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); - pf_z16 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z16_UNORM, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); - pf_z32 = p_screen->is_format_supported(p_screen, PIPE_FORMAT_Z32_UNORM, - PIPE_TEXTURE_2D, 0, 0, - PIPE_BIND_DEPTH_STENCIL); +#define HAS_ZS(fmt) \ + p_screen->is_format_supported(p_screen, PIPE_FORMAT_##fmt, \ + 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) { depth_bits_array[depth_buffer_factor] = 16; @@ -382,6 +375,8 @@ dri_fill_in_modes(struct dri_screen *screen) stencil_bits_array[depth_buffer_factor++] = 0; } +#undef HAS_ZS + mixed_color_depth = p_screen->get_param(p_screen, PIPE_CAP_MIXED_COLOR_DEPTH_BITS);