Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
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;
--
2.11.0