Module: wine Branch: master Commit: dcdba8d571bde0984623e3664f925612f3b8909a URL: https://gitlab.winehq.org/wine/wine/-/commit/dcdba8d571bde0984623e3664f92561...
Author: Zebediah Figura zfigura@codeweavers.com Date: Fri Jan 6 15:32:18 2023 -0600
wined3d: Move the ffp_attrib_ops to wined3d_gl_info.
They are quite GL-specific.
---
dlls/wined3d/adapter_gl.c | 6 +++--- dlls/wined3d/context_gl.c | 6 ++++-- dlls/wined3d/wined3d_gl.h | 15 +++++++++++++++ dlls/wined3d/wined3d_private.h | 18 ++---------------- 4 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index f1216ddd89b..5fda5391233 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -4018,9 +4018,9 @@ static void WINE_GLAPI generic_float16_4(GLuint idx, const void *data)
static void wined3d_adapter_init_ffp_attrib_ops(struct wined3d_adapter_gl *adapter_gl) { - const struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; - struct wined3d_d3d_info *d3d_info = &adapter_gl->a.d3d_info; - struct wined3d_ffp_attrib_ops *ops = &d3d_info->ffp_attrib_ops; + const struct wined3d_d3d_info *d3d_info = &adapter_gl->a.d3d_info; + struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; + struct wined3d_ffp_attrib_ops *ops = &gl_info->ffp_attrib_ops; unsigned int i;
for (i = 0; i < WINED3D_FFP_EMIT_COUNT; ++i) diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index c2ebca8e99f..c1a6538d6ff 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -4666,16 +4666,18 @@ static void wined3d_context_gl_draw_primitive_arrays(struct wined3d_context_gl * const struct wined3d_state *state, const void *idx_data, unsigned int idx_size, int base_vertex_idx, unsigned int start_idx, unsigned int count, unsigned int start_instance, unsigned int instance_count) { - const struct wined3d_ffp_attrib_ops *ops = &context_gl->c.d3d_info->ffp_attrib_ops; GLenum idx_type = idx_size == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT; const struct wined3d_stream_info *si = &context_gl->c.stream_info; GLenum mode = gl_primitive_type_from_d3d(state->primitive_type); const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int instanced_elements[ARRAY_SIZE(si->elements)]; + const struct wined3d_ffp_attrib_ops *ops; unsigned int instanced_element_count = 0; const void *indices; unsigned int i, j;
+ ops = &gl_info->ffp_attrib_ops; + indices = (const char *)idx_data + idx_size * start_idx;
if (!instance_count) @@ -4840,7 +4842,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, if (idx_size) idx_data = (uint8_t *)wined3d_buffer_load_sysmem(state->index_buffer, &context_gl->c) + state->index_offset;
- ops = &d3d_info->ffp_attrib_ops; + ops = &gl_info->ffp_attrib_ops;
gl_info->gl_ops.gl.p_glBegin(gl_primitive_type_from_d3d(state->primitive_type));
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index 33f51944977..a4b8e378f67 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -325,6 +325,20 @@ void wined3d_gl_limits_get_uniform_block_range(const struct wined3d_gl_limits *g #define WINED3D_QUIRK_BROKEN_ARB_FOG 0x00000200 #define WINED3D_QUIRK_NO_INDEPENDENT_BIT_DEPTHS 0x00000400
+typedef void (WINE_GLAPI *wined3d_ffp_attrib_func)(const void *data); +typedef void (WINE_GLAPI *wined3d_ffp_texcoord_func)(GLenum unit, const void *data); +typedef void (WINE_GLAPI *wined3d_generic_attrib_func)(GLuint idx, const void *data); + +struct wined3d_ffp_attrib_ops +{ + wined3d_ffp_attrib_func position[WINED3D_FFP_EMIT_COUNT]; + wined3d_ffp_attrib_func diffuse[WINED3D_FFP_EMIT_COUNT]; + wined3d_ffp_attrib_func specular[WINED3D_FFP_EMIT_COUNT]; + wined3d_ffp_attrib_func normal[WINED3D_FFP_EMIT_COUNT]; + wined3d_ffp_texcoord_func texcoord[WINED3D_FFP_EMIT_COUNT]; + wined3d_generic_attrib_func generic[WINED3D_FFP_EMIT_COUNT]; +}; + struct wined3d_gl_info { unsigned int selected_gl_version; @@ -337,6 +351,7 @@ struct wined3d_gl_info float filling_convention_offset;
HGLRC (WINAPI *p_wglCreateContextAttribsARB)(HDC dc, HGLRC share, const GLint *attribs); + struct wined3d_ffp_attrib_ops ffp_attrib_ops; struct opengl_funcs gl_ops; struct wined3d_fbo_ops fbo_ops;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 656df92018f..2b568fa9d61 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -49,7 +49,6 @@
#include "objbase.h" #include "wine/wined3d.h" -#include "wined3d_gl.h" #include "wine/list.h" #include "wine/rbtree.h"
@@ -145,6 +144,8 @@ enum wined3d_ffp_emit_idx WINED3D_FFP_EMIT_COUNT, };
+#include "wined3d_gl.h" + /* Texture format fixups */
enum fixup_channel_source @@ -202,24 +203,9 @@ struct wined3d_d3d_limits float pointsize_max; };
-typedef void (WINE_GLAPI *wined3d_ffp_attrib_func)(const void *data); -typedef void (WINE_GLAPI *wined3d_ffp_texcoord_func)(GLenum unit, const void *data); -typedef void (WINE_GLAPI *wined3d_generic_attrib_func)(GLuint idx, const void *data); - -struct wined3d_ffp_attrib_ops -{ - wined3d_ffp_attrib_func position[WINED3D_FFP_EMIT_COUNT]; - wined3d_ffp_attrib_func diffuse[WINED3D_FFP_EMIT_COUNT]; - wined3d_ffp_attrib_func specular[WINED3D_FFP_EMIT_COUNT]; - wined3d_ffp_attrib_func normal[WINED3D_FFP_EMIT_COUNT]; - wined3d_ffp_texcoord_func texcoord[WINED3D_FFP_EMIT_COUNT]; - wined3d_generic_attrib_func generic[WINED3D_FFP_EMIT_COUNT]; -}; - struct wined3d_d3d_info { struct wined3d_d3d_limits limits; - struct wined3d_ffp_attrib_ops ffp_attrib_ops; uint32_t wined3d_creation_flags; uint32_t xyzrhw : 1; uint32_t emulated_flatshading : 1;