Module: wine Branch: master Commit: ef2ad5ef668675f3e49e0fedb479dea315c5a357 URL: https://gitlab.winehq.org/wine/wine/-/commit/ef2ad5ef668675f3e49e0fedb479dea...
Author: Zebediah Figura zfigura@codeweavers.com Date: Mon Mar 20 19:46:23 2023 -0500
wined3d: Store the "wined3d_caps" field of struct fragment_caps as separate bool flags.
---
dlls/wined3d/adapter_gl.c | 2 +- dlls/wined3d/adapter_vk.c | 2 +- dlls/wined3d/arb_program_shader.c | 9 +++++---- dlls/wined3d/ati_fragment_shader.c | 3 ++- dlls/wined3d/glsl_shader.c | 9 +++++---- dlls/wined3d/nvidia_texture_shader.c | 3 ++- dlls/wined3d/shader.c | 2 +- dlls/wined3d/shader_spirv.c | 2 +- dlls/wined3d/state.c | 2 +- dlls/wined3d/utils.c | 3 +-- dlls/wined3d/wined3d_private.h | 8 +++----- 11 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 576430c9284..7ddcb444450 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5211,7 +5211,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = !!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]; d3d_info->vs_clipping = shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING; - d3d_info->shader_color_key = !!(fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_COLOR_KEY); + d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->frag_coord_correction = !!gl_info->supported[ARB_FRAGMENT_COORD_CONVENTIONS]; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 211071fae83..7cf829201a7 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2341,7 +2341,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = false; d3d_info->vs_clipping = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING); - d3d_info->shader_color_key = !!(fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_COLOR_KEY); + d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); 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 */ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index b568a9e68ae..726734f88cd 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -4824,7 +4824,7 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control;
device->vertex_priv = vertex_priv; device->fragment_priv = fragment_priv; @@ -5763,9 +5763,10 @@ static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragmen { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE - | WINED3D_FRAGMENT_CAP_COLOR_KEY; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; + caps->srgb_write = true; + caps->color_key = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE | WINED3DTEXOPCAPS_SELECTARG1 | diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 8606d86516d..f19c2028ca4 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -1269,7 +1269,8 @@ static void atifs_enable(const struct wined3d_context *context, BOOL enable)
static void atifs_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP | WINED3DPMISCCAPS_PERSTAGECONSTANT; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE | diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 0fa509a2a6d..e381e8df7a4 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11102,7 +11102,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control; priv->legacy_lighting = device->wined3d->flags & WINED3D_LEGACY_FFP_LIGHTING;
device->vertex_priv = vertex_priv; @@ -12050,9 +12050,10 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, s { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE - | WINED3D_FRAGMENT_CAP_COLOR_KEY; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; + caps->srgb_write = true; + caps->color_key = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP | WINED3DPMISCCAPS_PERSTAGECONSTANT; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index e49ae68a784..55e2a596dd1 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -697,7 +697,8 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = 0; + memset(caps, 0, sizeof(*caps)); + caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP;
/* The caps below can be supported but aren't handled yet in utils.c diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index fa9a487edda..9a7919b437b 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1990,7 +1990,7 @@ static HRESULT shader_none_alloc(struct wined3d_device *device, const struct win priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control;
device->vertex_priv = vertex_priv; device->fragment_priv = fragment_priv; diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 355eac1ef7b..2d98dd526ef 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -993,7 +993,7 @@ static HRESULT shader_spirv_alloc(struct wined3d_device *device, priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control; memset(&priv->bindings, 0, sizeof(priv->bindings));
device->vertex_priv = vertex_priv; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index a492876a093..3f7bcae738c 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5150,7 +5150,7 @@ static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = 0; + memset(caps, 0, sizeof(*caps)); caps->PrimitiveMiscCaps = 0; caps->TextureOpCaps = WINED3DTEXOPCAPS_ADD | WINED3DTEXOPCAPS_ADDSIGNED diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 7e4b7bf2f91..6b611dc0fae 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -3193,8 +3193,7 @@ static BOOL init_format_texture_info(struct wined3d_adapter *adapter, struct win
adapter->fragment_pipe->get_caps(adapter, &fragment_caps); adapter->shader_backend->shader_get_caps(adapter, &shader_caps); - srgb_write = (fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_SRGB_WRITE) - && (shader_caps.wined3d_caps & WINED3D_SHADER_CAP_SRGB_WRITE); + srgb_write = fragment_caps.srgb_write && (shader_caps.wined3d_caps & WINED3D_SHADER_CAP_SRGB_WRITE);
for (i = 0; i < ARRAY_SIZE(format_texture_info); ++i) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 5f28b4f6f88..2e9eab2225d 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1988,17 +1988,15 @@ struct wined3d_state_entry_template unsigned int extension; };
-#define WINED3D_FRAGMENT_CAP_PROJ_CONTROL 0x00000001 -#define WINED3D_FRAGMENT_CAP_SRGB_WRITE 0x00000002 -#define WINED3D_FRAGMENT_CAP_COLOR_KEY 0x00000004 - struct fragment_caps { - DWORD wined3d_caps; DWORD PrimitiveMiscCaps; DWORD TextureOpCaps; unsigned int max_blend_stages; unsigned int max_textures; + bool proj_control; + bool srgb_write; + bool color_key; };
#define GL_EXT_EMUL_ARB_MULTITEXTURE 0x00000001