Module: wine Branch: master Commit: dcb0136cc064af3f0d09862da42707bf09031d3c URL: https://gitlab.winehq.org/wine/wine/-/commit/dcb0136cc064af3f0d09862da42707b...
Author: Elizabeth Figura zfigura@codeweavers.com Date: Wed Mar 20 16:00:47 2024 -0500
wined3d: Collapse together NPOT d3d_info flags.
---
dlls/wined3d/adapter_gl.c | 8 +++----- dlls/wined3d/adapter_vk.c | 4 +--- dlls/wined3d/directx.c | 10 +++------- dlls/wined3d/stateblock.c | 2 +- dlls/wined3d/texture.c | 2 +- dlls/wined3d/wined3d_private.h | 6 +++--- 6 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 2ff75eb0788..59c85df5a9a 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -4298,7 +4298,7 @@ static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, s { caps->TextureCaps |= WINED3DPTEXTURECAPS_VOLUMEMAP | WINED3DPTEXTURECAPS_MIPVOLUMEMAP; - if (!d3d_info->texture_npot) + if (!d3d_info->unconditional_npot) caps->TextureCaps |= WINED3DPTEXTURECAPS_VOLUMEMAP_POW2;
caps->VolumeTextureFilterCaps |= WINED3DPTFILTERCAPS_MAGFLINEAR @@ -4338,7 +4338,7 @@ static void adapter_gl_get_wined3d_caps(const struct wined3d_adapter *adapter, s { caps->TextureCaps |= WINED3DPTEXTURECAPS_CUBEMAP | WINED3DPTEXTURECAPS_MIPCUBEMAP; - if (!d3d_info->texture_npot) + if (!d3d_info->unconditional_npot) caps->TextureCaps |= WINED3DPTEXTURECAPS_CUBEMAP_POW2;
caps->CubeTextureFilterCaps |= WINED3DPTFILTERCAPS_MAGFLINEAR @@ -5045,9 +5045,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->viewport_array_index_any_shader = !!gl_info->supported[ARB_SHADER_VIEWPORT_LAYER_ARRAY]; d3d_info->stencil_export = !!gl_info->supported[ARB_SHADER_STENCIL_EXPORT]; - d3d_info->texture_npot = !!gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO]; - d3d_info->texture_npot_conditional = gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]; - d3d_info->normalized_texrect = gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]; + d3d_info->unconditional_npot = !!gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO]; d3d_info->draw_base_vertex_offset = !!gl_info->supported[ARB_DRAW_ELEMENTS_BASE_VERTEX]; d3d_info->vertex_bgra = !!gl_info->supported[ARB_VERTEX_ARRAY_BGRA]; d3d_info->texture_swizzle = !!gl_info->supported[ARB_TEXTURE_SWIZZLE]; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 39b263872ed..10c62c3b7ca 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2356,9 +2356,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->viewport_array_index_any_shader = false; /* VK_EXT_shader_viewport_index_layer */ d3d_info->stencil_export = vk_info->supported[WINED3D_VK_EXT_SHADER_STENCIL_EXPORT]; - d3d_info->texture_npot = true; - d3d_info->texture_npot_conditional = true; - d3d_info->normalized_texrect = false; + d3d_info->unconditional_npot = true; d3d_info->draw_base_vertex_offset = true; d3d_info->vertex_bgra = true; d3d_info->texture_swizzle = true; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 97e1880f3f1..b11d284c10b 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2437,12 +2437,8 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter, WINED3DPTEXTURECAPS_PROJECTED | WINED3DPTEXTURECAPS_PERSPECTIVE;
- if (!d3d_info->texture_npot) - { - caps->TextureCaps |= WINED3DPTEXTURECAPS_POW2; - if (d3d_info->texture_npot_conditional) - caps->TextureCaps |= WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL; - } + if (!d3d_info->unconditional_npot) + caps->TextureCaps |= WINED3DPTEXTURECAPS_POW2 | WINED3DPTEXTURECAPS_NONPOW2CONDITIONAL;
caps->TextureFilterCaps = WINED3DPTFILTERCAPS_MAGFLINEAR | WINED3DPTFILTERCAPS_MAGFPOINT | @@ -3323,7 +3319,7 @@ static void wined3d_adapter_no3d_init_d3d_info(struct wined3d_adapter *adapter, struct wined3d_d3d_info *d3d_info = &adapter->d3d_info;
d3d_info->wined3d_creation_flags = wined3d_creation_flags; - d3d_info->texture_npot = TRUE; + d3d_info->unconditional_npot = true; d3d_info->feature_level = WINED3D_FEATURE_LEVEL_5; }
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 1dcc3e3be49..ad5753e5d99 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -2667,7 +2667,7 @@ static void sampler_desc_from_sampler_states(struct wined3d_sampler_desc *desc, if (texture->flags & WINED3D_TEXTURE_COND_NP2) { desc->mip_filter = WINED3D_TEXF_NONE; - if (d3d_info->normalized_texrect) + if (!d3d_info->unconditional_npot) desc->min_filter = WINED3D_TEXF_POINT; } } diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index b3defb1f2fe..94429628035 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -3713,7 +3713,7 @@ static HRESULT wined3d_texture_init(struct wined3d_texture *texture, const struc pow2_width = desc->width; pow2_height = desc->height; if (((desc->width & (desc->width - 1)) || (desc->height & (desc->height - 1)) || (desc->depth & (desc->depth - 1))) - && !d3d_info->texture_npot) + && !d3d_info->unconditional_npot) { /* level_count == 0 returns an error as well. */ if (level_count != 1 || layer_count != 1 || desc->resource_type == WINED3D_RTYPE_TEXTURE_3D) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index cb97a2587ba..8ecac000379 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -232,9 +232,9 @@ struct wined3d_d3d_info uint32_t shader_output_interpolation : 1; uint32_t viewport_array_index_any_shader : 1; uint32_t stencil_export : 1; - uint32_t texture_npot : 1; - uint32_t texture_npot_conditional : 1; - uint32_t normalized_texrect : 1; + /* If zero, only conditional NPOT textures are supported, via + * WINED3D_GL_NORMALIZED_TEXRECT. */ + uint32_t unconditional_npot : 1; uint32_t draw_base_vertex_offset : 1; uint32_t vertex_bgra : 1; uint32_t texture_swizzle : 1;