From 74b9ef2c1d7bc37c79b02b7c541d4b440de0b43d Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 7 Aug 2019 16:11:58 +0430 Subject: [PATCH] wined3d: Move the "gl_info" field from struct wined3d_context to struct wined3d_context_gl. Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/adapter_gl.c | 18 ++-- dlls/wined3d/arb_program_shader.c | 63 ++++++------ dlls/wined3d/ati_fragment_shader.c | 15 +-- dlls/wined3d/buffer.c | 12 +-- dlls/wined3d/context.c | 136 +++++++++++++------------- dlls/wined3d/cs.c | 2 +- dlls/wined3d/device.c | 6 +- dlls/wined3d/gl_compat.c | 20 ++-- dlls/wined3d/glsl_shader.c | 97 ++++++++++--------- dlls/wined3d/nvidia_texture_shader.c | 15 +-- dlls/wined3d/query.c | 50 +++++----- dlls/wined3d/sampler.c | 6 +- dlls/wined3d/shader.c | 2 +- dlls/wined3d/state.c | 139 ++++++++++++++------------- dlls/wined3d/surface.c | 24 ++--- dlls/wined3d/swapchain.c | 4 +- dlls/wined3d/texture.c | 42 ++++---- dlls/wined3d/utils.c | 8 +- dlls/wined3d/view.c | 20 ++-- dlls/wined3d/wined3d_private.h | 3 +- 20 files changed, 355 insertions(+), 327 deletions(-) diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index e9f894fae3c..c500c34925f 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -3989,7 +3989,7 @@ static void WINE_GLAPI invalid_generic_attrib_func(GLuint idx, const void *data) * draw_primitive_immediate_mode(). */ static void WINE_GLAPI position_d3dcolor(const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; DWORD pos = *((const DWORD *)data); FIXME("Add a test for fixed function position from d3dcolor type.\n"); @@ -4001,7 +4001,7 @@ static void WINE_GLAPI position_d3dcolor(const void *data) static void WINE_GLAPI position_float4(const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; const GLfloat *pos = data; if (pos[3] != 0.0f && pos[3] != 1.0f) @@ -4018,7 +4018,7 @@ static void WINE_GLAPI position_float4(const void *data) static void WINE_GLAPI diffuse_d3dcolor(const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; DWORD diffuseColor = *((const DWORD *)data); gl_info->gl_ops.gl.p_glColor4ub(D3DCOLOR_B_R(diffuseColor), @@ -4029,7 +4029,7 @@ static void WINE_GLAPI diffuse_d3dcolor(const void *data) static void WINE_GLAPI specular_d3dcolor(const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; DWORD specularColor = *((const DWORD *)data); GLubyte d[] = { @@ -4048,7 +4048,7 @@ static void WINE_GLAPI warn_no_specular_func(const void *data) static void WINE_GLAPI generic_d3dcolor(GLuint idx, const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; DWORD color = *((const DWORD *)data); gl_info->gl_ops.ext.p_glVertexAttrib4Nub(idx, @@ -4058,7 +4058,7 @@ static void WINE_GLAPI generic_d3dcolor(GLuint idx, const void *data) static void WINE_GLAPI generic_short2n(GLuint idx, const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; const GLshort s[] = {((const GLshort *)data)[0], ((const GLshort *)data)[1], 0, 1}; gl_info->gl_ops.ext.p_glVertexAttrib4Nsv(idx, s); @@ -4067,14 +4067,14 @@ static void WINE_GLAPI generic_short2n(GLuint idx, const void *data) static void WINE_GLAPI generic_ushort2n(GLuint idx, const void *data) { const GLushort s[] = {((const GLushort *)data)[0], ((const GLushort *)data)[1], 0, 1}; - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; gl_info->gl_ops.ext.p_glVertexAttrib4Nusv(idx, s); } static void WINE_GLAPI generic_float16_2(GLuint idx, const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; float x = float_16_to_32(((const unsigned short *)data) + 0); float y = float_16_to_32(((const unsigned short *)data) + 1); @@ -4083,7 +4083,7 @@ static void WINE_GLAPI generic_float16_2(GLuint idx, const void *data) static void WINE_GLAPI generic_float16_4(GLuint idx, const void *data) { - const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->c.gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_get_current()->gl_info; float x = float_16_to_32(((const unsigned short *)data) + 0); float y = float_16_to_32(((const unsigned short *)data) + 1); float z = float_16_to_32(((const unsigned short *)data) + 2); diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index fbc469cbcd4..b81898b78e7 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -542,7 +542,7 @@ static void shader_arb_load_np2fixup_constants(const struct arb_ps_np2fixup_info static void shader_arb_ps_local_constants(const struct arb_ps_compiled_shader *gl_shader, const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, unsigned int rt_height) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned char i; for(i = 0; i < gl_shader->numbumpenvmatconsts; i++) @@ -606,7 +606,7 @@ static void shader_arb_ps_local_constants(const struct arb_ps_compiled_shader *g static void shader_arb_vs_local_constants(const struct arb_vs_compiled_shader *gl_shader, const struct wined3d_context_gl *context_gl, const struct wined3d_state *state) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; float position_fixup[4]; unsigned char i; @@ -646,7 +646,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv, str const struct wined3d_state *state, BOOL use_ps, BOOL use_vs, BOOL from_shader_select) { const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!from_shader_select) { @@ -4242,7 +4242,7 @@ static struct arb_ps_compiled_shader *find_arb_pshader(struct wined3d_context_gl struct wined3d_shader *shader, const struct arb_ps_compile_args *args) { const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = shader->device; UINT i; DWORD new_size; @@ -4427,7 +4427,7 @@ static void find_arb_ps_compile_args(const struct wined3d_state *state, struct arb_ps_compile_args *args) { const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; int i; WORD int_skip; @@ -4483,7 +4483,7 @@ static void find_arb_vs_compile_args(const struct wined3d_state *state, struct arb_vs_compile_args *args) { const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_device *device = shader->device; const struct wined3d_adapter *adapter = device->adapter; int i; @@ -4560,7 +4560,7 @@ static void shader_arb_select(void *shader_priv, struct wined3d_context *context const struct wined3d_state *state) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_arb_priv *priv = shader_priv; int i; @@ -4650,7 +4650,7 @@ static void shader_arb_select(void *shader_priv, struct wined3d_context *context else ps_input_sig = &state->shader[WINED3D_SHADER_TYPE_PIXEL]->input_signature; - compiled = find_arb_vshader(vs, context->gl_info, context->stream_info.use_map, + compiled = find_arb_vshader(vs, gl_info, context->stream_info.use_map, &compile_args, ps_input_sig); priv->current_vprogram_id = compiled->prgId; priv->compiled_vprog = compiled; @@ -4703,7 +4703,8 @@ static void shader_arb_select_compute(void *shader_priv, struct wined3d_context /* Context activation is done by the caller. */ static void shader_arb_disable(void *shader_priv, struct wined3d_context *context) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_arb_priv *priv = shader_priv; if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) @@ -4749,7 +4750,7 @@ static void shader_arb_destroy(struct wined3d_shader *shader) return; context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; if (shader_is_pshader_version(shader->reg_maps.shader_version.type)) { @@ -5688,7 +5689,7 @@ struct arbfp_ffp_desc /* Context activation is done by the caller. */ static void arbfp_enable(const struct wined3d_context *context, BOOL enable) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_const(context)->gl_info; if (enable) { @@ -5728,7 +5729,7 @@ static void arbfp_free_ffpshader(struct wine_rb_entry *entry, void *param) struct wined3d_context_gl *context_gl = param; const struct wined3d_gl_info *gl_info; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glDeleteProgramsARB(1, &entry_arb->shader)); checkGLcall("delete ffp program"); heap_free(entry_arb); @@ -5795,7 +5796,8 @@ static DWORD arbfp_get_emul_mask(const struct wined3d_gl_info *gl_info) static void state_texfactor_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = context->device; struct wined3d_color color; @@ -5822,7 +5824,8 @@ static void state_tss_constant_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = context->device; struct wined3d_color color; @@ -5849,7 +5852,8 @@ static void state_tss_constant_arbfp(struct wined3d_context *context, static void state_arb_specularenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = context->device; float col[4]; @@ -5884,7 +5888,8 @@ static void state_arb_specularenable(struct wined3d_context *context, static void set_bumpmat_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = context->device; float mat[2][2]; @@ -5915,7 +5920,8 @@ static void tex_bumpenvlum_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_device *device = context->device; float param[4]; @@ -5944,7 +5950,8 @@ static void tex_bumpenvlum_arbfp(struct wined3d_context *context, static void alpha_test_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; int glParm; float ref; @@ -5974,8 +5981,9 @@ static void alpha_test_arbfp(struct wined3d_context *context, const struct wined static void color_key_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_texture *texture = state->textures[0]; - const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_device *device = context->device; struct wined3d_color float_key[2]; @@ -6549,7 +6557,8 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con static void fragment_prog_arbfp(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_device *device = context->device; struct shader_arb_priv *priv = device->fragment_priv; BOOL use_pshader = use_ps(state); @@ -6913,7 +6922,7 @@ static void arbfp_free_blit_shader(struct wine_rb_entry *entry, void *ctx) struct wined3d_context_gl *context_gl; context_gl = ctx; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glDeleteProgramsARB(1, &entry_arb->shader)); checkGLcall("glDeleteProgramsARB(1, &entry_arb->shader)"); @@ -6924,12 +6933,12 @@ static void arbfp_free_blit_shader(struct wine_rb_entry *entry, void *ctx) static void arbfp_blitter_destroy(struct wined3d_blitter *blitter, struct wined3d_context *context) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_arbfp_blitter *arbfp_blitter; struct wined3d_blitter *next; if ((next = blitter->next)) - next->ops->blitter_destroy(next, context); + next->ops->blitter_destroy(next, &context_gl->c); arbfp_blitter = CONTAINING_RECORD(blitter, struct wined3d_arbfp_blitter, blitter); @@ -7362,7 +7371,7 @@ static void arbfp_blitter_upload_palette(struct wined3d_arbfp_blitter *blitter, const struct wined3d_texture_gl *texture_gl, struct wined3d_context_gl *context_gl) { const struct wined3d_palette *palette = texture_gl->t.swapchain ? texture_gl->t.swapchain->palette : NULL; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!blitter->palette_texture) gl_info->gl_ops.gl.p_glGenTextures(1, &blitter->palette_texture); @@ -7564,7 +7573,7 @@ static HRESULT arbfp_blit_set(struct wined3d_arbfp_blitter *blitter, struct wine const struct wined3d_texture_gl *texture_gl, unsigned int sub_resource_idx, const struct wined3d_color_key *color_key) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; enum complex_fixup fixup; struct wine_rb_entry *entry; struct arbfp_blit_type type; @@ -7931,10 +7940,10 @@ static DWORD arbfp_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_bl src_sub_resource_idx, src_rect, dst_rect, filter); /* Leave the opengl state valid for blitting */ - arbfp_blit_unset(context->gl_info); + arbfp_blit_unset(context_gl->gl_info); if (dst_texture->swapchain && (dst_texture->swapchain->front_buffer == dst_texture)) - context->gl_info->gl_ops.gl.p_glFlush(); + context_gl->gl_info->gl_ops.gl.p_glFlush(); if (staging_texture) wined3d_texture_decref(staging_texture); diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 9e87af4240b..ae2843db403 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -950,8 +950,9 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_TEXTUR static void atifs_tfactor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; struct atifs_context_private_data *ctx_priv = context->fragment_pipe_data; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; if (!ctx_priv->last_shader @@ -966,7 +967,8 @@ static void atifs_tfactor(struct wined3d_context *context, const struct wined3d_ static void set_bumpmat(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; float mat[2][2]; struct atifs_context_private_data *ctx_priv = context->fragment_pipe_data; @@ -995,8 +997,9 @@ static void set_bumpmat(struct wined3d_context *context, const struct wined3d_st static void atifs_stage_constant(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); - const struct wined3d_gl_info *gl_info = context->gl_info; struct atifs_context_private_data *ctx_priv = context->fragment_pipe_data; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; if (!ctx_priv->last_shader @@ -1014,7 +1017,7 @@ static void set_tex_op_atifs(struct wined3d_context *context, const struct wined const struct atifs_ffp_desc *desc, *last_shader = ctx_priv->last_shader; struct wined3d_context_gl *context_gl = wined3d_context_gl(context); const struct wined3d_d3d_info *d3d_info = context->d3d_info; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_device *device = context->device; struct atifs_private_data *priv = device->fragment_priv; struct ffp_frag_settings settings; @@ -1252,7 +1255,7 @@ static const struct wined3d_state_entry_template atifs_fragmentstate_template[] /* Context activation is done by the caller. */ static void atifs_enable(const struct wined3d_context *context, BOOL enable) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_const(context)->gl_info; if (enable) { @@ -1338,7 +1341,7 @@ static void atifs_free_ffpshader(struct wine_rb_entry *entry, void *param) struct wined3d_context_gl *context_gl = param; const struct wined3d_gl_info *gl_info; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glDeleteFragmentShaderATI(entry_ati->shader)); checkGLcall("glDeleteFragmentShaderATI(entry->shader)"); heap_free(entry_ati); diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index fed63ca7d86..2a4725e0341 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -142,7 +142,7 @@ static void wined3d_buffer_gl_bind(struct wined3d_buffer_gl *buffer_gl, struct w static void wined3d_buffer_gl_destroy_buffer_object(struct wined3d_buffer_gl *buffer_gl, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_resource *resource = &buffer_gl->b.resource; if (!buffer_gl->buffer_object) @@ -198,7 +198,7 @@ static void wined3d_buffer_gl_destroy_buffer_object(struct wined3d_buffer_gl *bu static BOOL wined3d_buffer_gl_create_buffer_object(struct wined3d_buffer_gl *buffer_gl, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum gl_usage = GL_STATIC_DRAW; GLenum error; @@ -540,7 +540,7 @@ static void wined3d_buffer_gl_upload_ranges(struct wined3d_buffer_gl *buffer_gl, const void *data, unsigned int data_offset, unsigned int range_count, const struct wined3d_map_range *ranges) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_map_range *range; wined3d_buffer_gl_bind(buffer_gl, context_gl); @@ -649,7 +649,7 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer, { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct wined3d_buffer_gl *buffer_gl = wined3d_buffer_gl(buffer); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; TRACE("buffer %p, context %p, location %s.\n", buffer, context, wined3d_debug_location(location)); @@ -1057,7 +1057,7 @@ static HRESULT wined3d_buffer_gl_map(struct wined3d_buffer_gl *buffer_gl, context = context_acquire(device, NULL, 0); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (flags & WINED3D_MAP_DISCARD) wined3d_buffer_validate_location(&buffer_gl->b, WINED3D_LOCATION_BUFFER); @@ -1178,7 +1178,7 @@ static void wined3d_buffer_gl_unmap(struct wined3d_buffer_gl *buffer_gl) context = context_acquire(device, NULL, 0); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; wined3d_buffer_gl_bind(buffer_gl, context_gl); diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index ea7eaf9911c..3349570e37c 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -48,7 +48,7 @@ static DWORD wined3d_context_tls_idx; /* Context activation is done by the caller. */ static void wined3d_context_gl_bind_fbo(struct wined3d_context_gl *context_gl, GLenum target, GLuint fbo) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; switch (target) { @@ -101,7 +101,7 @@ static void context_clean_fbo_attachments(const struct wined3d_gl_info *gl_info, /* Context activation is done by the caller. */ static void wined3d_context_gl_destroy_fbo(struct wined3d_context_gl *context_gl, GLuint fbo) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; wined3d_context_gl_bind_fbo(context_gl, GL_FRAMEBUFFER, fbo); context_clean_fbo_attachments(gl_info, GL_FRAMEBUFFER); @@ -130,7 +130,7 @@ static void context_attach_depth_stencil_rb(const struct wined3d_gl_info *gl_inf static void wined3d_context_gl_attach_gl_texture_fbo(struct wined3d_context_gl *context_gl, GLenum fbo_target, GLenum attachment, const struct wined3d_fbo_resource *resource) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!resource) { @@ -177,7 +177,7 @@ static void wined3d_context_gl_attach_depth_stencil_fbo(struct wined3d_context_g GLenum fbo_target, const struct wined3d_fbo_resource *resource, BOOL rb_namespace, uint32_t flags) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (resource->object) { @@ -216,7 +216,7 @@ static void wined3d_context_gl_attach_depth_stencil_fbo(struct wined3d_context_g static void wined3d_context_gl_attach_surface_fbo(struct wined3d_context_gl *context_gl, GLenum fbo_target, unsigned int idx, const struct wined3d_fbo_resource *resource, BOOL rb_namespace) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; TRACE("Attach GL object %u to %u.\n", resource->object, idx); @@ -380,7 +380,7 @@ static void context_dump_fbo_attachment(const struct wined3d_gl_info *gl_info, G /* Context activation is done by the caller. */ void wined3d_context_gl_check_fbo_status(const struct wined3d_context_gl *context_gl, GLenum target) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum status; if (!FIXME_ON(d3d)) @@ -502,7 +502,7 @@ static void wined3d_context_gl_generate_fbo_key(const struct wined3d_context_gl struct wined3d_fbo_entry_key *key, const struct wined3d_rendertarget_info *render_targets, const struct wined3d_rendertarget_info *depth_stencil, DWORD color_location, DWORD ds_location) { - unsigned int buffers = context_gl->c.gl_info->limits.buffers; + unsigned int buffers = context_gl->gl_info->limits.buffers; unsigned int i; key->rb_namespace = 0; @@ -518,7 +518,7 @@ static struct fbo_entry *wined3d_context_gl_create_fbo_entry(const struct wined3 const struct wined3d_rendertarget_info *render_targets, const struct wined3d_rendertarget_info *depth_stencil, DWORD color_location, DWORD ds_location) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct fbo_entry *entry; entry = heap_alloc(sizeof(*entry)); @@ -545,7 +545,7 @@ static void wined3d_context_gl_reuse_fbo_entry(struct wined3d_context_gl *contex const struct wined3d_rendertarget_info *render_targets, const struct wined3d_rendertarget_info *depth_stencil, DWORD color_location, DWORD ds_location, struct fbo_entry *entry) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; wined3d_context_gl_bind_fbo(context_gl, target, entry->id); context_clean_fbo_attachments(gl_info, target); @@ -581,7 +581,7 @@ static struct fbo_entry *wined3d_context_gl_find_fbo_entry(struct wined3d_contex DWORD color_location, DWORD ds_location) { static const struct wined3d_rendertarget_info ds_null = {{0}}; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture *rt_texture, *ds_texture; struct wined3d_fbo_entry_key fbo_key; unsigned int i, ds_level, rt_level; @@ -711,7 +711,7 @@ static struct fbo_entry *wined3d_context_gl_find_fbo_entry(struct wined3d_contex static void wined3d_context_gl_apply_fbo_entry(struct wined3d_context_gl *context_gl, GLenum target, struct fbo_entry *entry) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLuint read_binding, draw_binding; unsigned int i; @@ -820,7 +820,7 @@ void wined3d_context_gl_apply_fbo_state_blit(struct wined3d_context_gl *context_ void wined3d_context_gl_alloc_occlusion_query(struct wined3d_context_gl *context_gl, struct wined3d_occlusion_query *query) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->free_occlusion_query_count) { @@ -867,7 +867,7 @@ void wined3d_context_gl_free_occlusion_query(struct wined3d_occlusion_query *que /* Context activation is done by the caller. */ void wined3d_context_gl_alloc_fence(struct wined3d_context_gl *context_gl, struct wined3d_fence *fence) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->free_fence_count) { @@ -928,7 +928,7 @@ void wined3d_context_gl_free_fence(struct wined3d_fence *fence) void wined3d_context_gl_alloc_timestamp_query(struct wined3d_context_gl *context_gl, struct wined3d_timestamp_query *query) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->free_timestamp_query_count) { @@ -967,7 +967,7 @@ void wined3d_context_gl_free_timestamp_query(struct wined3d_timestamp_query *que void wined3d_context_gl_alloc_so_statistics_query(struct wined3d_context_gl *context_gl, struct wined3d_so_statistics_query *query) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->free_so_statistics_query_count) { @@ -1008,7 +1008,7 @@ void wined3d_context_gl_free_so_statistics_query(struct wined3d_so_statistics_qu void wined3d_context_gl_alloc_pipeline_statistics_query(struct wined3d_context_gl *context_gl, struct wined3d_pipeline_statistics_query *query) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->free_pipeline_statistics_query_count) { @@ -1052,7 +1052,7 @@ static void wined3d_context_gl_enum_fbo_entries(const struct wined3d_device *dev for (i = 0; i < device->context_count; ++i) { struct wined3d_context_gl *context_gl = wined3d_context_gl(device->contexts[i]); - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct fbo_entry *entry, *entry2; LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &context_gl->fbo_list, struct fbo_entry, entry) @@ -1105,7 +1105,7 @@ void context_gl_resource_released(struct wined3d_device *device, GLuint name, BO void wined3d_context_gl_texture_update(struct wined3d_context_gl *context_gl, const struct wined3d_texture_gl *texture_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct fbo_entry *entry = context_gl->current_fbo; unsigned int i; @@ -1126,12 +1126,12 @@ void wined3d_context_gl_texture_update(struct wined3d_context_gl *context_gl, static BOOL wined3d_context_gl_restore_pixel_format(struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; BOOL ret = FALSE; if (context_gl->restore_pf && IsWindow(context_gl->restore_pf_win)) { - if (context_gl->c.gl_info->supported[WGL_WINE_PIXEL_FORMAT_PASSTHROUGH]) + if (gl_info->supported[WGL_WINE_PIXEL_FORMAT_PASSTHROUGH]) { HDC dc = GetDCEx(context_gl->restore_pf_win, 0, DCX_USESTYLE | DCX_CACHE); if (dc) @@ -1158,7 +1158,7 @@ static BOOL wined3d_context_gl_restore_pixel_format(struct wined3d_context_gl *c static BOOL wined3d_context_gl_set_pixel_format(struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; BOOL private = context_gl->dc_is_private; int format = context_gl->pixel_format; HDC dc = context_gl->dc; @@ -1335,7 +1335,7 @@ void wined3d_context_cleanup(struct wined3d_context *context) static void wined3d_context_gl_cleanup(struct wined3d_context_gl *context_gl) { struct wined3d_pipeline_statistics_query *pipeline_statistics_query; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_so_statistics_query *so_statistics_query; struct wined3d_timestamp_query *timestamp_query; struct wined3d_occlusion_query *occlusion_query; @@ -1524,14 +1524,14 @@ BOOL wined3d_context_gl_set_current(struct wined3d_context_gl *context_gl) { TRACE("Switching away from destroyed context %p.\n", old); wined3d_context_gl_cleanup(old); - heap_free((void *)old->c.gl_info); + heap_free((void *)old->gl_info); heap_free(old); } else { if (wglGetCurrentContext()) { - const struct wined3d_gl_info *gl_info = old->c.gl_info; + const struct wined3d_gl_info *gl_info = old->gl_info; TRACE("Flushing context %p before switching to %p.\n", old, context_gl); gl_info->gl_ops.gl.p_glFlush(); } @@ -1589,7 +1589,7 @@ void wined3d_context_gl_release(struct wined3d_context_gl *context_gl) if (context_gl->restore_ctx) { TRACE("Restoring GL context %p on device context %p.\n", context_gl->restore_ctx, context_gl->restore_dc); - context_restore_gl_context(context_gl->c.gl_info, context_gl->restore_dc, context_gl->restore_ctx); + context_restore_gl_context(context_gl->gl_info, context_gl->restore_dc, context_gl->restore_ctx); context_gl->restore_ctx = NULL; context_gl->restore_dc = NULL; } @@ -1634,7 +1634,7 @@ static void wined3d_context_gl_enter(struct wined3d_context_gl *context_gl) context_gl->needs_set = 1; } else if (!context_gl->needs_set && !(context_gl->dc_is_private && context_gl->dc_has_format) - && context_gl->pixel_format != context_gl->c.gl_info->gl_ops.wgl.p_wglGetPixelFormat(context_gl->dc)) + && context_gl->pixel_format != context_gl->gl_info->gl_ops.wgl.p_wglGetPixelFormat(context_gl->dc)) context_gl->needs_set = 1; } } @@ -1764,7 +1764,7 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC void wined3d_context_gl_bind_dummy_textures(const struct wined3d_context_gl *context_gl) { const struct wined3d_dummy_textures *textures = &wined3d_device_gl(context_gl->c.device)->dummy_textures; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int i; for (i = 0; i < gl_info->limits.combined_samplers; ++i) @@ -1903,7 +1903,6 @@ static void wined3d_context_init(struct wined3d_context *context, struct wined3d struct wined3d_device *device = swapchain->device; DWORD state; - context->gl_info = &device->adapter->gl_info; context->d3d_info = &device->adapter->d3d_info; context->state_table = device->state_table; @@ -1954,7 +1953,8 @@ HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl, struct wi wined3d_context_init(&context_gl->c, swapchain); device = context->device; - gl_info = context->gl_info; + gl_info = &device->adapter->gl_info; + context_gl->gl_info = gl_info; d3d_info = context->d3d_info; context_gl->tid = GetCurrentThreadId(); @@ -2339,8 +2339,8 @@ void wined3d_context_gl_destroy(struct wined3d_context_gl *context_gl) /* Make a copy of gl_info for wined3d_context_gl_cleanup() use, the * one in wined3d_adapter may go away in the meantime. */ gl_info = heap_alloc(sizeof(*gl_info)); - *gl_info = *context_gl->c.gl_info; - context_gl->c.gl_info = gl_info; + *gl_info = *context_gl->gl_info; + context_gl->gl_info = gl_info; context_gl->c.destroyed = 1; return; @@ -2354,7 +2354,7 @@ void wined3d_context_gl_destroy(struct wined3d_context_gl *context_gl) const unsigned int *wined3d_context_gl_get_tex_unit_mapping(const struct wined3d_context_gl *context_gl, const struct wined3d_shader_version *shader_version, unsigned int *base, unsigned int *count) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!shader_version) { @@ -2411,7 +2411,7 @@ static void wined3d_context_gl_get_rt_size(const struct wined3d_context_gl *cont void wined3d_context_gl_enable_clip_distances(struct wined3d_context_gl *context_gl, uint32_t enable_mask) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int clip_distance_count, i; uint32_t disable_mask, current_mask; @@ -2450,7 +2450,7 @@ static inline GLenum draw_buffer_from_rt_mask(DWORD rt_mask) /* Context activation is done by the caller. */ static void wined3d_context_gl_apply_draw_buffers(struct wined3d_context_gl *context_gl, uint32_t rt_mask) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum draw_buffers[MAX_RENDER_TARGET_VIEWS]; if (!rt_mask) @@ -2499,7 +2499,7 @@ static void wined3d_context_gl_apply_draw_buffers(struct wined3d_context_gl *con /* Context activation is done by the caller. */ void wined3d_context_gl_set_draw_buffer(struct wined3d_context_gl *context_gl, GLenum buffer) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct fbo_entry *current_fbo = context_gl->current_fbo; uint32_t new_mask = context_generate_rt_mask(buffer); uint32_t *current_mask; @@ -2525,7 +2525,7 @@ void wined3d_context_gl_active_texture(struct wined3d_context_gl *context_gl, void wined3d_context_gl_bind_bo(struct wined3d_context_gl *context_gl, GLenum binding, GLuint name) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (binding == GL_ELEMENT_ARRAY_BUFFER) context_invalidate_state(&context_gl->c, STATE_INDEXBUFFER); @@ -2536,7 +2536,7 @@ void wined3d_context_gl_bind_bo(struct wined3d_context_gl *context_gl, GLenum bi void wined3d_context_gl_bind_texture(struct wined3d_context_gl *context_gl, GLenum target, GLuint name) { const struct wined3d_dummy_textures *textures = &wined3d_device_gl(context_gl->c.device)->dummy_textures; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum old_texture_type; unsigned int unit; @@ -2606,7 +2606,7 @@ void *wined3d_context_gl_map_bo_address(struct wined3d_context_gl *context_gl, if (!data->buffer_object) return data->addr; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; wined3d_context_gl_bind_bo(context_gl, binding, data->buffer_object); if (gl_info->supported[ARB_MAP_BUFFER_RANGE]) @@ -2634,7 +2634,7 @@ void wined3d_context_gl_unmap_bo_address(struct wined3d_context_gl *context_gl, if (!data->buffer_object) return; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; wined3d_context_gl_bind_bo(context_gl, binding, data->buffer_object); GL_EXTCALL(glUnmapBuffer(binding)); wined3d_context_gl_bind_bo(context_gl, binding, 0); @@ -2648,7 +2648,7 @@ void wined3d_context_gl_copy_bo_address(struct wined3d_context_gl *context_gl, const struct wined3d_gl_info *gl_info; BYTE *dst_ptr, *src_ptr; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (dst->buffer_object && src->buffer_object) { @@ -2696,14 +2696,14 @@ static void wined3d_context_gl_set_render_offscreen(struct wined3d_context_gl *c context_invalidate_state(&context_gl->c, STATE_VIEWPORT); context_invalidate_state(&context_gl->c, STATE_SCISSORRECT); - if (!context_gl->c.gl_info->supported[ARB_CLIP_CONTROL]) + if (!context_gl->gl_info->supported[ARB_CLIP_CONTROL]) { context_invalidate_state(&context_gl->c, STATE_RASTERIZER); context_invalidate_state(&context_gl->c, STATE_POINTSPRITECOORDORIGIN); context_invalidate_state(&context_gl->c, STATE_TRANSFORM(WINED3D_TS_PROJECTION)); } context_invalidate_state(&context_gl->c, STATE_SHADER(WINED3D_SHADER_TYPE_DOMAIN)); - if (context_gl->c.gl_info->supported[ARB_FRAGMENT_COORD_CONVENTIONS]) + if (context_gl->gl_info->supported[ARB_FRAGMENT_COORD_CONVENTIONS]) context_invalidate_state(&context_gl->c, STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL)); context_gl->c.render_offscreen = offscreen; } @@ -2747,7 +2747,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl, TRACE("Setting up context %p for blitting.\n", context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; rt = context->current_rt.texture; if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) @@ -2877,7 +2877,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl, static void wined3d_context_gl_apply_blit_projection(const struct wined3d_context_gl *context_gl, unsigned int w, unsigned int h) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const GLdouble projection[] = { 2.0 / w, 0.0, 0.0, 0.0, @@ -2899,7 +2899,7 @@ void wined3d_context_gl_apply_ffp_blit_state(struct wined3d_context_gl *context_ const struct wined3d_gl_info *gl_info; unsigned int i, sampler; - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) ERR("Applying fixed-function state without legacy context support.\n"); @@ -3002,7 +3002,7 @@ BOOL wined3d_context_gl_apply_clear_state(struct wined3d_context_gl *context_gl, const struct wined3d_state *state, unsigned int rt_count, const struct wined3d_fb_state *fb) { struct wined3d_rendertarget_view * const *rts = fb->render_targets; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_rendertarget_view *dsv = fb->depth_stencil; uint32_t rt_mask = 0, *cur_mask; unsigned int i; @@ -3121,7 +3121,7 @@ static uint32_t find_draw_buffers_mask(const struct wined3d_context_gl *context_ { struct wined3d_rendertarget_view * const *rts = state->fb->render_targets; struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL]; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int rt_mask, mask; unsigned int i; @@ -3168,7 +3168,7 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat unsigned int i; memset(context_gl->blit_targets, 0, sizeof(context_gl->blit_targets)); - for (i = 0; i < context->gl_info->limits.buffers; ++i) + for (i = 0; i < context_gl->gl_info->limits.buffers; ++i) { if (!fb->render_targets[i]) continue; @@ -3380,7 +3380,7 @@ static void wined3d_context_gl_map_vsamplers(struct wined3d_context_gl *context_ const struct wined3d_shader_resource_info *vs_resource_info = state->shader[WINED3D_SHADER_TYPE_VERTEX]->reg_maps.resource_info; const struct wined3d_shader_resource_info *ps_resource_info = NULL; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; int start = min(WINED3D_MAX_COMBINED_SAMPLERS, gl_info->limits.graphics_samplers) - 1; int i; @@ -3420,7 +3420,7 @@ static void wined3d_context_gl_map_vsamplers(struct wined3d_context_gl *context_ static void wined3d_context_gl_update_tex_unit_map(struct wined3d_context_gl *context_gl, const struct wined3d_state *state) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; BOOL vs = use_vs(state); BOOL ps = use_ps(state); @@ -3840,7 +3840,7 @@ static void context_load_unordered_access_resources(struct wined3d_context *cont static void wined3d_context_gl_bind_unordered_access_views(struct wined3d_context_gl *context_gl, const struct wined3d_shader *shader, struct wined3d_unordered_access_view * const *views) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_unordered_access_view_gl *view_gl; const struct wined3d_format_gl *format_gl; GLuint texture_name; @@ -3911,7 +3911,7 @@ static BOOL context_apply_draw_state(struct wined3d_context *context, { const struct wined3d_state_entry *state_table = context->state_table; struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_fb_state *fb = state->fb; unsigned int i; WORD map; @@ -4018,7 +4018,7 @@ static void wined3d_context_gl_apply_compute_state(struct wined3d_context_gl *co const struct wined3d_device *device, const struct wined3d_state *state) { const struct wined3d_state_entry *state_table = context_gl->c.state_table; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int state_id, i; context_load_shader_resources(&context_gl->c, state, 1u << WINED3D_SHADER_TYPE_COMPUTE); @@ -4085,7 +4085,7 @@ static BOOL use_transform_feedback(const struct wined3d_state *state) void wined3d_context_gl_end_transform_feedback(struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (context_gl->c.transform_feedback_active) { @@ -4098,7 +4098,7 @@ void wined3d_context_gl_end_transform_feedback(struct wined3d_context_gl *contex static void wined3d_context_gl_pause_transform_feedback(struct wined3d_context_gl *context_gl, BOOL force) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!context_gl->c.transform_feedback_active || context_gl->c.transform_feedback_paused) return; @@ -4296,7 +4296,7 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state WARN("Invalid context, skipping dispatch.\n"); return; } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (!gl_info->supported[ARB_COMPUTE_SHADER]) { @@ -4347,7 +4347,7 @@ static void wined3d_context_gl_draw_primitive_arrays(struct wined3d_context_gl * 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; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int instanced_elements[ARRAY_SIZE(si->elements)]; unsigned int instanced_element_count = 0; GLenum mode = state->gl_primitive_type; @@ -4488,7 +4488,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, { const BYTE *position = NULL, *normal = NULL, *diffuse = NULL, *specular = NULL; const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int coord_idx, stride_idx, texture_idx, vertex_idx; const struct wined3d_stream_info_element *element; const BYTE *tex_coords[WINED3DDP_MAXTEXCOORD]; @@ -4705,7 +4705,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, static void wined3d_context_gl_draw_indirect(struct wined3d_context_gl *context_gl, const struct wined3d_state *state, const struct wined3d_indirect_draw_parameters *parameters, unsigned int idx_size) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_buffer *buffer = parameters->buffer; const void *offset; @@ -4822,7 +4822,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s WARN("Invalid context, skipping draw.\n"); return; } - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (!use_transform_feedback(state)) wined3d_context_gl_pause_transform_feedback(context_gl, TRUE); @@ -5014,7 +5014,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s void wined3d_context_gl_unload_tex_coords(const struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int texture_idx; for (texture_idx = 0; texture_idx < gl_info->limits.texture_coords; ++texture_idx) @@ -5027,7 +5027,7 @@ void wined3d_context_gl_unload_tex_coords(const struct wined3d_context_gl *conte void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context_gl, const struct wined3d_stream_info *si, GLuint *current_bo, const struct wined3d_state *state) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_format_gl *format_gl; unsigned int mapped_stage = 0; unsigned int texture_idx; @@ -5088,7 +5088,7 @@ void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context /* This should match any arrays loaded in wined3d_context_gl_load_vertex_data(). */ static void wined3d_context_gl_unload_vertex_data(struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (!context_gl->c.namedArraysLoaded) return; @@ -5104,7 +5104,7 @@ static void wined3d_context_gl_unload_vertex_data(struct wined3d_context_gl *con static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *context_gl, const struct wined3d_stream_info *si, const struct wined3d_state *state) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_stream_info_element *e; const struct wined3d_format_gl *format_gl; GLuint current_bo; @@ -5298,7 +5298,7 @@ static void wined3d_context_gl_load_vertex_data(struct wined3d_context_gl *conte static void wined3d_context_gl_unload_numbered_array(struct wined3d_context_gl *context_gl, unsigned int i) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GL_EXTCALL(glDisableVertexAttribArray(i)); checkGLcall("glDisableVertexAttribArray"); @@ -5325,7 +5325,7 @@ static void wined3d_context_gl_load_numbered_arrays(struct wined3d_context_gl *c { struct wined3d_context *context = &context_gl->c; const struct wined3d_shader *vs = state->shader[WINED3D_SHADER_TYPE_VERTEX]; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLuint current_bo; unsigned int i; @@ -5581,7 +5581,7 @@ void wined3d_context_gl_draw_shaded_quad(struct wined3d_context_gl *context_gl, unsigned int sub_resource_idx, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_blt_info info; unsigned int level, w, h, i; SIZE dst_size; @@ -5666,7 +5666,7 @@ void wined3d_context_gl_draw_textured_quad(struct wined3d_context_gl *context_gl struct wined3d_texture_gl *texture_gl, unsigned int sub_resource_idx, const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_blt_info info; unsigned int level; diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 3882be91aa9..a076253ce1b 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1012,7 +1012,7 @@ static void wined3d_cs_exec_flush(struct wined3d_cs *cs, const void *data) context_gl = wined3d_context_gl(context_acquire(cs->device, NULL, 0)); if (context_gl->valid) - context_gl->c.gl_info->gl_ops.gl.p_glFlush(); + context_gl->gl_info->gl_ops.gl.p_glFlush(); context_release(&context_gl->c); } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 6b4b07975a9..a28dd6c3e1f 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -317,7 +317,7 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c WARN("Invalid context, skipping clear.\n"); return; } - gl_info = context->gl_info; + gl_info = context_gl->gl_info; /* When we're clearing parts of the drawable, make sure that the target surface is well up to date in the * drawable. After the clear we'll mark the drawable up to date, so we have to make sure that this is true @@ -682,7 +682,7 @@ static void wined3d_device_gl_create_dummy_textures(struct wined3d_device_gl *de { struct wined3d_dummy_textures *textures = &device_gl->dummy_textures; const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int i; DWORD color; @@ -816,7 +816,7 @@ static void wined3d_device_gl_destroy_dummy_textures(struct wined3d_device_gl *d struct wined3d_context_gl *context_gl) { struct wined3d_dummy_textures *dummy_textures = &device_gl->dummy_textures; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (gl_info->supported[ARB_TEXTURE_MULTISAMPLE]) { diff --git a/dlls/wined3d/gl_compat.c b/dlls/wined3d/gl_compat.c index a492bd1513f..b8323b7e226 100644 --- a/dlls/wined3d/gl_compat.c +++ b/dlls/wined3d/gl_compat.c @@ -39,7 +39,7 @@ static void WINE_GLAPI wine_glMultiTexCoord1fARB(GLenum target, GLfloat s) ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord1f(s); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord1f(s); } static void WINE_GLAPI wine_glMultiTexCoord1fvARB(GLenum target, const GLfloat *v) @@ -49,7 +49,7 @@ static void WINE_GLAPI wine_glMultiTexCoord1fvARB(GLenum target, const GLfloat * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord1fv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord1fv(v); } static void WINE_GLAPI wine_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) @@ -59,7 +59,7 @@ static void WINE_GLAPI wine_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLflo ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord2f(s, t); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord2f(s, t); } static void WINE_GLAPI wine_glMultiTexCoord2fvARB(GLenum target, const GLfloat *v) @@ -69,7 +69,7 @@ static void WINE_GLAPI wine_glMultiTexCoord2fvARB(GLenum target, const GLfloat * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord2fv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord2fv(v); } static void WINE_GLAPI wine_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) @@ -79,7 +79,7 @@ static void WINE_GLAPI wine_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLflo ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord3f(s, t, r); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord3f(s, t, r); } static void WINE_GLAPI wine_glMultiTexCoord3fvARB(GLenum target, const GLfloat *v) @@ -89,7 +89,7 @@ static void WINE_GLAPI wine_glMultiTexCoord3fvARB(GLenum target, const GLfloat * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord3fv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord3fv(v); } static void WINE_GLAPI wine_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) @@ -99,7 +99,7 @@ static void WINE_GLAPI wine_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLflo ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord4f(s, t, r, q); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord4f(s, t, r, q); } static void WINE_GLAPI wine_glMultiTexCoord4fvARB(GLenum target, const GLfloat *v) @@ -109,7 +109,7 @@ static void WINE_GLAPI wine_glMultiTexCoord4fvARB(GLenum target, const GLfloat * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord4fv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord4fv(v); } static void WINE_GLAPI wine_glMultiTexCoord2svARB(GLenum target, const GLshort *v) @@ -119,7 +119,7 @@ static void WINE_GLAPI wine_glMultiTexCoord2svARB(GLenum target, const GLshort * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord2sv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord2sv(v); } static void WINE_GLAPI wine_glMultiTexCoord4svARB(GLenum target, const GLshort *v) @@ -129,7 +129,7 @@ static void WINE_GLAPI wine_glMultiTexCoord4svARB(GLenum target, const GLshort * ERR("Texture unit > 0 used, but GL_ARB_multitexture is not supported.\n"); return; } - wined3d_context_gl_get_current()->c.gl_info->gl_ops.gl.p_glTexCoord4sv(v); + wined3d_context_gl_get_current()->gl_info->gl_ops.gl.p_glTexCoord4sv(v); } static void WINE_GLAPI wine_glActiveTexture(GLenum texture) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 29846af7737..e5f51925cdc 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -742,7 +742,7 @@ static void shader_glsl_load_samplers(const struct wined3d_context *context, struct shader_glsl_priv *priv, GLuint program_id, const struct wined3d_shader_reg_maps *reg_maps) { const struct wined3d_context_gl *context_gl = wined3d_context_gl_const(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_shader_version *shader_version; const unsigned int *tex_unit_map; unsigned int base, count; @@ -813,8 +813,8 @@ static void shader_glsl_load_program_resources(const struct wined3d_context_gl * { const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - shader_glsl_init_uniform_block_bindings(context_gl->c.gl_info, priv, program_id, reg_maps); - shader_glsl_load_icb(context_gl->c.gl_info, priv, program_id, reg_maps); + shader_glsl_init_uniform_block_bindings(context_gl->gl_info, priv, program_id, reg_maps); + shader_glsl_load_icb(context_gl->gl_info, priv, program_id, reg_maps); /* Texture unit mapping is set up to be the same each time the shader * program is used so we can hardcode the sampler uniform values. */ shader_glsl_load_samplers(&context_gl->c, priv, program_id, reg_maps); @@ -951,7 +951,7 @@ static void shader_glsl_init_transform_feedback(const struct wined3d_context_gl struct shader_glsl_priv *priv, GLuint program_id, struct wined3d_shader *shader) { const struct wined3d_stream_output_desc *so_desc = &shader->u.gs.so_desc; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer; unsigned int i, count, length; const char **varyings; @@ -1320,7 +1320,7 @@ static void transpose_matrix(struct wined3d_matrix *out, const struct wined3d_ma static void shader_glsl_ffp_vertex_normalmatrix_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_matrix mv; float mat[3 * 3]; @@ -1337,7 +1337,7 @@ static void shader_glsl_ffp_vertex_normalmatrix_uniform(const struct wined3d_con static void shader_glsl_ffp_vertex_texmatrix_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, unsigned int tex, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_matrix mat; if (tex >= WINED3D_MAX_TEXTURES) @@ -1353,7 +1353,7 @@ static void shader_glsl_ffp_vertex_texmatrix_uniform(const struct wined3d_contex static void shader_glsl_ffp_vertex_material_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (state->render_states[WINED3D_RS_SPECULARENABLE]) { @@ -1375,7 +1375,7 @@ static void shader_glsl_ffp_vertex_material_uniform(const struct wined3d_context static void shader_glsl_ffp_vertex_lightambient_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_AMBIENT]); @@ -1388,7 +1388,7 @@ static void shader_glsl_ffp_vertex_light_uniform(const struct wined3d_context_gl struct glsl_shader_prog_link *prog) { const struct wined3d_matrix *view = &state->transforms[WINED3D_TS_VIEW]; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_vec4 vec4; GL_EXTCALL(glUniform4fv(prog->vs.light_location[light].diffuse, 1, &light_info->OriginalParms.diffuse.r)); @@ -1441,9 +1441,9 @@ static void shader_glsl_ffp_vertex_light_uniform(const struct wined3d_context_gl static void shader_glsl_pointsize_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; - float min, max; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; float size, att[3]; + float min, max; get_pointsize_minmax(&context_gl->c, state, &min, &max); @@ -1467,7 +1467,7 @@ static void shader_glsl_pointsize_uniform(const struct wined3d_context_gl *conte static void shader_glsl_load_fog_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; float start, end, scale; union @@ -1490,7 +1490,7 @@ static void shader_glsl_load_fog_uniform(const struct wined3d_context_gl *contex static void shader_glsl_clip_plane_uniform(const struct wined3d_context_gl *context_gl, const struct wined3d_state *state, unsigned int index, struct glsl_shader_prog_link *prog) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_matrix matrix; struct wined3d_vec4 plane; @@ -1527,7 +1527,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context const struct glsl_context_data *ctx_data = context->shader_backend_data; struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct glsl_shader_prog_link *prog = ctx_data->glsl_program; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; float position_fixup[4 * WINED3D_MAX_VIEWPORTS]; struct shader_glsl_priv *priv = shader_priv; unsigned int constant_version; @@ -2158,7 +2158,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c const struct wined3d_shader_version *version = ®_maps->shader_version; const struct vs_compile_args *vs_args = ctx_priv->cur_vs_args; const struct ps_compile_args *ps_args = ctx_priv->cur_ps_args; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_shader_indexable_temp *idx_temp_reg; unsigned int uniform_block_base, uniform_block_count; enum wined3d_shader_resource_type resource_type; @@ -7559,9 +7559,9 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_ { const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; const struct wined3d_shader_version *version = ®_maps->shader_version; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; - const BOOL legacy_syntax = needs_legacy_glsl_syntax(gl_info); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const char *prefix = shader_glsl_get_prefix(version->type); + BOOL legacy_syntax = needs_legacy_glsl_syntax(gl_info); unsigned int i, extra_constants_needed = 0; struct shader_glsl_ctx_priv priv_ctx; GLuint shader_id; @@ -7914,7 +7914,7 @@ static GLuint shader_glsl_generate_vertex_shader(const struct wined3d_context_gl struct wined3d_string_buffer_list *string_buffers = &priv->string_buffers; const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; const struct wined3d_shader_version *version = ®_maps->shader_version; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer = &priv->shader_buffer; struct shader_glsl_ctx_priv priv_ctx; GLuint shader_id; @@ -8056,7 +8056,7 @@ static GLuint shader_glsl_generate_hull_shader(const struct wined3d_context_gl * { struct wined3d_string_buffer_list *string_buffers = &priv->string_buffers; const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer = &priv->shader_buffer; const struct wined3d_hull_shader *hs = &shader->u.hs; const struct wined3d_shader_phase *phase; @@ -8152,7 +8152,7 @@ static GLuint shader_glsl_generate_domain_shader(const struct wined3d_context_gl { struct wined3d_string_buffer_list *string_buffers = &priv->string_buffers; const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer = &priv->shader_buffer; struct shader_glsl_ctx_priv priv_ctx; GLuint shader_id; @@ -8246,7 +8246,7 @@ static GLuint shader_glsl_generate_geometry_shader(const struct wined3d_context_ { struct wined3d_string_buffer_list *string_buffers = &priv->string_buffers; const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer = &priv->shader_buffer; const struct wined3d_shader_signature_element *output; enum wined3d_primitive_type primitive_type; @@ -8376,7 +8376,7 @@ static GLuint shader_glsl_generate_compute_shader(const struct wined3d_context_g { const struct wined3d_shader_thread_group_size *thread_group_size = &shader->u.cs.thread_group_size; const struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_glsl_ctx_priv priv_ctx; GLuint shader_id; unsigned int i; @@ -9404,7 +9404,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * enum wined3d_cmp_func alpha_test_func = settings->alpha_test_func + 1; struct wined3d_string_buffer *buffer = &priv->shader_buffer; BYTE lum_map = 0, bump_map = 0, tex_map = 0, tss_const_map = 0; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const BOOL legacy_syntax = needs_legacy_glsl_syntax(gl_info); BOOL tempreg_used = FALSE, tfactor_used = FALSE; UINT lowest_disabled_stage; @@ -10003,7 +10003,7 @@ static HRESULT shader_glsl_compile_compute_shader(struct shader_glsl_priv *priv, const struct wined3d_context_gl *context_gl, struct wined3d_shader *shader) { struct glsl_context_data *ctx_data = context_gl->c.shader_backend_data; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_string_buffer *buffer = &priv->shader_buffer; struct glsl_cs_compiled_shader *gl_shaders; struct glsl_shader_private *shader_data; @@ -10129,7 +10129,7 @@ static void set_glsl_shader_program(const struct wined3d_context_gl *context_gl, struct shader_glsl_priv *priv, struct glsl_context_data *ctx_data) { const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_shader *pre_rasterization_shader; const struct ps_np2fixup_info *np2fixup_info = NULL; struct wined3d_shader *hshader, *dshader, *gshader; @@ -10568,7 +10568,7 @@ static void shader_glsl_select(void *shader_priv, struct wined3d_context *contex { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct glsl_context_data *ctx_data = context->shader_backend_data; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_glsl_priv *priv = shader_priv; struct glsl_shader_prog_link *glsl_program; GLenum current_vertex_color_clamp; @@ -10628,7 +10628,7 @@ static void shader_glsl_select_compute(void *shader_priv, struct wined3d_context { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct glsl_context_data *ctx_data = context->shader_backend_data; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_glsl_priv *priv = shader_priv; GLuint program_id, prev_id; @@ -10668,8 +10668,9 @@ static void shader_glsl_invalidate_current_program(struct wined3d_context *conte /* Context activation is done by the caller. */ static void shader_glsl_disable(void *shader_priv, struct wined3d_context *context) { + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct glsl_context_data *ctx_data = context->shader_backend_data; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct shader_glsl_priv *priv = shader_priv; shader_glsl_invalidate_current_program(context); @@ -10721,7 +10722,7 @@ static void shader_glsl_destroy(struct wined3d_shader *shader) } context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; TRACE("Deleting linked programs.\n"); linked_programs = &shader->linked_programs; @@ -11045,7 +11046,8 @@ static void shader_glsl_free_context_data(struct wined3d_context *context) static void shader_glsl_init_context_state(struct wined3d_context *context) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; gl_info->gl_ops.gl.p_glEnable(GL_PROGRAM_POINT_SIZE); checkGLcall("GL_PROGRAM_POINT_SIZE"); @@ -11478,7 +11480,7 @@ static void shader_glsl_free_ffp_vertex_shader(struct wine_rb_entry *entry, void struct glsl_ffp_destroy_ctx *ctx = param; const struct wined3d_gl_info *gl_info; - gl_info = ctx->context_gl->c.gl_info; + gl_info = ctx->context_gl->gl_info; LIST_FOR_EACH_ENTRY_SAFE(program, program2, &shader->linked_programs, struct glsl_shader_prog_link, vs.shader_entry) { @@ -11512,7 +11514,8 @@ static void glsl_vertex_pipe_shader(struct wined3d_context *context, static void glsl_vertex_pipe_vdecl(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; BOOL specular = !!(context->stream_info.use_map & (1u << WINED3D_FFP_SPECULAR)); BOOL diffuse = !!(context->stream_info.use_map & (1u << WINED3D_FFP_DIFFUSE)); BOOL normal = !!(context->stream_info.use_map & (1u << WINED3D_FFP_NORMAL)); @@ -11647,7 +11650,8 @@ static void glsl_vertex_pipe_vertexblend(struct wined3d_context *context, static void glsl_vertex_pipe_view(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int k; context->constant_update_mask |= WINED3D_SHADER_CONST_FFP_MODELVIEW @@ -11763,7 +11767,8 @@ static void glsl_vertex_pipe_shademode(struct wined3d_context *context, static void glsl_vertex_pipe_clip_plane(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; UINT index = state_id - STATE_CLIPPLANE(0); if (index >= gl_info->limits.user_clip_distances) @@ -11990,7 +11995,7 @@ static void shader_glsl_free_ffp_fragment_shader(struct wine_rb_entry *entry, vo struct glsl_ffp_destroy_ctx *ctx = param; const struct wined3d_gl_info *gl_info; - gl_info = ctx->context_gl->c.gl_info; + gl_info = ctx->context_gl->gl_info; LIST_FOR_EACH_ENTRY_SAFE(program, program2, &shader->linked_programs, struct glsl_shader_prog_link, ps.shader_entry) { @@ -12063,8 +12068,10 @@ static void glsl_fragment_pipe_fog(struct wined3d_context *context, static void glsl_fragment_pipe_vdecl(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; + /* Because of settings->texcoords_initialized and args->texcoords_initialized. */ - if (context->gl_info->limits.glsl_varyings < shader_glsl_max_compat_varyings(context->gl_info)) + if (gl_info->limits.glsl_varyings < shader_glsl_max_compat_varyings(gl_info)) context->shader_update_mask |= 1u << WINED3D_SHADER_TYPE_PIXEL; if (!isStateDirty(context, STATE_RENDER(WINED3D_RS_FOGENABLE))) @@ -12074,8 +12081,10 @@ static void glsl_fragment_pipe_vdecl(struct wined3d_context *context, static void glsl_fragment_pipe_vs(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; + /* Because of settings->texcoords_initialized and args->texcoords_initialized. */ - if (context->gl_info->limits.glsl_varyings < shader_glsl_max_compat_varyings(context->gl_info)) + if (gl_info->limits.glsl_varyings < shader_glsl_max_compat_varyings(gl_info)) context->shader_update_mask |= 1u << WINED3D_SHADER_TYPE_PIXEL; } @@ -12094,7 +12103,7 @@ static void glsl_fragment_pipe_invalidate_constants(struct wined3d_context *cont static void glsl_fragment_pipe_alpha_test_func(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GLint func = wined3d_gl_compare_func(state->render_states[WINED3D_RS_ALPHAFUNC]); float ref = wined3d_alpha_ref(state); @@ -12114,7 +12123,7 @@ static void glsl_fragment_pipe_core_alpha_test(struct wined3d_context *context, static void glsl_fragment_pipe_alpha_test(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_ALPHATESTENABLE]) { @@ -12325,7 +12334,7 @@ static void glsl_free_blitter_program(struct wine_rb_entry *entry, void *ctx) struct wined3d_context_gl *context_gl = ctx; const struct wined3d_gl_info *gl_info; - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glDeleteProgram(program->id)); checkGLcall("glDeleteProgram()"); heap_free(program); @@ -12335,7 +12344,7 @@ static void glsl_free_blitter_program(struct wine_rb_entry *entry, void *ctx) static void glsl_blitter_destroy(struct wined3d_blitter *blitter, struct wined3d_context *context) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_glsl_blitter *glsl_blitter; struct wined3d_blitter *next; @@ -12815,7 +12824,7 @@ static GLuint glsl_blitter_generate_program(struct wined3d_glsl_blitter *blitter static void glsl_blitter_upload_palette(struct wined3d_glsl_blitter *blitter, struct wined3d_context_gl *context_gl, const struct wined3d_texture_gl *texture_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_palette *palette; palette = texture_gl->t.swapchain ? texture_gl->t.swapchain->palette : NULL; @@ -12850,7 +12859,7 @@ static void glsl_blitter_upload_palette(struct wined3d_glsl_blitter *blitter, static struct glsl_blitter_program *glsl_blitter_get_program(struct wined3d_glsl_blitter *blitter, struct wined3d_context_gl *context_gl, const struct wined3d_texture_gl *texture_gl, BOOL use_colour_key) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct glsl_blitter_program *program; struct glsl_blitter_args args; struct wine_rb_entry *entry; @@ -12963,7 +12972,7 @@ static DWORD glsl_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_bli struct wined3d_texture_gl *dst_texture_gl = wined3d_texture_gl(dst_texture); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct wined3d_device *device = dst_texture->resource.device; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture *staging_texture = NULL; struct wined3d_glsl_blitter *glsl_blitter; struct wined3d_color_key alpha_test_key; diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index 7ace75841c1..10f35e61d59 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -33,7 +33,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d); static void nvts_activate_dimensions(const struct wined3d_state *state, unsigned int stage, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture *texture; BOOL bumpmap = FALSE; @@ -485,8 +485,8 @@ static void nvrc_colorop(struct wined3d_context *context, const struct wined3d_s DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); BOOL tex_used = context->fixed_function_usage_map & (1u << stage); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int mapped_stage = context_gl->tex_unit_map[stage]; - const struct wined3d_gl_info *gl_info = context->gl_info; TRACE("Setting color op for stage %u.\n", stage); @@ -610,7 +610,7 @@ static void nvts_texdim(struct wined3d_context *context, const struct wined3d_st /* No need to enable / disable anything here for unused samplers. The tex_colorop * handler takes care. Also no action is needed with pixel shaders, or if tex_colorop * will take care of this business. */ - if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context->gl_info->limits.textures) + if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context_gl->gl_info->limits.textures) return; if (sampler >= context->lowest_disabled_stage) return; @@ -625,7 +625,7 @@ static void nvts_bumpenvmat(struct wined3d_context *context, const struct wined3 DWORD stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); unsigned int mapped_stage = context_gl->tex_unit_map[stage + 1]; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; float mat[2][2]; /* Direct3D sets the matrix in the stage reading the perturbation map. The result is used to @@ -651,7 +651,8 @@ static void nvts_bumpenvmat(struct wined3d_context *context, const struct wined3 static void nvrc_texfactor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_TEXTUREFACTOR]); @@ -661,7 +662,7 @@ static void nvrc_texfactor(struct wined3d_context *context, const struct wined3d /* Context activation is done by the caller. */ static void nvrc_enable(const struct wined3d_context *context, BOOL enable) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_const(context)->gl_info; if (enable) { @@ -678,7 +679,7 @@ static void nvrc_enable(const struct wined3d_context *context, BOOL enable) /* Context activation is done by the caller. */ static void nvts_enable(const struct wined3d_context *context, BOOL enable) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl_const(context)->gl_info; nvrc_enable(context, enable); if (enable) diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c index d6f78797177..ec20a68440d 100644 --- a/dlls/wined3d/query.c +++ b/dlls/wined3d/query.c @@ -40,7 +40,7 @@ static BOOL wined3d_query_buffer_is_valid(struct wined3d_query *query) static void wined3d_query_create_buffer_object(struct wined3d_context_gl *context_gl, struct wined3d_query *query) { const GLuint map_flags = GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT | GL_MAP_COHERENT_BIT; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLuint buffer_object; GL_EXTCALL(glGenBuffers(1, &buffer_object)); @@ -56,7 +56,7 @@ static void wined3d_query_create_buffer_object(struct wined3d_context_gl *contex static void wined3d_query_destroy_buffer_object(struct wined3d_context_gl *context_gl, struct wined3d_query *query) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GL_EXTCALL(glDeleteBuffers(1, &query->buffer_object)); checkGLcall("query buffer object destruction"); @@ -76,7 +76,7 @@ static void wined3d_query_destroy_buffer_object(struct wined3d_context_gl *conte static BOOL wined3d_query_buffer_queue_result(struct wined3d_context_gl *context_gl, struct wined3d_query *query, GLuint id) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLsync tmp_sync; if (!gl_info->supported[ARB_QUERY_BUFFER_OBJECT] || !gl_info->supported[ARB_BUFFER_STORAGE]) @@ -198,14 +198,14 @@ static enum wined3d_fence_result wined3d_fence_test(const struct wined3d_fence * if (!(context_gl = wined3d_context_gl_reacquire(fence->context_gl))) { - if (!fence->context_gl->c.gl_info->supported[ARB_SYNC]) + if (!fence->context_gl->gl_info->supported[ARB_SYNC]) { WARN("Fence tested from wrong thread.\n"); return WINED3D_FENCE_WRONG_THREAD; } context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (gl_info->supported[ARB_SYNC]) { @@ -272,7 +272,7 @@ enum wined3d_fence_result wined3d_fence_wait(const struct wined3d_fence *fence, TRACE("Fence not issued.\n"); return WINED3D_FENCE_NOT_STARTED; } - gl_info = fence->context_gl->c.gl_info; + gl_info = fence->context_gl->gl_info; if (!(context_gl = wined3d_context_gl_reacquire(fence->context_gl))) { @@ -286,7 +286,7 @@ enum wined3d_fence_result wined3d_fence_wait(const struct wined3d_fence *fence, } context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (gl_info->supported[ARB_SYNC]) { @@ -339,11 +339,11 @@ void wined3d_fence_issue(struct wined3d_fence *fence, struct wined3d_device *dev const struct wined3d_gl_info *gl_info; if (fence->context_gl && !(context_gl = wined3d_context_gl_reacquire(fence->context_gl)) - && !fence->context_gl->c.gl_info->supported[ARB_SYNC]) + && !fence->context_gl->gl_info->supported[ARB_SYNC]) wined3d_context_gl_free_fence(fence); if (!context_gl) context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (!fence->context_gl) wined3d_context_gl_alloc_fence(context_gl, fence); @@ -545,7 +545,7 @@ static BOOL wined3d_occlusion_query_ops_poll(struct wined3d_query *query, DWORD oq->samples = 1; return TRUE; } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glGetQueryObjectuiv(oq->id, GL_QUERY_RESULT_AVAILABLE, &available)); TRACE("Available %#x.\n", available); @@ -645,7 +645,7 @@ static BOOL wined3d_occlusion_query_ops_issue(struct wined3d_query *query, DWORD { if ((context_gl = wined3d_context_gl_reacquire(oq->context_gl))) { - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED)); checkGLcall("glEndQuery()"); } @@ -664,7 +664,7 @@ static BOOL wined3d_occlusion_query_ops_issue(struct wined3d_query *query, DWORD context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); wined3d_context_gl_alloc_occlusion_query(context_gl, oq); } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glBeginQuery(GL_SAMPLES_PASSED, oq->id)); checkGLcall("glBeginQuery()"); @@ -681,7 +681,7 @@ static BOOL wined3d_occlusion_query_ops_issue(struct wined3d_query *query, DWORD { if ((context_gl = wined3d_context_gl_reacquire(oq->context_gl))) { - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED)); checkGLcall("glEndQuery()"); wined3d_query_buffer_queue_result(context_gl, query, oq->id); @@ -716,7 +716,7 @@ static BOOL wined3d_timestamp_query_ops_poll(struct wined3d_query *query, DWORD tq->timestamp = 1; return TRUE; } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glGetQueryObjectuiv(tq->id, GL_QUERY_RESULT_AVAILABLE, &available)); checkGLcall("glGetQueryObjectuiv(GL_QUERY_RESULT_AVAILABLE)"); @@ -739,7 +739,7 @@ static BOOL wined3d_timestamp_query_ops_issue(struct wined3d_query *query, DWORD { struct wined3d_timestamp_query *tq = wined3d_timestamp_query_from_query(query); const struct wined3d_gl_info *gl_info; - struct wined3d_context *context; + struct wined3d_context_gl *context_gl; TRACE("query %p, flags %#x.\n", query, flags); @@ -751,12 +751,12 @@ static BOOL wined3d_timestamp_query_ops_issue(struct wined3d_query *query, DWORD { if (tq->context_gl) wined3d_context_gl_free_timestamp_query(tq); - context = context_acquire(query->device, NULL, 0); - gl_info = context->gl_info; - wined3d_context_gl_alloc_timestamp_query(wined3d_context_gl(context), tq); + context_gl = wined3d_context_gl(context_acquire(query->device, NULL, 0)); + gl_info = context_gl->gl_info; + wined3d_context_gl_alloc_timestamp_query(context_gl, tq); GL_EXTCALL(glQueryCounter(tq->id, GL_TIMESTAMP)); checkGLcall("glQueryCounter()"); - context_release(context); + context_release(&context_gl->c); return TRUE; } @@ -793,7 +793,7 @@ static BOOL wined3d_so_statistics_query_ops_poll(struct wined3d_query *query, DW memset(&pq->statistics, 0, sizeof(pq->statistics)); return TRUE; } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glGetQueryObjectuiv(pq->u.query.written, GL_QUERY_RESULT_AVAILABLE, &written_available)); @@ -819,7 +819,7 @@ static BOOL wined3d_so_statistics_query_ops_poll(struct wined3d_query *query, DW static void wined3d_so_statistics_query_end(struct wined3d_so_statistics_query *query, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (gl_info->supported[ARB_TRANSFORM_FEEDBACK3]) { @@ -867,7 +867,7 @@ static BOOL wined3d_so_statistics_query_ops_issue(struct wined3d_query *query, D context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); wined3d_context_gl_alloc_so_statistics_query(context_gl, pq); } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; if (gl_info->supported[ARB_TRANSFORM_FEEDBACK3]) { @@ -926,7 +926,7 @@ static BOOL wined3d_pipeline_query_ops_poll(struct wined3d_query *query, DWORD f memset(&pq->statistics, 0, sizeof(pq->statistics)); return TRUE; } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; for (i = 0; i < ARRAY_SIZE(pq->u.id); ++i) { @@ -958,7 +958,7 @@ static BOOL wined3d_pipeline_query_ops_poll(struct wined3d_query *query, DWORD f static void wined3d_pipeline_statistics_query_end(struct wined3d_pipeline_statistics_query *query, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GL_EXTCALL(glEndQuery(GL_VERTICES_SUBMITTED_ARB)); GL_EXTCALL(glEndQuery(GL_PRIMITIVES_SUBMITTED_ARB)); @@ -1007,7 +1007,7 @@ static BOOL wined3d_pipeline_query_ops_issue(struct wined3d_query *query, DWORD context_gl = wined3d_context_gl(context_acquire(device, NULL, 0)); wined3d_context_gl_alloc_pipeline_statistics_query(context_gl, pq); } - gl_info = context_gl->c.gl_info; + gl_info = context_gl->gl_info; GL_EXTCALL(glBeginQuery(GL_VERTICES_SUBMITTED_ARB, pq->u.query.vertices)); GL_EXTCALL(glBeginQuery(GL_PRIMITIVES_SUBMITTED_ARB, pq->u.query.primitives)); diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c index bfc3aec38eb..9b729353538 100644 --- a/dlls/wined3d/sampler.c +++ b/dlls/wined3d/sampler.c @@ -42,7 +42,7 @@ static void wined3d_sampler_destroy_object(void *object) if (sampler->name) { context = context_acquire(sampler->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; GL_EXTCALL(glDeleteSamplers(1, &sampler->name)); context_release(context); } @@ -80,7 +80,7 @@ static void wined3d_sampler_cs_init(void *object) struct wined3d_context *context; context = context_acquire(sampler->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; desc = &sampler->desc; GL_EXTCALL(glGenSamplers(1, &sampler->name)); @@ -184,7 +184,7 @@ static void texture_gl_apply_base_level(struct wined3d_texture_gl *texture_gl, void wined3d_sampler_bind(struct wined3d_sampler *sampler, unsigned int unit, struct wined3d_texture_gl *texture_gl, const struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; if (gl_info->supported[ARB_SAMPLER_OBJECTS]) { diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 6061efa269b..87089950235 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -3896,8 +3896,8 @@ void find_gs_compile_args(const struct wined3d_state *state, const struct wined3 void find_ps_compile_args(const struct wined3d_state *state, const struct wined3d_shader *shader, BOOL position_transformed, struct ps_compile_args *args, const struct wined3d_context *context) { + const struct wined3d_gl_info *gl_info = &context->device->adapter->gl_info; const struct wined3d_d3d_info *d3d_info = context->d3d_info; - const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_texture *texture; unsigned int i; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 9b53bd19e5e..d860d13bdb0 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -173,8 +173,8 @@ void state_nop(struct wined3d_context *context, const struct wined3d_state *stat static void state_fillmode(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; enum wined3d_fill_mode mode = state->render_states[WINED3D_RS_FILLMODE]; - const struct wined3d_gl_info *gl_info = context->gl_info; switch (mode) { @@ -197,7 +197,7 @@ static void state_fillmode(struct wined3d_context *context, const struct wined3d static void state_lighting(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; /* Lighting is not enabled if transformed vertices are drawn, but lighting * does not affect the stream sources, so it is not grouped for @@ -223,7 +223,7 @@ static void state_lighting(struct wined3d_context *context, const struct wined3d static void state_zenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { enum wined3d_depth_buffer_type zenable = state->render_states[WINED3D_RS_ZENABLE]; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; /* No z test without depth stencil buffers */ if (!state->fb->depth_stencil) @@ -258,7 +258,7 @@ static void state_zenable(struct wined3d_context *context, const struct wined3d_ static void state_cullmode(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; /* glFrontFace() is set in context.c at context init and on an * offscreen / onscreen rendering switch. */ @@ -288,7 +288,7 @@ static void state_cullmode(struct wined3d_context *context, const struct wined3d void state_shademode(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; switch (state->render_states[WINED3D_RS_SHADEMODE]) { @@ -311,7 +311,7 @@ void state_shademode(struct wined3d_context *context, const struct wined3d_state static void state_ditherenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_DITHERENABLE]) { @@ -327,7 +327,7 @@ static void state_ditherenable(struct wined3d_context *context, const struct win static void state_zwriteenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_ZWRITEENABLE]) { @@ -373,7 +373,7 @@ GLenum wined3d_gl_compare_func(enum wined3d_cmp_func f) static void state_zfunc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { GLenum depth_func = wined3d_gl_compare_func(state->render_states[WINED3D_RS_ZFUNC]); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (!depth_func) return; @@ -383,7 +383,7 @@ static void state_zfunc(struct wined3d_context *context, const struct wined3d_st static void state_ambient(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; struct wined3d_color color; wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_AMBIENT]); @@ -422,7 +422,7 @@ static GLenum gl_blend_op(const struct wined3d_gl_info *gl_info, enum wined3d_bl static void state_blendop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GLenum blend_equation_alpha = GL_FUNC_ADD_EXT; GLenum blend_equation = GL_FUNC_ADD_EXT; @@ -529,7 +529,7 @@ static void gl_blend_from_d3d(GLenum *src_blend, GLenum *dst_blend, static void state_blend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; const struct wined3d_format *rt_format; GLenum src_blend, dst_blend; unsigned int rt_fmt_flags; @@ -571,7 +571,7 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st GLenum src_blend_alpha, dst_blend_alpha; /* Separate alpha blending requires GL_EXT_blend_function_separate, so make sure it is around */ - if (!context->gl_info->supported[EXT_BLEND_FUNC_SEPARATE]) + if (!gl_info->supported[EXT_BLEND_FUNC_SEPARATE]) { WARN("Unsupported in local OpenGL implementation: glBlendFuncSeparate.\n"); return; @@ -604,8 +604,8 @@ static void state_blend_factor_w(struct wined3d_context *context, const struct w static void state_blend_factor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; const struct wined3d_color *factor = &state->blend_factor; - const struct wined3d_gl_info *gl_info = context->gl_info; TRACE("Setting blend factor to %s.\n", debug_color(factor)); @@ -615,7 +615,7 @@ static void state_blend_factor(struct wined3d_context *context, const struct win static void state_blend_object(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; BOOL alpha_to_coverage = FALSE; if (!gl_info->supported[ARB_MULTISAMPLE]) @@ -637,7 +637,7 @@ static void state_blend_object(struct wined3d_context *context, const struct win void state_alpha_test(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; int glParm = 0; float ref; BOOL enable_ckey = FALSE; @@ -727,7 +727,8 @@ void state_clipping(struct wined3d_context *context, const struct wined3d_state static void state_specularenable(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; + /* Originally this used glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR) * and (GL_LIGHT_MODEL_COLOR_CONTROL,GL_SINGLE_COLOR) to swap between enabled/disabled * specular color. This is wrong: @@ -829,7 +830,7 @@ static void state_specularenable(struct wined3d_context *context, const struct w static void state_texfactor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_color color; unsigned int i; @@ -852,7 +853,7 @@ static void state_texfactor(struct wined3d_context *context, const struct wined3 static void renderstate_stencil_twosided(struct wined3d_context *context, GLint face, GLint func, GLint ref, GLuint mask, GLint stencilFail, GLint depthFail, GLint stencilPass) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; gl_info->gl_ops.gl.p_glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT); checkGLcall("glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)"); @@ -895,7 +896,7 @@ static GLenum gl_stencil_op(enum wined3d_stencil_op op) static void state_stencil(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; DWORD onesided_enable; DWORD twosided_enable; GLint func; @@ -1007,7 +1008,7 @@ static void state_stencil(struct wined3d_context *context, const struct wined3d_ static void state_stencilwrite2s_ext(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD mask = state->fb->depth_stencil ? state->render_states[WINED3D_RS_STENCILWRITEMASK] : 0; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK)); checkGLcall("glActiveStencilFaceEXT(GL_BACK)"); @@ -1021,7 +1022,7 @@ static void state_stencilwrite2s_ext(struct wined3d_context *context, const stru static void state_stencilwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { DWORD mask = state->fb->depth_stencil ? state->render_states[WINED3D_RS_STENCILWRITEMASK] : 0; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; gl_info->gl_ops.gl.p_glStencilMask(mask); checkGLcall("glStencilMask"); @@ -1029,7 +1030,7 @@ static void state_stencilwrite(struct wined3d_context *context, const struct win static void state_fog_vertexpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id); @@ -1101,7 +1102,7 @@ static void state_fog_vertexpart(struct wined3d_context *context, const struct w void state_fogstartend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; float fogstart, fogend; get_fog_start_end(context, state, &fogstart, &fogend); @@ -1117,7 +1118,7 @@ void state_fogstartend(struct wined3d_context *context, const struct wined3d_sta void state_fog_fragpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; enum fogsource new_source; DWORD fogstart = state->render_states[WINED3D_RS_FOGSTART]; DWORD fogend = state->render_states[WINED3D_RS_FOGEND]; @@ -1275,7 +1276,7 @@ void state_fog_fragpart(struct wined3d_context *context, const struct wined3d_st void state_fogcolor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; struct wined3d_color color; wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_FOGCOLOR]); @@ -1285,7 +1286,7 @@ void state_fogcolor(struct wined3d_context *context, const struct wined3d_state void state_fogdensity(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; union { DWORD d; float f; @@ -1299,7 +1300,7 @@ void state_fogdensity(struct wined3d_context *context, const struct wined3d_stat static void state_colormat(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum Parm = 0; /* Depends on the decoded vertex declaration to read the existence of @@ -1412,7 +1413,7 @@ static void state_colormat(struct wined3d_context *context, const struct wined3d static void state_linepattern(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; union { DWORD d; @@ -1446,7 +1447,7 @@ static void state_linepattern_w(struct wined3d_context *context, const struct wi static void state_normalize(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (isStateDirty(context, STATE_VDECL)) return; @@ -1482,7 +1483,7 @@ static void state_psizemin_w(struct wined3d_context *context, const struct wined static void state_psizemin_ext(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; float min, max; get_pointsize_minmax(context, state, &min, &max); @@ -1495,7 +1496,7 @@ static void state_psizemin_ext(struct wined3d_context *context, const struct win static void state_psizemin_arb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; float min, max; get_pointsize_minmax(context, state, &min, &max); @@ -1508,7 +1509,7 @@ static void state_psizemin_arb(struct wined3d_context *context, const struct win static void state_pscale(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; float att[3]; float pointsize; @@ -1540,11 +1541,11 @@ static void state_debug_monitor(struct wined3d_context *context, const struct wi static void state_colorwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; DWORD mask0 = state->render_states[WINED3D_RS_COLORWRITEENABLE]; DWORD mask1 = state->render_states[WINED3D_RS_COLORWRITEENABLE1]; DWORD mask2 = state->render_states[WINED3D_RS_COLORWRITEENABLE2]; DWORD mask3 = state->render_states[WINED3D_RS_COLORWRITEENABLE3]; - const struct wined3d_gl_info *gl_info = context->gl_info; TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n", mask0 & WINED3DCOLORWRITEENABLE_RED ? 1 : 0, @@ -1578,27 +1579,27 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW static void state_colorwrite0(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - set_color_mask(context->gl_info, 0, state->render_states[WINED3D_RS_COLORWRITEENABLE]); + set_color_mask(wined3d_context_gl(context)->gl_info, 0, state->render_states[WINED3D_RS_COLORWRITEENABLE]); } static void state_colorwrite1(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - set_color_mask(context->gl_info, 1, state->render_states[WINED3D_RS_COLORWRITEENABLE1]); + set_color_mask(wined3d_context_gl(context)->gl_info, 1, state->render_states[WINED3D_RS_COLORWRITEENABLE]); } static void state_colorwrite2(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - set_color_mask(context->gl_info, 2, state->render_states[WINED3D_RS_COLORWRITEENABLE2]); + set_color_mask(wined3d_context_gl(context)->gl_info, 2, state->render_states[WINED3D_RS_COLORWRITEENABLE]); } static void state_colorwrite3(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - set_color_mask(context->gl_info, 3, state->render_states[WINED3D_RS_COLORWRITEENABLE3]); + set_color_mask(wined3d_context_gl(context)->gl_info, 3, state->render_states[WINED3D_RS_COLORWRITEENABLE]); } static void state_localviewer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_LOCALVIEWER]) { @@ -1645,7 +1646,7 @@ void state_pointsprite_w(struct wined3d_context *context, const struct wined3d_s void state_pointsprite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_POINTSPRITEENABLE]) { @@ -1691,7 +1692,7 @@ static void state_msaa_w(struct wined3d_context *context, const struct wined3d_s static void state_msaa(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_MULTISAMPLEANTIALIAS]) { @@ -1707,7 +1708,7 @@ static void state_msaa(struct wined3d_context *context, const struct wined3d_sta static void state_line_antialias(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_EDGEANTIALIAS] || state->render_states[WINED3D_RS_ANTIALIASEDLINEENABLE]) @@ -1724,7 +1725,7 @@ static void state_line_antialias(struct wined3d_context *context, const struct w static void state_scissor(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_SCISSORTESTENABLE]) { @@ -1755,7 +1756,7 @@ static void state_scissor(struct wined3d_context *context, const struct wined3d_ * doesn't need to be scaled to account for GL vs D3D differences. */ static void state_depthbias(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; if (state->render_states[WINED3D_RS_SLOPESCALEDEPTHBIAS] || state->render_states[WINED3D_RS_DEPTHBIAS]) @@ -1892,13 +1893,13 @@ static void state_tessellation(struct wined3d_context *context, const struct win static void state_nvdb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - union { - DWORD d; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; + union + { + uint32_t d; float f; } zmin, zmax; - const struct wined3d_gl_info *gl_info = context->gl_info; - if (state->render_states[WINED3D_RS_ADAPTIVETESS_X] == WINED3DFMT_NVDB) { zmin.d = state->render_states[WINED3D_RS_ADAPTIVETESS_Z]; @@ -3118,7 +3119,7 @@ static void tex_colorop(struct wined3d_context *context, const struct wined3d_st struct wined3d_context_gl *context_gl = wined3d_context_gl(context); BOOL tex_used = context->fixed_function_usage_map & (1u << stage); unsigned int mapped_stage = context_gl->tex_unit_map[stage]; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; TRACE("Setting color op for stage %d\n", stage); @@ -3179,8 +3180,8 @@ void tex_alphaop(struct wined3d_context *context, const struct wined3d_state *st unsigned int stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); BOOL tex_used = context->fixed_function_usage_map & (1u << stage); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int mapped_stage = context_gl->tex_unit_map[stage]; - const struct wined3d_gl_info *gl_info = context->gl_info; DWORD op, arg1, arg2, arg0; TRACE("Setting alpha op for stage %d\n", stage); @@ -3278,8 +3279,8 @@ static void transform_texture(struct wined3d_context *context, const struct wine { unsigned int tex = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int mapped_stage = context_gl->tex_unit_map[tex]; - const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_matrix mat; /* Ignore this when a vertex shader is used, or if the streams aren't sorted out yet */ @@ -3306,8 +3307,8 @@ static void tex_coordindex(struct wined3d_context *context, const struct wined3d { unsigned int stage = (state_id - STATE_TEXTURESTAGE(0, 0)) / (WINED3D_HIGHEST_TEXTURE_STATE + 1); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int mapped_stage = context_gl->tex_unit_map[stage]; - const struct wined3d_gl_info *gl_info = context->gl_info; static const GLfloat s_plane[] = { 1.0f, 0.0f, 0.0f, 0.0f }; static const GLfloat t_plane[] = { 0.0f, 1.0f, 0.0f, 0.0f }; @@ -3578,7 +3579,7 @@ static void wined3d_sampler_desc_from_sampler_states(struct wined3d_sampler_desc if (texture_gl->t.flags & WINED3D_TEXTURE_COND_NP2) { desc->mip_filter = WINED3D_TEXF_NONE; - if (context_gl->c.gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]) + if (context_gl->gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]) desc->min_filter = WINED3D_TEXF_POINT; } } @@ -3591,7 +3592,7 @@ static void sampler(struct wined3d_context *context, const struct wined3d_state struct wined3d_context_gl *context_gl = wined3d_context_gl(context); unsigned int sampler_idx = state_id - STATE_SAMPLER(0); unsigned int mapped_stage = context_gl->tex_unit_map[sampler_idx]; - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; TRACE("Sampler %u.\n", sampler_idx); @@ -3713,7 +3714,7 @@ static void shader_bumpenv(struct wined3d_context *context, const struct wined3d static void transform_world(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; struct wined3d_matrix mat; /* This function is called by transform_view below if the view matrix was changed too @@ -3734,7 +3735,7 @@ static void transform_world(struct wined3d_context *context, const struct wined3 void clipplane(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; UINT index = state_id - STATE_CLIPPLANE(0); GLdouble plane[4]; @@ -3786,7 +3787,7 @@ static void state_vertexblend_w(struct wined3d_context *context, const struct wi static void transform_view(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; const struct wined3d_light_info *light = NULL; unsigned int k; @@ -3838,7 +3839,7 @@ static void transform_view(struct wined3d_context *context, const struct wined3d static void transform_projection(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; struct wined3d_matrix projection; gl_info->gl_ops.gl.p_glMatrixMode(GL_PROJECTION); @@ -3866,7 +3867,7 @@ static void vdecl_miscpart(struct wined3d_context *context, const struct wined3d static void vertexdeclaration(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; BOOL useVertexShaderFunction = use_vs(state); BOOL updateFog = FALSE; BOOL transformed; @@ -4034,7 +4035,7 @@ static void get_viewports(struct wined3d_context *context, const struct wined3d_ static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; struct wined3d_viewport vp[WINED3D_MAX_VIEWPORTS]; if (gl_info->supported[ARB_VIEWPORT_ARRAY]) @@ -4081,10 +4082,10 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine static void viewport_miscpart_cc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; /* See get_projection_matrix() in utils.c for a discussion about those values. */ float pixel_center_offset = context->d3d_info->wined3d_creation_flags & WINED3D_PIXEL_CENTER_INTEGER ? 63.0f / 128.0f : -1.0f / 128.0f; - const struct wined3d_gl_info *gl_info = context->gl_info; struct wined3d_viewport vp[WINED3D_MAX_VIEWPORTS]; GLdouble depth_ranges[2 * WINED3D_MAX_VIEWPORTS]; GLfloat viewports[4 * WINED3D_MAX_VIEWPORTS]; @@ -4134,7 +4135,7 @@ static void viewport_vertexpart(struct wined3d_context *context, const struct wi static void light(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; UINT Index = state_id - STATE_ACTIVELIGHT(0); const struct wined3d_light_info *lightInfo = state->light_state.lights[Index]; @@ -4237,7 +4238,7 @@ static void light(struct wined3d_context *context, const struct wined3d_state *s static void scissorrect(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; unsigned int height = 0; const RECT *r; @@ -4289,8 +4290,8 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st static void indexbuffer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; const struct wined3d_stream_info *stream_info = &context->stream_info; - const struct wined3d_gl_info *gl_info = context->gl_info; if (!state->index_buffer || !stream_info->all_vbo) { @@ -4321,7 +4322,7 @@ static void depth_clip(const struct wined3d_rasterizer_state *r, const struct wi static void rasterizer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GLenum mode; mode = state->rasterizer_state && state->rasterizer_state->desc.front_ccw ? GL_CCW : GL_CW; @@ -4337,7 +4338,7 @@ static void rasterizer(struct wined3d_context *context, const struct wined3d_sta static void rasterizer_cc(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GLenum mode; mode = state->rasterizer_state && state->rasterizer_state->desc.front_ccw ? GL_CCW : GL_CW; @@ -4362,7 +4363,7 @@ static void psorigin_w(struct wined3d_context *context, const struct wined3d_sta static void psorigin(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; GLint origin = context->render_offscreen ? GL_LOWER_LEFT : GL_UPPER_LEFT; GL_EXTCALL(glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, origin)); @@ -4371,7 +4372,7 @@ static void psorigin(struct wined3d_context *context, const struct wined3d_state void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id); @@ -4383,7 +4384,7 @@ void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state static void state_cb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info; enum wined3d_shader_type shader_type; struct wined3d_buffer *buffer; unsigned int i, base, count; @@ -4449,7 +4450,7 @@ static void state_uav_warn(struct wined3d_context *context, const struct wined3d static void state_so(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_buffer *buffer; unsigned int offset, size, i; diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 951403fe8a4..99ee1a4addf 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -63,7 +63,7 @@ static void texture2d_depth_blt_fbo(const struct wined3d_device *device, struct DWORD dst_location, const RECT *dst_rect) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; DWORD src_mask, dst_mask; GLbitfield gl_mask; @@ -121,7 +121,7 @@ static void texture2d_depth_blt_fbo(const struct wined3d_device *device, struct } if (gl_mask & GL_STENCIL_BUFFER_BIT) { - if (context->gl_info->supported[EXT_STENCIL_TWO_SIDE]) + if (gl_info->supported[EXT_STENCIL_TWO_SIDE]) { gl_info->gl_ops.gl.p_glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT); context_invalidate_state(context, STATE_RENDER(WINED3D_RS_TWOSIDEDSTENCILMODE)); @@ -218,7 +218,7 @@ void texture2d_blt_fbo(struct wined3d_device *device, struct wined3d_context *co return; } - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (src_location == WINED3D_LOCATION_DRAWABLE) { @@ -721,7 +721,7 @@ void texture2d_read_from_framebuffer(struct wined3d_texture *texture, unsigned i else restore_texture = NULL; context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (src_location != resource->draw_binding) { @@ -851,7 +851,7 @@ void texture2d_load_fb_texture(struct wined3d_texture_gl *texture_gl, restore_texture = NULL; context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; device_invalidate_state(device, STATE_FRAMEBUFFER); wined3d_texture_gl_prepare_texture(texture_gl, context_gl, srgb); @@ -904,7 +904,7 @@ static void fb_copy_to_texture_direct(struct wined3d_texture_gl *dst_texture, un context = context_acquire(device, &src_texture->t, src_sub_resource_idx); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; wined3d_context_gl_apply_blit_state(context_gl, device); wined3d_texture_load(&dst_texture->t, context, FALSE); @@ -1024,7 +1024,7 @@ static void fb_copy_to_texture_hwstretch(struct wined3d_texture_gl *dst_texture, /* Activate the Proper context for reading from the source surface, set it up for blitting */ context = context_acquire(device, &src_texture->t, src_sub_resource_idx); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; wined3d_context_gl_apply_ffp_blit_state(context_gl, device); wined3d_texture_load(&dst_texture->t, context, FALSE); @@ -1445,6 +1445,7 @@ static DWORD fbo_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_blit unsigned int dst_sub_resource_idx, DWORD dst_location, const RECT *dst_rect, const struct wined3d_color_key *colour_key, enum wined3d_texture_filter_type filter) { + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct wined3d_resource *src_resource, *dst_resource; enum wined3d_blit_op blit_op = op; struct wined3d_device *device; @@ -1469,7 +1470,7 @@ static DWORD fbo_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_blit blit_op = WINED3D_BLIT_OP_COLOR_BLIT; } - if (!fbo_blitter_supported(blit_op, context->gl_info, + if (!fbo_blitter_supported(blit_op, context_gl->gl_info, src_resource, src_location, dst_resource, dst_location)) { if (!(next = blitter->next)) @@ -1565,7 +1566,8 @@ static DWORD raw_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_blit { struct wined3d_texture_gl *src_texture_gl = wined3d_texture_gl(src_texture); struct wined3d_texture_gl *dst_texture_gl = wined3d_texture_gl(dst_texture); - const struct wined3d_gl_info *gl_info = context->gl_info; + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int src_level, src_layer, dst_level, dst_layer; struct wined3d_blitter *next; GLuint src_name, dst_name; @@ -1710,7 +1712,7 @@ static BOOL ffp_blit_supported(enum wined3d_blit_op blit_op, const struct wined3 } case WINED3D_BLIT_OP_COLOR_BLIT: case WINED3D_BLIT_OP_COLOR_BLIT_ALPHATEST: - if (!context->gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) + if (!wined3d_context_gl_const(context)->gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) return FALSE; if (TRACE_ON(d3d)) @@ -1873,7 +1875,7 @@ static DWORD ffp_blitter_blit(struct wined3d_blitter *blitter, enum wined3d_blit { struct wined3d_texture_gl *src_texture_gl = wined3d_texture_gl(src_texture); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_resource *src_resource, *dst_resource; struct wined3d_texture *staging_texture = NULL; struct wined3d_color_key old_blt_key; diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 63fd7a1a2cc..43907755b62 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -369,7 +369,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain, static void swapchain_gl_set_swap_interval(struct wined3d_swapchain *swapchain, struct wined3d_context_gl *context_gl, unsigned int swap_interval) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; swap_interval = swap_interval <= 4 ? swap_interval : 1; if (swapchain->swap_interval == swap_interval) @@ -456,7 +456,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, return; } - gl_info = context->gl_info; + gl_info = context_gl->gl_info; swapchain_gl_set_swap_interval(swapchain, context_gl, swap_interval); diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 2717057ca37..64245532d9f 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -357,7 +357,7 @@ static BOOL wined3d_texture_copy_sysmem_location(struct wined3d_texture *texture if (dst.buffer_object) { context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, dst.buffer_object)); GL_EXTCALL(glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, size, src.addr)); GL_EXTCALL(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0)); @@ -369,7 +369,7 @@ static BOOL wined3d_texture_copy_sysmem_location(struct wined3d_texture *texture if (src.buffer_object) { context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, src.buffer_object)); GL_EXTCALL(glGetBufferSubData(GL_PIXEL_PACK_BUFFER, 0, size, dst.addr)); GL_EXTCALL(glBindBuffer(GL_PIXEL_PACK_BUFFER, 0)); @@ -505,7 +505,7 @@ static void wined3d_texture_update_map_binding(struct wined3d_texture *texture) && !wined3d_texture_load_location(texture, i, context, map_binding)) ERR("Failed to load location %s.\n", wined3d_debug_location(map_binding)); if (texture->resource.map_binding == WINED3D_LOCATION_BUFFER) - wined3d_texture_remove_buffer_object(texture, i, context->gl_info); + wined3d_texture_remove_buffer_object(texture, i, wined3d_context_gl(context)->gl_info); } if (context) @@ -643,14 +643,14 @@ static void wined3d_texture_gl_unload_texture(struct wined3d_texture_gl *texture || texture_gl->rb_multisample || texture_gl->rb_resolved) { context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; } if (texture_gl->texture_rgb.name) - gltexture_delete(device, context->gl_info, &texture_gl->texture_rgb); + gltexture_delete(device, gl_info, &texture_gl->texture_rgb); if (texture_gl->texture_srgb.name) - gltexture_delete(device, context->gl_info, &texture_gl->texture_srgb); + gltexture_delete(device, gl_info, &texture_gl->texture_srgb); if (texture_gl->rb_multisample) { @@ -842,7 +842,7 @@ static void wined3d_texture_cleanup(struct wined3d_texture *texture) if (!context) { context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; } GL_EXTCALL(glDeleteBuffers(1, &buffer_object)); @@ -892,7 +892,7 @@ static void wined3d_texture_gl_cleanup(struct wined3d_texture_gl *texture_gl) if (!list_empty(&texture_gl->renderbuffers)) { context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &texture_gl->renderbuffers, struct wined3d_renderbuffer_entry, entry) { @@ -938,7 +938,7 @@ void wined3d_texture_gl_bind(struct wined3d_texture_gl *texture_gl, struct wined3d_context_gl *context_gl, BOOL srgb) { const struct wined3d_format *format = texture_gl->t.resource.format; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct color_fixup_desc fixup = format->color_fixup; struct gl_texture *gl_tex; GLenum target; @@ -1088,7 +1088,7 @@ void wined3d_texture_gl_bind_and_dirtify(struct wined3d_texture_gl *texture_gl, void wined3d_texture_gl_apply_sampler_desc(struct wined3d_texture_gl *texture_gl, const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; GLenum target = texture_gl->target; struct gl_texture *gl_tex; DWORD state; @@ -1455,7 +1455,7 @@ HRESULT CDECL wined3d_texture_set_color_key(struct wined3d_texture *texture, void wined3d_texture_gl_set_compatible_renderbuffer(struct wined3d_texture_gl *texture_gl, struct wined3d_context_gl *context_gl, unsigned int level, const struct wined3d_rendertarget_info *rt) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_renderbuffer_entry *entry; unsigned int src_width, src_height; unsigned int width, height; @@ -1720,7 +1720,7 @@ void wined3d_texture_gl_prepare_texture(struct wined3d_texture_gl *texture_gl, { DWORD alloc_flag = srgb ? WINED3D_TEXTURE_SRGB_ALLOCATED : WINED3D_TEXTURE_RGB_ALLOCATED; const struct wined3d_d3d_info *d3d_info = context_gl->c.d3d_info; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_resource *resource = &texture_gl->t.resource; const struct wined3d_device *device = resource->device; const struct wined3d_format *format = resource->format; @@ -1842,7 +1842,7 @@ BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned return TRUE; case WINED3D_LOCATION_BUFFER: - wined3d_texture_prepare_buffer_object(texture, sub_resource_idx, context->gl_info); + wined3d_texture_prepare_buffer_object(texture, sub_resource_idx, context_gl->gl_info); return TRUE; case WINED3D_LOCATION_TEXTURE_RGB: @@ -1859,11 +1859,11 @@ BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned return TRUE; case WINED3D_LOCATION_RB_MULTISAMPLE: - wined3d_texture_gl_prepare_rb(texture_gl, context->gl_info, TRUE); + wined3d_texture_gl_prepare_rb(texture_gl, context_gl->gl_info, TRUE); return TRUE; case WINED3D_LOCATION_RB_RESOLVED: - wined3d_texture_gl_prepare_rb(texture_gl, context->gl_info, FALSE); + wined3d_texture_gl_prepare_rb(texture_gl, context_gl->gl_info, FALSE); return TRUE; default: @@ -1916,7 +1916,7 @@ void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int s unsigned int dst_x, unsigned int dst_y, unsigned int dst_z, BOOL srgb) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int update_w = src_box->right - src_box->left; unsigned int update_h = src_box->bottom - src_box->top; unsigned int update_d = src_box->back - src_box->front; @@ -2148,7 +2148,7 @@ void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int s static void wined3d_texture_gl_download_data_slow_path(struct wined3d_texture_gl *texture_gl, unsigned int sub_resource_idx, struct wined3d_context_gl *context_gl, const struct wined3d_bo_address *data) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture_sub_resource *sub_resource; unsigned int dst_row_pitch, dst_slice_pitch; unsigned int src_row_pitch, src_slice_pitch; @@ -2381,7 +2381,7 @@ static void wined3d_texture_gl_download_data(struct wined3d_context *context, { struct wined3d_texture_gl *src_texture_gl = wined3d_texture_gl(src_texture); struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; unsigned int src_level, src_width, src_height, src_depth; unsigned int src_row_pitch, src_slice_pitch; const struct wined3d_format_gl *format_gl; @@ -2622,8 +2622,8 @@ static BOOL wined3d_texture_gl_load_texture(struct wined3d_texture_gl *texture_g unsigned int sub_resource_idx, struct wined3d_context_gl *context_gl, BOOL srgb) { unsigned int width, height, level, src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch; - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; struct wined3d_device *device = texture_gl->t.resource.device; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_color_key_conversion *conversion; struct wined3d_texture_sub_resource *sub_resource; const struct wined3d_format *format; @@ -2880,7 +2880,7 @@ static void wined3d_texture_gl_unload(struct wined3d_resource *resource) TRACE("texture_gl %p.\n", texture_gl); context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; for (i = 0; i < sub_count; ++i) { @@ -2905,7 +2905,7 @@ static void wined3d_texture_gl_unload(struct wined3d_resource *resource) } if (sub_resource->buffer_object) - wined3d_texture_remove_buffer_object(&texture_gl->t, i, context->gl_info); + wined3d_texture_remove_buffer_object(&texture_gl->t, i, gl_info); } LIST_FOR_EACH_ENTRY_SAFE(entry, entry2, &texture_gl->renderbuffers, struct wined3d_renderbuffer_entry, entry) diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 0df197b86c3..b9cad2a56b4 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -6340,20 +6340,22 @@ void texture_activate_dimensions(struct wined3d_texture *texture, const struct w /* Context activation is done by the caller (state handler). */ void sampler_texdim(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) { + struct wined3d_context_gl *context_gl = wined3d_context_gl(context); unsigned int sampler = state_id - STATE_SAMPLER(0); - unsigned int mapped_stage = wined3d_context_gl(context)->tex_unit_map[sampler]; + unsigned int mapped_stage; /* No need to enable / disable anything here for unused samplers. The * tex_colorop handler takes care. Also no action is needed with pixel * shaders, or if tex_colorop will take care of this business. */ - if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context->gl_info->limits.textures) + mapped_stage = context_gl->tex_unit_map[sampler]; + if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context_gl->gl_info->limits.textures) return; if (sampler >= context->lowest_disabled_stage) return; if (isStateDirty(context, STATE_TEXTURESTAGE(sampler, WINED3D_TSS_COLOR_OP))) return; - texture_activate_dimensions(state->textures[sampler], context->gl_info); + texture_activate_dimensions(state->textures[sampler], context_gl->gl_info); } int wined3d_ffp_frag_program_key_compare(const void *key, const struct wine_rb_entry *entry) diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index d26ff6ea618..5ab7965d0f4 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -181,7 +181,7 @@ static void create_texture_view(struct wined3d_gl_view *view, GLenum view_target context = context_acquire(texture_gl->t.resource.device, NULL, 0); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; if (!gl_info->supported[ARB_TEXTURE_VIEW]) { @@ -249,7 +249,7 @@ static void create_buffer_texture(struct wined3d_gl_view *view, struct wined3d_c unsigned int offset, unsigned int size) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_format_gl *view_format_gl; if (!gl_info->supported[ARB_TEXTURE_BUFFER_OBJECT]) @@ -356,7 +356,7 @@ static void wined3d_rendertarget_view_gl_destroy_object(void *object) struct wined3d_context *context; context = context_acquire(device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; context_gl_resource_released(device, view_gl->gl_view.name, FALSE); gl_info->gl_ops.gl.p_glDeleteTextures(1, &view_gl->gl_view.name); checkGLcall("glDeleteTextures"); @@ -685,7 +685,7 @@ static void wined3d_shader_resource_view_gl_destroy_object(void *object) struct wined3d_context *context; context = context_acquire(view_gl->v.resource->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; gl_info->gl_ops.gl.p_glDeleteTextures(1, &view_gl->gl_view.name); checkGLcall("glDeleteTextures"); context_release(context); @@ -830,7 +830,7 @@ HRESULT CDECL wined3d_shader_resource_view_create(const struct wined3d_view_desc void wined3d_shader_resource_view_gl_bind(struct wined3d_shader_resource_view_gl *view_gl, unsigned int unit, struct wined3d_sampler *sampler, struct wined3d_context_gl *context_gl) { - const struct wined3d_gl_info *gl_info = context_gl->c.gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_texture_gl *texture_gl; wined3d_context_gl_active_texture(context_gl, gl_info, unit); @@ -887,7 +887,7 @@ void shader_resource_view_generate_mipmaps(struct wined3d_shader_resource_view * context = context_acquire(view_gl->v.resource->device, NULL, 0); context_gl = wined3d_context_gl(context); - gl_info = context->gl_info; + gl_info = context_gl->gl_info; layer_count = view_gl->v.desc.u.texture.layer_count; level_count = view_gl->v.desc.u.texture.level_count; base_level = view_gl->v.desc.u.texture.level_idx; @@ -983,7 +983,7 @@ static void wined3d_unordered_access_view_gl_destroy_object(void *object) struct wined3d_context *context; context = context_acquire(view_gl->v.resource->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; if (view_gl->gl_view.name) gl_info->gl_ops.gl.p_glDeleteTextures(1, &view_gl->gl_view.name); if (view_gl->counter_bo) @@ -1034,7 +1034,7 @@ void wined3d_unordered_access_view_clear_uint(struct wined3d_unordered_access_vi const struct wined3d_uvec4 *clear_value, struct wined3d_context *context) { struct wined3d_context_gl *context_gl = wined3d_context_gl(context); - const struct wined3d_gl_info *gl_info = context->gl_info; + const struct wined3d_gl_info *gl_info = context_gl->gl_info; const struct wined3d_format_gl *format; struct wined3d_buffer_gl *buffer_gl; struct wined3d_resource *resource; @@ -1084,7 +1084,7 @@ void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_v return; context = context_acquire(view_gl->v.resource->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; GL_EXTCALL(glBindBuffer(GL_ATOMIC_COUNTER_BUFFER, view_gl->counter_bo)); GL_EXTCALL(glBufferSubData(GL_ATOMIC_COUNTER_BUFFER, 0, sizeof(value), &value)); checkGLcall("set atomic counter"); @@ -1129,7 +1129,7 @@ static void wined3d_unordered_access_view_gl_cs_init(void *object) struct wined3d_context *context; context = context_acquire(resource->device, NULL, 0); - gl_info = context->gl_info; + gl_info = wined3d_context_gl(context)->gl_info; create_buffer_view(&view_gl->gl_view, context, desc, buffer, view_gl->v.format); if (desc->flags & (WINED3D_VIEW_BUFFER_COUNTER | WINED3D_VIEW_BUFFER_APPEND)) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 3c38b27a319..53c8cfd6d63 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1889,7 +1889,6 @@ struct wined3d_fb_state struct wined3d_context { - const struct wined3d_gl_info *gl_info; const struct wined3d_d3d_info *d3d_info; const struct wined3d_state_entry *state_table; /* State dirtification @@ -1976,6 +1975,8 @@ struct wined3d_context_gl { struct wined3d_context c; + const struct wined3d_gl_info *gl_info; + DWORD tid; /* Thread ID which owns this context at the moment. */ uint32_t dc_is_private : 1;