wined3d: Move the ffp_attrib_ops to wined3d_gl_info.

They are quite GL-specific.
This commit is contained in:
Zebediah Figura 2023-01-06 15:32:18 -06:00 committed by Alexandre Julliard
parent 77e282d7a1
commit dcdba8d571
4 changed files with 24 additions and 21 deletions

View file

@ -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)

View file

@ -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));

View file

@ -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;

View file

@ -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;