Instead of duplicating multiple members.
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 14 ++--- dlls/wined3d/arb_program_shader.c | 42 ++++++++------- dlls/wined3d/ati_fragment_shader.c | 18 +++---- dlls/wined3d/context_gl.c | 14 ++--- dlls/wined3d/glsl_shader.c | 78 ++++++++++++++-------------- dlls/wined3d/nvidia_texture_shader.c | 2 +- dlls/wined3d/shader.c | 6 +-- dlls/wined3d/state.c | 8 +-- dlls/wined3d/stateblock.c | 20 +++---- dlls/wined3d/utils.c | 23 ++++---- dlls/wined3d/wined3d_private.h | 26 +++++----- include/wine/wined3d.h | 4 +- 12 files changed, 129 insertions(+), 126 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 776dcfb406c..a42c41b3978 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -2954,13 +2954,13 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) { gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max); - gl_info->limits.textures = min(WINED3D_MAX_TEXTURES, gl_max); + gl_info->limits.textures = min(WINED3D_MAX_FFP_TEXTURES, gl_max); TRACE("Max textures: %d.\n", gl_info->limits.textures);
if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) { gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &gl_max); - gl_info->limits.texture_coords = min(WINED3D_MAX_TEXTURES, gl_max); + gl_info->limits.texture_coords = min(WINED3D_MAX_FFP_TEXTURES, gl_max); } else { @@ -3000,7 +3000,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) * use any samplers. If fixed-function fragment processing is used * we have to make sure that all vertex sampler setups are valid * together with all possible fixed-function fragment processing - * setups. This is true if vsamplers + WINED3D_MAX_TEXTURES <= max_samplers. + * setups. This is true if vsamplers + WINED3D_MAX_FFP_TEXTURES <= max_samplers. * This is true on all Direct3D 9 cards that support vertex * texture fetch (GeForce 6 and GeForce 7 cards). Direct3D 9 * Radeon cards do not support vertex texture fetch. Direct3D 10 @@ -3012,13 +3012,13 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) * true. If not, write a warning and reduce the number of vertex * samplers or probably disable vertex texture fetch. */ if (vertex_sampler_count && gl_info->limits.combined_samplers < 12 - && WINED3D_MAX_TEXTURES + vertex_sampler_count > gl_info->limits.combined_samplers) + && WINED3D_MAX_FFP_TEXTURES + vertex_sampler_count > gl_info->limits.combined_samplers) { FIXME("OpenGL implementation supports %u vertex samplers and %u total samplers.\n", vertex_sampler_count, gl_info->limits.combined_samplers); - FIXME("Expected vertex samplers + WINED3D_MAX_TEXTURES(=8) > combined_samplers.\n"); - if (gl_info->limits.combined_samplers > WINED3D_MAX_TEXTURES) - vertex_sampler_count = gl_info->limits.combined_samplers - WINED3D_MAX_TEXTURES; + FIXME("Expected vertex samplers + WINED3D_MAX_FFP_TEXTURES(=8) > combined_samplers.\n"); + if (gl_info->limits.combined_samplers > WINED3D_MAX_FFP_TEXTURES) + vertex_sampler_count = gl_info->limits.combined_samplers - WINED3D_MAX_FFP_TEXTURES; else vertex_sampler_count = 0; gl_info->limits.samplers[WINED3D_SHADER_TYPE_VERTEX] = vertex_sampler_count; diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index a488b4152de..f0e1b2bdf99 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -159,8 +159,8 @@ struct arb_ps_compiled_shader { struct arb_ps_compile_args args; struct arb_ps_np2fixup_info np2fixup_info; - struct stb_const_desc bumpenvmatconst[WINED3D_MAX_TEXTURES]; - struct stb_const_desc luminanceconst[WINED3D_MAX_TEXTURES]; + struct stb_const_desc bumpenvmatconst[WINED3D_MAX_FFP_TEXTURES]; + struct stb_const_desc luminanceconst[WINED3D_MAX_FFP_TEXTURES]; UINT int_consts[WINED3D_MAX_CONSTS_I]; GLuint prgId; UINT ycorrection; @@ -2013,7 +2013,7 @@ static void pshader_hw_tex(const struct wined3d_shader_instruction *ins) if (shader_version < WINED3D_SHADER_VERSION(1,4)) { DWORD flags = 0; - if (reg_sampler_code < WINED3D_MAX_TEXTURES) + if (reg_sampler_code < WINED3D_MAX_FFP_TEXTURES) flags = priv->cur_ps_args->super.tex_transform >> reg_sampler_code * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; if (flags & WINED3D_PSARGS_PROJECTED) { @@ -2086,7 +2086,7 @@ static void pshader_hw_texreg2ar(const struct wined3d_shader_instruction *ins) /* Move .x first in case src_str is "TA" */ shader_addline(buffer, "MOV TA.y, %s.x;\n", src_str); shader_addline(buffer, "MOV TA.x, %s.w;\n", src_str); - if (reg1 < WINED3D_MAX_TEXTURES) + if (reg1 < WINED3D_MAX_FFP_TEXTURES) { struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; flags = priv->cur_ps_args->super.tex_transform >> reg1 * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; @@ -2197,7 +2197,7 @@ static void pshader_hw_texm3x2pad(const struct wined3d_shader_instruction *ins) static void pshader_hw_texm3x2tex(const struct wined3d_shader_instruction *ins) { struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; - DWORD flags; + unsigned int flags = 0; unsigned int reg = ins->dst[0].reg.idx[0].offset; struct wined3d_string_buffer *buffer = ins->ctx->buffer; char dst_str[50]; @@ -2211,7 +2211,8 @@ static void pshader_hw_texm3x2tex(const struct wined3d_shader_instruction *ins) shader_arb_get_dst_param(ins, &ins->dst[0], dst_str); shader_arb_get_src_param(ins, &ins->src[0], 0, src0_name); shader_addline(buffer, "DP3 %s.y, fragment.texcoord[%u], %s;\n", dst_reg, reg, src0_name); - flags = reg < WINED3D_MAX_TEXTURES ? priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT : 0; + if (reg < WINED3D_MAX_FFP_TEXTURES) + flags = priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; shader_hw_sample(ins, reg, dst_str, dst_reg, flags & WINED3D_PSARGS_PROJECTED ? TEX_PROJ : 0, NULL, NULL); }
@@ -2241,7 +2242,7 @@ static void pshader_hw_texm3x3tex(const struct wined3d_shader_instruction *ins) { struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; struct wined3d_shader_tex_mx *tex_mx = ins->ctx->tex_mx; - DWORD flags; + unsigned int flags = 0; unsigned int reg = ins->dst[0].reg.idx[0].offset; struct wined3d_string_buffer *buffer = ins->ctx->buffer; char dst_str[50]; @@ -2254,7 +2255,8 @@ static void pshader_hw_texm3x3tex(const struct wined3d_shader_instruction *ins)
/* Sample the texture using the calculated coordinates */ shader_arb_get_dst_param(ins, &ins->dst[0], dst_str); - flags = reg < WINED3D_MAX_TEXTURES ? priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT : 0; + if (reg < WINED3D_MAX_FFP_TEXTURES) + flags = priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; shader_hw_sample(ins, reg, dst_str, dst_name, flags & WINED3D_PSARGS_PROJECTED ? TEX_PROJ : 0, NULL, NULL); tex_mx->current_row = 0; } @@ -2263,7 +2265,7 @@ static void pshader_hw_texm3x3vspec(const struct wined3d_shader_instruction *ins { struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; struct wined3d_shader_tex_mx *tex_mx = ins->ctx->tex_mx; - DWORD flags; + unsigned int flags = 0; unsigned int reg = ins->dst[0].reg.idx[0].offset; struct wined3d_string_buffer *buffer = ins->ctx->buffer; char dst_str[50]; @@ -2295,7 +2297,8 @@ static void pshader_hw_texm3x3vspec(const struct wined3d_shader_instruction *ins
/* Sample the texture using the calculated coordinates */ shader_arb_get_dst_param(ins, &ins->dst[0], dst_str); - flags = reg < WINED3D_MAX_TEXTURES ? priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT : 0; + if (reg < WINED3D_MAX_FFP_TEXTURES) + flags = priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; shader_hw_sample(ins, reg, dst_str, dst_reg, flags & WINED3D_PSARGS_PROJECTED ? TEX_PROJ : 0, NULL, NULL); tex_mx->current_row = 0; } @@ -2304,7 +2307,7 @@ static void pshader_hw_texm3x3spec(const struct wined3d_shader_instruction *ins) { struct shader_arb_ctx_priv *priv = ins->ctx->backend_data; struct wined3d_shader_tex_mx *tex_mx = ins->ctx->tex_mx; - DWORD flags; + unsigned int flags = 0; unsigned int reg = ins->dst[0].reg.idx[0].offset; struct wined3d_string_buffer *buffer = ins->ctx->buffer; char dst_str[50]; @@ -2336,7 +2339,8 @@ static void pshader_hw_texm3x3spec(const struct wined3d_shader_instruction *ins)
/* Sample the texture using the calculated coordinates */ shader_arb_get_dst_param(ins, &ins->dst[0], dst_str); - flags = reg < WINED3D_MAX_TEXTURES ? priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT : 0; + if (reg < WINED3D_MAX_FFP_TEXTURES) + flags = priv->cur_ps_args->super.tex_transform >> reg * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; shader_hw_sample(ins, reg, dst_str, dst_reg, flags & WINED3D_PSARGS_PROJECTED ? TEX_PROJ : 0, NULL, NULL); tex_mx->current_row = 0; } @@ -5791,8 +5795,8 @@ static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragmen
/* TODO: Implement WINED3DTEXOPCAPS_PREMODULATE */
- caps->MaxTextureBlendStages = WINED3D_MAX_TEXTURES; - caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_TEXTURES); + caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; + caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
static unsigned int arbfp_get_emul_mask(const struct wined3d_adapter *adapter) @@ -6271,7 +6275,7 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con }
/* Find out which textures are read */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (settings->op[stage].cop == WINED3D_TOP_DISABLE) break; @@ -6354,7 +6358,7 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con shader_addline(&buffer, "TEMP arg0;\n"); shader_addline(&buffer, "TEMP arg1;\n"); shader_addline(&buffer, "TEMP arg2;\n"); - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (constant_used & (1u << stage)) shader_addline(&buffer, "PARAM const%u = program.env[%u];\n", stage, ARB_FFP_CONST_CONSTANT(stage)); @@ -6393,7 +6397,7 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con shader_addline(&buffer, "MOV tempreg, 0.0;\n");
/* Generate texture sampling instructions */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES && settings->op[stage].cop != WINED3D_TOP_DISABLE; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES && settings->op[stage].cop != WINED3D_TOP_DISABLE; ++stage) { if (!(tex_read & (1u << stage))) continue; @@ -6489,7 +6493,7 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con shader_addline(&buffer, "MOV ret, fragment.color.primary;\n");
/* Generate the main shader */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (settings->op[stage].cop == WINED3D_TOP_DISABLE) break; @@ -6609,7 +6613,7 @@ static void fragment_prog_arbfp(struct wined3d_context *context, const struct wi { /* Reload fixed function constants since they collide with the * pixel shader constants. */ - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { set_bumpmat_arbfp(context, state, STATE_TEXTURESTAGE(i, WINED3D_TSS_BUMPENV_MAT00)); state_tss_constant_arbfp(context, state, STATE_TEXTURESTAGE(i, WINED3D_TSS_CONSTANT)); diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 47426f0f49d..870e1003171 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -50,7 +50,7 @@ struct atifs_ffp_desc struct ffp_frag_desc parent; GLuint shader; unsigned int num_textures_used; - enum atifs_constant_value constants[WINED3D_MAX_TEXTURES]; + enum atifs_constant_value constants[WINED3D_MAX_FFP_TEXTURES]; };
struct atifs_private_data @@ -320,15 +320,15 @@ static GLuint register_for_arg(unsigned int arg, const struct wined3d_gl_info *g return ret; }
-static GLuint find_tmpreg(const struct texture_stage_op op[WINED3D_MAX_TEXTURES]) +static GLuint find_tmpreg(const struct texture_stage_op op[WINED3D_MAX_FFP_TEXTURES]) { int lowest_read = -1; int lowest_write = -1; int i; - BOOL tex_used[WINED3D_MAX_TEXTURES]; + BOOL tex_used[WINED3D_MAX_FFP_TEXTURES];
memset(tex_used, 0, sizeof(tex_used)); - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (op[i].cop == WINED3D_TOP_DISABLE) break; @@ -465,7 +465,7 @@ static BOOL op_reads_constant(const struct texture_stage_op *op) || (op->aarg2 & WINED3DTA_SELECTMASK) == WINED3DTA_CONSTANT; }
-static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_TEXTURES], +static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_FFP_TEXTURES], const struct wined3d_gl_info *gl_info, enum atifs_constant_value *constants) { GLuint ret = GL_EXTCALL(glGenFragmentShadersATI(1)); @@ -602,7 +602,7 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_TEXTUR }
/* Pass 4: Generate the arithmetic instructions */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (op[stage].cop == WINED3D_TOP_DISABLE) { @@ -934,7 +934,7 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_TEXTUR constants[ATIFS_CONST_TFACTOR - GL_CON_0_ATI] = ATIFS_CONSTANT_TFACTOR;
/* Assign unused constants to avoid reloading due to unused <-> bump matrix switches. */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (constants[stage] == ATIFS_CONSTANT_UNUSED) constants[stage] = ATIFS_CONSTANT_BUMP; @@ -1064,7 +1064,7 @@ static void set_tex_op_atifs(struct wined3d_context *context, const struct wined GL_EXTCALL(glBindFragmentShaderATI(desc->shader)); ctx_priv->last_shader = desc;
- for (i = 0; i < WINED3D_MAX_TEXTURES; i++) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (last_shader && last_shader->constants[i] == desc->constants[i]) continue; @@ -1312,7 +1312,7 @@ static void atifs_get_caps(const struct wined3d_adapter *adapter, struct fragmen * The proper fix for this is not to use GL_ATI_fragment_shader on cards newer than the * r200 series and use an ARB or GLSL shader instead */ - caps->MaxTextureBlendStages = WINED3D_MAX_TEXTURES; + caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; caps->MaxSimultaneousTextures = 6; }
diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index eb3c8b2438e..d114e564ea1 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -2396,7 +2396,7 @@ const unsigned int *wined3d_context_gl_get_tex_unit_mapping(const struct wined3d if (!shader_version) { *base = 0; - *count = WINED3D_MAX_TEXTURES; + *count = WINED3D_MAX_FFP_TEXTURES; return context_gl->tex_unit_map; }
@@ -3271,7 +3271,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl, sampler = context_gl->rev_tex_unit_map[0]; if (sampler != WINED3D_UNMAPPED_STAGE) { - if (sampler < WINED3D_MAX_TEXTURES) + if (sampler < WINED3D_MAX_FFP_TEXTURES) { context_invalidate_state(context, STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + sampler)); context_invalidate_state(context, STATE_TEXTURESTAGE(sampler, WINED3D_TSS_COLOR_OP)); @@ -3389,7 +3389,7 @@ void wined3d_context_gl_apply_ffp_blit_state(struct wined3d_context_gl *context_ sampler = context_gl->rev_tex_unit_map[i]; if (sampler != WINED3D_UNMAPPED_STAGE) { - if (sampler < WINED3D_MAX_TEXTURES) + if (sampler < WINED3D_MAX_FFP_TEXTURES) context_invalidate_state(context, STATE_TEXTURESTAGE(sampler, WINED3D_TSS_COLOR_OP)); context_invalidate_state(context, STATE_SAMPLER(sampler)); } @@ -3741,7 +3741,7 @@ static void context_update_fixed_function_usage_map(struct wined3d_context *cont UINT i, start, end;
context->fixed_function_usage_map = 0; - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { enum wined3d_texture_op color_op = state->texture_states[i][WINED3D_TSS_COLOR_OP]; enum wined3d_texture_op alpha_op = state->texture_states[i][WINED3D_TSS_ALPHA_OP]; @@ -3767,7 +3767,7 @@ static void context_update_fixed_function_usage_map(struct wined3d_context *cont context->fixed_function_usage_map |= (1u << i);
if ((color_op == WINED3D_TOP_BUMPENVMAP || color_op == WINED3D_TOP_BUMPENVMAP_LUMINANCE) - && i < WINED3D_MAX_TEXTURES - 1) + && i < WINED3D_MAX_FFP_TEXTURES - 1) context->fixed_function_usage_map |= (1u << (i + 1)); }
@@ -3865,7 +3865,7 @@ static BOOL wined3d_context_gl_unit_free_for_vs(const struct wined3d_context_gl if (!ps_resource_info) { /* No pixel shader, check fixed function */ - return current_mapping >= WINED3D_MAX_TEXTURES + return current_mapping >= WINED3D_MAX_FFP_TEXTURES || !(context_gl->c.fixed_function_usage_map & (1u << current_mapping)); }
@@ -5376,7 +5376,7 @@ void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context continue; }
- if (coord_idx < WINED3D_MAX_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) + if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) { const struct wined3d_stream_info_element *e = &si->elements[WINED3D_FFP_TEXCOORD0 + coord_idx];
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 29f20268086..b4960fc16a4 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -155,7 +155,7 @@ struct glsl_vs_program GLint modelview_matrix_location[MAX_VERTEX_BLENDS]; GLint projection_matrix_location; GLint normal_matrix_location; - GLint texture_matrix_location[WINED3D_MAX_TEXTURES]; + GLint texture_matrix_location[WINED3D_MAX_FFP_TEXTURES]; GLint material_ambient_location; GLint material_diffuse_location; GLint material_specular_location; @@ -215,10 +215,10 @@ struct glsl_ps_program GLint uniform_f_locations[WINED3D_MAX_PS_CONSTS_F]; GLint uniform_i_locations[WINED3D_MAX_CONSTS_I]; GLint uniform_b_locations[WINED3D_MAX_CONSTS_B]; - GLint bumpenv_mat_location[WINED3D_MAX_TEXTURES]; - GLint bumpenv_lum_scale_location[WINED3D_MAX_TEXTURES]; - GLint bumpenv_lum_offset_location[WINED3D_MAX_TEXTURES]; - GLint tss_constant_location[WINED3D_MAX_TEXTURES]; + GLint bumpenv_mat_location[WINED3D_MAX_FFP_TEXTURES]; + GLint bumpenv_lum_scale_location[WINED3D_MAX_FFP_TEXTURES]; + GLint bumpenv_lum_offset_location[WINED3D_MAX_FFP_TEXTURES]; + GLint tss_constant_location[WINED3D_MAX_FFP_TEXTURES]; GLint tex_factor_location; GLint specular_enable_location; GLint fog_color_location; @@ -422,7 +422,7 @@ static unsigned int shader_glsl_full_ffp_varyings(const struct wined3d_gl_info * /* On core profile we have to also count diffuse and specular colours and * the fog coordinate. */ return gl_info->limits.glsl_varyings >= (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT] - ? WINED3D_MAX_TEXTURES * 4 : (WINED3D_MAX_TEXTURES + 2) * 4 + 1); + ? WINED3D_MAX_FFP_TEXTURES * 4 : (WINED3D_MAX_FFP_TEXTURES + 2) * 4 + 1); }
static void shader_glsl_append_imm_vec(struct wined3d_string_buffer *buffer, @@ -1350,7 +1350,7 @@ static void shader_glsl_ffp_vertex_texmatrix_uniform(const struct wined3d_contex const struct wined3d_gl_info *gl_info = context_gl->gl_info; struct wined3d_matrix mat;
- if (tex >= WINED3D_MAX_TEXTURES) + if (tex >= WINED3D_MAX_FFP_TEXTURES) return; if (prog->vs.texture_matrix_location[tex] == -1) return; @@ -1630,7 +1630,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
if (update_mask & WINED3D_SHADER_CONST_FFP_TEXMATRIX) { - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) shader_glsl_ffp_vertex_texmatrix_uniform(context_gl, state, i, prog); }
@@ -1719,7 +1719,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
if (update_mask & WINED3D_SHADER_CONST_PS_BUMP_ENV) { - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (prog->ps.bumpenv_mat_location[i] == -1) continue; @@ -1773,7 +1773,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context else GL_EXTCALL(glUniform4f(prog->ps.specular_enable_location, 0.0f, 0.0f, 0.0f, 0.0f));
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (prog->ps.tss_constant_location[i] == -1) continue; @@ -7165,13 +7165,13 @@ static GLuint shader_glsl_generate_vs3_rasterizer_input_setup(struct shader_glsl if (ps_major < 3) { DWORD colors_written_mask[2] = {0}; - DWORD texcoords_written_mask[WINED3D_MAX_TEXTURES] = {0}; + DWORD texcoords_written_mask[WINED3D_MAX_FFP_TEXTURES] = {0};
if (!legacy_syntax) { declare_out_varying(gl_info, buffer, flatshading, "vec4 ffp_varying_diffuse;\n"); declare_out_varying(gl_info, buffer, flatshading, "vec4 ffp_varying_specular;\n"); - declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); declare_out_varying(gl_info, buffer, FALSE, "float ffp_varying_fogcoord;\n"); }
@@ -7208,7 +7208,7 @@ static GLuint shader_glsl_generate_vs3_rasterizer_input_setup(struct shader_glsl } else if (shader_match_semantic(semantic_name, WINED3D_DECL_USAGE_TEXCOORD)) { - if (semantic_idx < WINED3D_MAX_TEXTURES) + if (semantic_idx < WINED3D_MAX_FFP_TEXTURES) { shader_addline(buffer, "%s[%u]%s = outputs[%u]%s;\n", legacy_syntax ? "gl_TexCoord" : "ffp_varying_texcoord", @@ -7244,7 +7244,7 @@ static GLuint shader_glsl_generate_vs3_rasterizer_input_setup(struct shader_glsl reg_mask, reg_mask); } } - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (ps && !(ps->reg_maps.texcoord & (1u << i))) continue; @@ -7754,7 +7754,7 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_ shader_addline(buffer, "vec4 ffp_varying_diffuse;\n"); if (glsl_is_color_reg_read(shader, 1)) shader_addline(buffer, "vec4 ffp_varying_specular;\n"); - shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); shader_addline(buffer, "float ffp_varying_fogcoord;\n"); } else @@ -7763,8 +7763,8 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_ declare_in_varying(gl_info, buffer, args->flatshading, "vec4 ffp_varying_diffuse;\n"); if (glsl_is_color_reg_read(shader, 1)) declare_in_varying(gl_info, buffer, args->flatshading, "vec4 ffp_varying_specular;\n"); - declare_in_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); - shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + declare_in_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); + shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); declare_in_varying(gl_info, buffer, FALSE, "float ffp_varying_fogcoord;\n"); } } @@ -8063,7 +8063,7 @@ static GLuint shader_glsl_generate_vertex_shader(const struct wined3d_context_gl { declare_out_varying(gl_info, buffer, args->flatshading, "vec4 ffp_varying_diffuse;\n"); declare_out_varying(gl_info, buffer, args->flatshading, "vec4 ffp_varying_specular;\n"); - declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); declare_out_varying(gl_info, buffer, FALSE, "float ffp_varying_fogcoord;\n"); } } @@ -9035,7 +9035,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr shader_addline(buffer, "uniform mat4 ffp_modelview_matrix[%u];\n", MAX_VERTEX_BLENDS); shader_addline(buffer, "uniform mat4 ffp_projection_matrix;\n"); shader_addline(buffer, "uniform mat3 ffp_normal_matrix;\n"); - shader_addline(buffer, "uniform mat4 ffp_texture_matrix[%u];\n", WINED3D_MAX_TEXTURES); + shader_addline(buffer, "uniform mat4 ffp_texture_matrix[%u];\n", WINED3D_MAX_FFP_TEXTURES);
shader_addline(buffer, "uniform struct\n{\n"); shader_addline(buffer, " vec4 emissive;\n"); @@ -9077,7 +9077,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr { shader_addline(buffer, "vec4 ffp_varying_diffuse;\n"); shader_addline(buffer, "vec4 ffp_varying_specular;\n"); - shader_addline(buffer, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + shader_addline(buffer, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); shader_addline(buffer, "float ffp_varying_fogcoord;\n"); } else @@ -9087,7 +9087,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
declare_out_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_diffuse;\n"); declare_out_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_specular;\n"); - declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + declare_out_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); declare_out_varying(gl_info, buffer, FALSE, "float ffp_varying_fogcoord;\n"); }
@@ -9106,7 +9106,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr shader_addline(buffer, "%s %s = vs_in%u%s;\n", attrib_info[i].type, attrib_info[i].name, i, settings->swizzle_map & (1u << i) ? ".zyxw" : ""); } - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { unsigned int coord_idx = settings->texgen[i] & 0x0000ffff; if ((settings->texgen[i] & 0xffff0000) == WINED3DTSS_TCI_PASSTHRU @@ -9172,7 +9172,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr shader_addline(buffer, "ffp_varying_specular = clamp(ffp_varying_specular, 0.0, 1.0);\n"); }
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { BOOL output_legacy_texcoord = legacy_syntax;
@@ -9531,7 +9531,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * string_buffer_clear(buffer);
/* Find out which textures are read */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (settings->op[stage].cop == WINED3D_TOP_DISABLE) break; @@ -9614,7 +9614,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * shader_addline(buffer, "vec4 temp_reg = vec4(0.0);\n"); shader_addline(buffer, "vec4 arg0, arg1, arg2;\n");
- for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { const char *sampler_type;
@@ -9694,16 +9694,16 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * { shader_addline(buffer, "vec4 ffp_varying_diffuse;\n"); shader_addline(buffer, "vec4 ffp_varying_specular;\n"); - shader_addline(buffer, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); - shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + shader_addline(buffer, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); + shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); shader_addline(buffer, "float ffp_varying_fogcoord;\n"); } else { declare_in_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_diffuse;\n"); declare_in_varying(gl_info, buffer, settings->flatshading, "vec4 ffp_varying_specular;\n"); - declare_in_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_TEXTURES); - shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_TEXTURES); + declare_in_varying(gl_info, buffer, FALSE, "vec4 ffp_varying_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); + shader_addline(buffer, "vec4 ffp_texcoord[%u];\n", WINED3D_MAX_FFP_TEXTURES); declare_in_varying(gl_info, buffer, FALSE, "float ffp_varying_fogcoord;\n"); }
@@ -9715,7 +9715,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * shader_addline(buffer, "ffp_varying_specular = gl_SecondaryColor;\n"); }
- for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { if (tex_map & (1u << stage)) { @@ -9736,7 +9736,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * shader_addline(buffer, "if (any(lessThan(ffp_texcoord[7], vec4(0.0)))) discard;\n");
/* Generate texture sampling instructions */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES && settings->op[stage].cop != WINED3D_TOP_DISABLE; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES && settings->op[stage].cop != WINED3D_TOP_DISABLE; ++stage) { const char *texture_function, *coord_mask; BOOL proj; @@ -9853,7 +9853,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * shader_addline(buffer, "ret = ffp_varying_diffuse;\n");
/* Generate the main shader */ - for (stage = 0; stage < WINED3D_MAX_TEXTURES; ++stage) + for (stage = 0; stage < WINED3D_MAX_FFP_TEXTURES; ++stage) { BOOL op_equal;
@@ -10000,7 +10000,7 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info * } vs->projection_matrix_location = GL_EXTCALL(glGetUniformLocation(program_id, "ffp_projection_matrix")); vs->normal_matrix_location = GL_EXTCALL(glGetUniformLocation(program_id, "ffp_normal_matrix")); - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { string_buffer_sprintf(name, "ffp_texture_matrix[%u]", i); vs->texture_matrix_location[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer)); @@ -10086,7 +10086,7 @@ static void shader_glsl_init_ps_uniform_locations(const struct wined3d_gl_info * ps->uniform_b_locations[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer)); }
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { string_buffer_sprintf(name, "bumpenv_mat%u", i); ps->bumpenv_mat_location[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer)); @@ -10583,7 +10583,7 @@ static void set_glsl_shader_program(const struct wined3d_context_gl *context_gl, } }
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (entry->vs.texture_matrix_location[i] != -1) { @@ -10645,7 +10645,7 @@ static void set_glsl_shader_program(const struct wined3d_context_gl *context_gl, shader_glsl_load_samplers(&context_gl->c, priv, program_id, NULL); }
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (entry->ps.bumpenv_mat_location[i] != -1) { @@ -11830,7 +11830,7 @@ static void glsl_vertex_pipe_texmatrix_np2(struct wined3d_context *context, if (!texture) return;
- if (sampler >= WINED3D_MAX_TEXTURES) + if (sampler >= WINED3D_MAX_FFP_TEXTURES) return;
if ((np2 = !(texture->flags & WINED3D_TEXTURE_POW2_MAT_IDENT)) @@ -12080,8 +12080,8 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, s | WINED3DTEXOPCAPS_LERP | WINED3DTEXOPCAPS_BUMPENVMAP | WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE; - caps->MaxTextureBlendStages = WINED3D_MAX_TEXTURES; - caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_TEXTURES); + caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; + caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
static unsigned int glsl_fragment_pipe_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index eb548f6e366..5e1637de3bb 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -747,7 +747,7 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct WINED3DTEXOPCAPS_PREMODULATE */ #endif
- caps->MaxTextureBlendStages = min(WINED3D_MAX_TEXTURES, gl_info->limits.general_combiners); + caps->MaxTextureBlendStages = min(WINED3D_MAX_FFP_TEXTURES, gl_info->limits.general_combiners); caps->MaxSimultaneousTextures = gl_info->limits.textures; }
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index b6bfcd1184f..fa9a487edda 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -2999,7 +2999,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3 const struct wined3d_shader *vs = state->shader[WINED3D_SHADER_TYPE_VERTEX];
args->texcoords_initialized = 0; - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (vs) { @@ -3013,14 +3013,14 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
if ((state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX] >> WINED3D_FFP_TCI_SHIFT) & WINED3D_FFP_TCI_MASK - || (coord_idx < WINED3D_MAX_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))) + || (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))) args->texcoords_initialized |= 1u << i; } } } else { - args->texcoords_initialized = wined3d_mask_from_size(WINED3D_MAX_TEXTURES); + args->texcoords_initialized = wined3d_mask_from_size(WINED3D_MAX_FFP_TEXTURES); }
args->pointsprite = state->render_states[WINED3D_RS_POINTSPRITEENABLE] diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 07c11269496..90daa9e9ee6 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -3435,7 +3435,7 @@ static void sampler_texmatrix(struct wined3d_context *context, const struct wine * wined3d_texture_apply_state_changes() multiplies the set matrix with a fixup matrix. Before the * scaling is reapplied or removed, the texture matrix has to be reapplied. */ - if (sampler < WINED3D_MAX_TEXTURES) + if (sampler < WINED3D_MAX_FFP_TEXTURES) { const BOOL tex_is_pow2 = !(texture->flags & WINED3D_TEXTURE_POW2_MAT_IDENT);
@@ -3927,7 +3927,7 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine { unsigned int i;
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (!isStateDirty(context, STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + i))) transform_texture(context, state, STATE_TEXTURESTAGE(i, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS)); @@ -5304,7 +5304,7 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const unsigned int start, last, i;
start = STATE_TEXTURESTAGE(d3d_info->limits.ffp_blend_stages, 0); - last = STATE_TEXTURESTAGE(WINED3D_MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE); + last = STATE_TEXTURESTAGE(WINED3D_MAX_FFP_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE); for (i = start; i <= last; ++i) { state_table[i].representative = 0; @@ -5312,7 +5312,7 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const }
start = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + d3d_info->limits.ffp_blend_stages); - last = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + WINED3D_MAX_TEXTURES - 1); + last = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + WINED3D_MAX_FFP_TEXTURES - 1); for (i = start; i <= last; ++i) { state_table[i].representative = 0; diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index c8d62ad9f85..6ce17311595 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -40,7 +40,7 @@ struct wined3d_saved_states uint16_t streamSource; /* WINED3D_MAX_STREAMS, 16 */ uint16_t streamFreq; /* WINED3D_MAX_STREAMS, 16 */ uint32_t renderState[WINED3D_BITMAP_SIZE(WINEHIGHEST_RENDER_STATE + 1)]; - uint32_t textureState[WINED3D_MAX_TEXTURES]; /* WINED3D_HIGHEST_TEXTURE_STATE + 1, 18 */ + uint32_t textureState[WINED3D_MAX_FFP_TEXTURES]; /* WINED3D_HIGHEST_TEXTURE_STATE + 1, 18 */ uint16_t samplerState[WINED3D_MAX_COMBINED_SAMPLERS]; /* WINED3D_HIGHEST_SAMPLER_STATE + 1, 14 */ uint32_t clipplane; /* WINED3D_MAX_CLIP_DISTANCES, 8 */ uint32_t textures : 20; /* WINED3D_MAX_COMBINED_SAMPLERS, 20 */ @@ -79,7 +79,7 @@ struct wined3d_stateblock unsigned int num_contained_render_states; unsigned int contained_transform_states[WINED3D_HIGHEST_TRANSFORM_STATE + 1]; unsigned int num_contained_transform_states; - struct stage_state contained_tss_states[WINED3D_MAX_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1)]; + struct stage_state contained_tss_states[WINED3D_MAX_FFP_TEXTURES * (WINED3D_HIGHEST_TEXTURE_STATE + 1)]; unsigned int num_contained_tss_states; struct stage_state contained_sampler_states[WINED3D_MAX_COMBINED_SAMPLERS * WINED3D_HIGHEST_SAMPLER_STATE]; unsigned int num_contained_sampler_states; @@ -274,7 +274,7 @@ static void stateblock_savedstates_set_all(struct wined3d_saved_states *states, states->textures = 0xfffff; stateblock_set_all_bits(states->transform, WINED3D_HIGHEST_TRANSFORM_STATE + 1); stateblock_set_all_bits(states->renderState, WINEHIGHEST_RENDER_STATE + 1); - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) states->textureState[i] = 0x3ffff; + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) states->textureState[i] = 0x3ffff; for (i = 0; i < WINED3D_MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = 0x3ffe; states->clipplane = wined3d_mask_from_size(WINED3D_MAX_CLIP_DISTANCES); states->pixelShaderConstantsB = 0xffff; @@ -302,7 +302,7 @@ static void stateblock_savedstates_set_pixel(struct wined3d_saved_states *states
for (i = 0; i < ARRAY_SIZE(pixel_states_texture); ++i) texture_mask |= 1u << pixel_states_texture[i]; - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) states->textureState[i] = texture_mask; + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) states->textureState[i] = texture_mask; for (i = 0; i < ARRAY_SIZE(pixel_states_sampler); ++i) sampler_mask |= 1u << pixel_states_sampler[i]; for (i = 0; i < WINED3D_MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = sampler_mask; @@ -331,7 +331,7 @@ static void stateblock_savedstates_set_vertex(struct wined3d_saved_states *state
for (i = 0; i < ARRAY_SIZE(vertex_states_texture); ++i) texture_mask |= 1u << vertex_states_texture[i]; - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) states->textureState[i] = texture_mask; + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) states->textureState[i] = texture_mask; for (i = 0; i < ARRAY_SIZE(vertex_states_sampler); ++i) sampler_mask |= 1u << vertex_states_sampler[i]; for (i = 0; i < WINED3D_MAX_COMBINED_SAMPLERS; ++i) states->samplerState[i] = sampler_mask; @@ -369,7 +369,7 @@ void CDECL wined3d_stateblock_init_contained_states(struct wined3d_stateblock *s } }
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { DWORD map = stateblock->changed.textureState[i];
@@ -1519,10 +1519,10 @@ void CDECL wined3d_stateblock_set_texture_stage_state(struct wined3d_stateblock return; }
- if (stage >= WINED3D_MAX_TEXTURES) + if (stage >= WINED3D_MAX_FFP_TEXTURES) { WARN("Attempting to set stage %u which is higher than the max stage %u, ignoring.\n", - stage, WINED3D_MAX_TEXTURES - 1); + stage, WINED3D_MAX_FFP_TEXTURES - 1); return; }
@@ -1990,7 +1990,7 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d init_default_render_states(state->render_states, d3d_info);
/* Texture Stage States - Put directly into state block, we will call function below */ - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { TRACE("Setting up default texture states for texture Stage %u.\n", i); state->transforms[WINED3D_TS_TEXTURE0 + i] = identity; @@ -2110,7 +2110,7 @@ static void stateblock_state_init_default(struct wined3d_stateblock_state *state
init_default_render_states(state->rs, d3d_info);
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { state->transforms[WINED3D_TS_TEXTURE0 + i] = identity; init_default_texture_state(i, state->texture_states[i]); diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index e3c2a174cd2..d05e268456b 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -5854,7 +5854,7 @@ void get_texture_matrix(const struct wined3d_context *context, const struct wine BOOL generated = (state->texture_states[tex][WINED3D_TSS_TEXCOORD_INDEX] & 0xffff0000) != WINED3DTSS_TCI_PASSTHRU; unsigned int coord_idx = min(state->texture_states[tex][WINED3D_TSS_TEXCOORD_INDEX & 0x0000ffff], - WINED3D_MAX_TEXTURES - 1); + WINED3D_MAX_FFP_TEXTURES - 1);
compute_texture_matrix(&state->transforms[WINED3D_TS_TEXTURE0 + tex], state->texture_states[tex][WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS], @@ -6573,9 +6573,8 @@ void wined3d_ffp_get_fs_settings(const struct wined3d_context *context, const st }
/* Clear unsupported stages */ - for(; i < WINED3D_MAX_TEXTURES; i++) { + for (; i < WINED3D_MAX_FFP_TEXTURES; ++i) memset(&settings->op[i], 0xff, sizeof(settings->op[i])); - }
if (!state->render_states[WINED3D_RS_FOGENABLE]) { @@ -6649,7 +6648,7 @@ void wined3d_ffp_get_fs_settings(const struct wined3d_context *context, const st if (d3d_info->limits.varying_count && !d3d_info->full_ffp_varyings) { settings->texcoords_initialized = 0; - for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { if (use_vs(state)) { @@ -6662,14 +6661,14 @@ void wined3d_ffp_get_fs_settings(const struct wined3d_context *context, const st unsigned int coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX]; if ((state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX] >> WINED3D_FFP_TCI_SHIFT) & WINED3D_FFP_TCI_MASK - || (coord_idx < WINED3D_MAX_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))) + || (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))) settings->texcoords_initialized |= 1u << i; } } } else { - settings->texcoords_initialized = wined3d_mask_from_size(WINED3D_MAX_TEXTURES); + settings->texcoords_initialized = wined3d_mask_from_size(WINED3D_MAX_FFP_TEXTURES); }
settings->pointsprite = state->render_states[WINED3D_RS_POINTSPRITEENABLE] @@ -6846,15 +6845,15 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context, else settings->fog_mode = WINED3D_FFP_VS_FOG_FOGCOORD;
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX]; - if (coord_idx < WINED3D_MAX_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) + if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) settings->texcoords |= 1u << i; settings->texgen[i] = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX]; } if (d3d_info->full_ffp_varyings) - settings->texcoords = wined3d_mask_from_size(WINED3D_MAX_TEXTURES); + settings->texcoords = wined3d_mask_from_size(WINED3D_MAX_FFP_TEXTURES);
if (d3d_info->emulated_flatshading) settings->flatshading = state->render_states[WINED3D_RS_SHADEMODE] == WINED3D_SHADE_FLAT; @@ -6895,15 +6894,15 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context, settings->ambient_source = ambient_source; settings->specular_source = specular_source;
- for (i = 0; i < WINED3D_MAX_TEXTURES; ++i) + for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i) { coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX]; - if (coord_idx < WINED3D_MAX_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) + if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))) settings->texcoords |= 1u << i; settings->texgen[i] = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX]; } if (d3d_info->full_ffp_varyings) - settings->texcoords = wined3d_mask_from_size(WINED3D_MAX_TEXTURES); + settings->texcoords = wined3d_mask_from_size(WINED3D_MAX_FFP_TEXTURES);
for (i = 0; i < WINED3D_MAX_ACTIVE_LIGHTS; ++i) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 0b92ae52e64..6f1839de440 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1120,8 +1120,8 @@ struct wined3d_shader_reg_maps uint32_t resource_map[WINED3D_BITMAP_SIZE(MAX_SHADER_RESOURCE_VIEWS)]; struct wined3d_shader_sampler_map sampler_map; DWORD sampler_comparison_mode; - BYTE bumpmat; /* WINED3D_MAX_TEXTURES, 8 */ - BYTE luminanceparams; /* WINED3D_MAX_TEXTURES, 8 */ + BYTE bumpmat; /* WINED3D_MAX_FFP_TEXTURES, 8 */ + BYTE luminanceparams; /* WINED3D_MAX_FFP_TEXTURES, 8 */ struct wined3d_shader_resource_info uav_resource_info[MAX_UNORDERED_ACCESS_VIEWS]; DWORD uav_read_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */ DWORD uav_counter_mask : 8; /* MAX_UNORDERED_ACCESS_VIEWS, 8 */ @@ -1477,7 +1477,7 @@ struct ps_compile_args in D3D10 (unconditional NP2 support mandatory). */ WORD np2_fixup; WORD shadow; /* WINED3D_MAX_FRAGMENT_SAMPLERS, 16 */ - WORD texcoords_initialized; /* WINED3D_MAX_TEXTURES, 8 */ + WORD texcoords_initialized; /* WINED3D_MAX_FFP_TEXTURES, 8 */ WORD padding_to_dword; DWORD pointsprite : 1; DWORD flatshading : 1; @@ -1725,10 +1725,10 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state #define STATE_TEXTURESTAGE(stage, num) \ (STATE_RENDER(WINEHIGHEST_RENDER_STATE) + 1 + (stage) * (WINED3D_HIGHEST_TEXTURE_STATE + 1) + (num)) #define STATE_IS_TEXTURESTAGE(a) \ - ((a) >= STATE_TEXTURESTAGE(0, 1) && (a) <= STATE_TEXTURESTAGE(WINED3D_MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE)) + ((a) >= STATE_TEXTURESTAGE(0, 1) && (a) <= STATE_TEXTURESTAGE(WINED3D_MAX_FFP_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE))
/* + 1 because samplers start with 0 */ -#define STATE_SAMPLER(num) (STATE_TEXTURESTAGE(WINED3D_MAX_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE) + 1 + (num)) +#define STATE_SAMPLER(num) (STATE_TEXTURESTAGE(WINED3D_MAX_FFP_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE) + 1 + (num)) #define STATE_IS_SAMPLER(num) ((num) >= STATE_SAMPLER(0) && (num) <= STATE_SAMPLER(WINED3D_MAX_COMBINED_SAMPLERS - 1))
#define STATE_GRAPHICS_SHADER(a) (STATE_SAMPLER(WINED3D_MAX_COMBINED_SAMPLERS) + (a)) @@ -1931,11 +1931,11 @@ struct wined3d_context DWORD last_was_blit : 1; DWORD last_was_ckey : 1; DWORD last_was_dual_source_blend : 1; - DWORD texShaderBumpMap : 8; /* WINED3D_MAX_TEXTURES, 8 */ - DWORD lowest_disabled_stage : 4; /* Max WINED3D_MAX_TEXTURES, 8 */ + DWORD texShaderBumpMap : 8; /* WINED3D_MAX_FFP_TEXTURES, 8 */ + DWORD lowest_disabled_stage : 4; /* Max WINED3D_MAX_FFP_TEXTURES, 8 */
- DWORD lastWasPow2Texture : 8; /* WINED3D_MAX_TEXTURES, 8 */ - DWORD fixed_function_usage_map : 8; /* WINED3D_MAX_TEXTURES, 8 */ + DWORD lastWasPow2Texture : 8; /* WINED3D_MAX_FFP_TEXTURES, 8 */ + DWORD fixed_function_usage_map : 8; /* WINED3D_MAX_FFP_TEXTURES, 8 */ DWORD use_immediate_mode_draw : 1; DWORD uses_uavs : 1; DWORD uses_fbo_attached_resources : 1; @@ -2695,7 +2695,7 @@ struct texture_stage_op
struct ffp_frag_settings { - struct texture_stage_op op[WINED3D_MAX_TEXTURES]; + struct texture_stage_op op[WINED3D_MAX_FFP_TEXTURES]; enum wined3d_ffp_ps_fog_mode fog; unsigned char sRGB_write; unsigned char emul_clipplanes; @@ -2760,14 +2760,14 @@ struct wined3d_ffp_vs_settings DWORD point_size : 1; DWORD per_vertex_point_size : 1; DWORD fog_mode : 2; - DWORD texcoords : 8; /* WINED3D_MAX_TEXTURES */ + DWORD texcoords : 8; /* WINED3D_MAX_FFP_TEXTURES */ DWORD ortho_fog : 1; DWORD flatshading : 1; DWORD padding : 18;
DWORD swizzle_map; /* MAX_ATTRIBS, 32 */
- unsigned int texgen[WINED3D_MAX_TEXTURES]; + unsigned int texgen[WINED3D_MAX_FFP_TEXTURES]; };
struct wined3d_ffp_vs_desc @@ -2889,7 +2889,7 @@ struct wined3d_state
struct wined3d_texture *textures[WINED3D_MAX_COMBINED_SAMPLERS]; uint32_t sampler_states[WINED3D_MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1]; - uint32_t texture_states[WINED3D_MAX_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1]; + uint32_t texture_states[WINED3D_MAX_FFP_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1];
struct wined3d_matrix transforms[WINED3D_HIGHEST_TRANSFORM_STATE + 1]; struct wined3d_vec4 clip_planes[WINED3D_MAX_CLIP_DISTANCES]; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 7bc9559526e..ad90c0d6b36 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -1590,7 +1590,7 @@ enum wined3d_memory_segment_group #define WINED3D_REGISTER_WINDOW_NO_PRINT_SCREEN 0x00000004u
#define WINED3D_MAX_STREAMS 16 -#define WINED3D_MAX_TEXTURES 8 +#define WINED3D_MAX_FFP_TEXTURES 8 #define WINED3D_MAX_FRAGMENT_SAMPLERS 16 #define WINED3D_MAX_VERTEX_SAMPLERS 4 #define WINED3D_MAX_COMBINED_SAMPLERS (WINED3D_MAX_FRAGMENT_SAMPLERS + WINED3D_MAX_VERTEX_SAMPLERS) @@ -2182,7 +2182,7 @@ struct wined3d_stateblock_state
struct wined3d_texture *textures[WINED3D_MAX_COMBINED_SAMPLERS]; uint32_t sampler_states[WINED3D_MAX_COMBINED_SAMPLERS][WINED3D_HIGHEST_SAMPLER_STATE + 1]; - uint32_t texture_states[WINED3D_MAX_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1]; + uint32_t texture_states[WINED3D_MAX_FFP_TEXTURES][WINED3D_HIGHEST_TEXTURE_STATE + 1];
struct wined3d_matrix transforms[WINED3D_HIGHEST_TRANSFORM_STATE + 1]; struct wined3d_vec4 clip_planes[WINED3D_MAX_CLIP_DISTANCES];
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 12 ++++++------ dlls/wined3d/ati_fragment_shader.c | 6 +++--- dlls/wined3d/context_gl.c | 8 ++++---- dlls/wined3d/nvidia_texture_shader.c | 10 +++++----- dlls/wined3d/state.c | 10 +++++----- dlls/wined3d/utils.c | 2 +- dlls/wined3d/wined3d_gl.h | 2 +- 7 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index a42c41b3978..a9454e51b53 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -2890,7 +2890,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) GLint gl_max;
gl_info->limits.buffers = 1; - gl_info->limits.textures = 0; + gl_info->limits.ffp_textures = 0; gl_info->limits.texture_coords = 0; for (i = 0; i < WINED3D_SHADER_TYPE_COUNT; ++i) { @@ -2954,8 +2954,8 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]) { gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max); - gl_info->limits.textures = min(WINED3D_MAX_FFP_TEXTURES, gl_max); - TRACE("Max textures: %d.\n", gl_info->limits.textures); + gl_info->limits.ffp_textures = min(WINED3D_MAX_FFP_TEXTURES, gl_max); + TRACE("Max textures: %d.\n", gl_info->limits.ffp_textures);
if (gl_info->supported[ARB_FRAGMENT_PROGRAM]) { @@ -2964,7 +2964,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) } else { - gl_info->limits.texture_coords = gl_info->limits.textures; + gl_info->limits.texture_coords = gl_info->limits.ffp_textures; } TRACE("Max texture coords: %d.\n", gl_info->limits.texture_coords); } @@ -2976,7 +2976,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) } else { - gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL] = gl_info->limits.textures; + gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL] = gl_info->limits.ffp_textures; } TRACE("Max fragment samplers: %d.\n", gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL]);
@@ -3034,7 +3034,7 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) } else { - gl_info->limits.textures = 1; + gl_info->limits.ffp_textures = 1; gl_info->limits.texture_coords = 1; }
diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 870e1003171..2a457a93ff6 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -490,7 +490,7 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_FFP_TE checkGLcall("GL_EXTCALL(glBeginFragmentShaderATI())");
/* Pass 1: Generate sampling instructions for perturbation maps */ - for (stage = 0; stage < gl_info->limits.textures; ++stage) + for (stage = 0; stage < gl_info->limits.ffp_textures; ++stage) { if (op[stage].cop == WINED3D_TOP_DISABLE) break; @@ -517,7 +517,7 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_FFP_TE }
/* Pass 2: Generate perturbation calculations */ - for (stage = 0; stage < gl_info->limits.textures; ++stage) + for (stage = 0; stage < gl_info->limits.ffp_textures; ++stage) { GLuint argmodextra_x, argmodextra_y; struct color_fixup_desc fixup; @@ -568,7 +568,7 @@ static GLuint gen_ati_shader(const struct texture_stage_op op[WINED3D_MAX_FFP_TE }
/* Pass 3: Generate sampling instructions for regular textures */ - for (stage = 0; stage < gl_info->limits.textures; ++stage) + for (stage = 0; stage < gl_info->limits.ffp_textures; ++stage) { if (op[stage].cop == WINED3D_TOP_DISABLE) break; diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index d114e564ea1..b99d6206bd5 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -2252,7 +2252,7 @@ HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl, struct wi /* Set up the previous texture input for all shader units. This applies to bump mapping, and in d3d * the previous texture where to source the offset from is always unit - 1. */ - for (i = 1; i < gl_info->limits.textures; ++i) + for (i = 1; i < gl_info->limits.ffp_textures; ++i) { wined3d_context_gl_active_texture(context_gl, gl_info, i); gl_info->gl_ops.gl.p_glTexEnvi(GL_TEXTURE_SHADER_NV, @@ -2283,7 +2283,7 @@ HRESULT wined3d_context_gl_init(struct wined3d_context_gl *context_gl, struct wi
if (gl_info->supported[ARB_POINT_SPRITE]) { - for (i = 0; i < gl_info->limits.textures; ++i) + for (i = 0; i < gl_info->limits.ffp_textures; ++i) { wined3d_context_gl_active_texture(context_gl, gl_info, i); gl_info->gl_ops.gl.p_glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE); @@ -3373,7 +3373,7 @@ void wined3d_context_gl_apply_ffp_blit_state(struct wined3d_context_gl *context_
/* Disable all textures. The caller can then bind a texture it wants to blit * from. */ - for (i = gl_info->limits.textures - 1; i > 0 ; --i) + for (i = gl_info->limits.ffp_textures - 1; i > 0 ; --i) { wined3d_context_gl_active_texture(context_gl, gl_info, i);
@@ -5409,7 +5409,7 @@ void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context if (gl_info->supported[NV_REGISTER_COMBINERS]) { /* The number of the mapped stages increases monotonically, so it's fine to use the last used one. */ - for (texture_idx = mapped_stage + 1; texture_idx < gl_info->limits.textures; ++texture_idx) + for (texture_idx = mapped_stage + 1; texture_idx < gl_info->limits.ffp_textures; ++texture_idx) { GL_EXTCALL(glMultiTexCoord4fARB(GL_TEXTURE0_ARB + texture_idx, 0, 0, 0, 1)); } diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index 5e1637de3bb..5fd66f73827 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -496,7 +496,7 @@ static void nvrc_colorop(struct wined3d_context *context, const struct wined3d_s
if (mapped_stage != WINED3D_UNMAPPED_STAGE) { - if (tex_used && mapped_stage >= gl_info->limits.textures) + if (tex_used && mapped_stage >= gl_info->limits.ffp_textures) { FIXME("Attempt to enable unsupported stage!\n"); return; @@ -533,7 +533,7 @@ static void nvrc_colorop(struct wined3d_context *context, const struct wined3d_s gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_RECTANGLE_ARB); checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)"); } - if (gl_info->supported[NV_TEXTURE_SHADER2] && mapped_stage < gl_info->limits.textures) + if (gl_info->supported[NV_TEXTURE_SHADER2] && mapped_stage < gl_info->limits.ffp_textures) { gl_info->gl_ops.gl.p_glTexEnvi(GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_NONE); } @@ -609,7 +609,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->gl_info->limits.textures) + if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context_gl->gl_info->limits.ffp_textures) return; if (sampler >= context->lowest_disabled_stage) return; @@ -633,7 +633,7 @@ static void nvts_bumpenvmat(struct wined3d_context *context, const struct wined3 * map is read from a specified source stage(always stage - 1 for d3d). Thus set the matrix * for stage + 1. Keep the nvrc tex unit mapping in mind too */ - if (mapped_stage < gl_info->limits.textures) + if (mapped_stage < gl_info->limits.ffp_textures) { wined3d_context_gl_active_texture(context_gl, gl_info, mapped_stage);
@@ -748,7 +748,7 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct #endif
caps->MaxTextureBlendStages = min(WINED3D_MAX_FFP_TEXTURES, gl_info->limits.general_combiners); - caps->MaxSimultaneousTextures = gl_info->limits.textures; + caps->MaxSimultaneousTextures = gl_info->limits.ffp_textures; }
static unsigned int nvrc_fragment_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 90daa9e9ee6..f7fb3493ea1 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -3073,7 +3073,7 @@ static void tex_colorop(struct wined3d_context *context, const struct wined3d_st
if (mapped_stage != WINED3D_UNMAPPED_STAGE) { - if (tex_used && mapped_stage >= gl_info->limits.textures) + if (tex_used && mapped_stage >= gl_info->limits.ffp_textures) { FIXME("Attempt to enable unsupported stage!\n"); return; @@ -3131,7 +3131,7 @@ void tex_alphaop(struct wined3d_context *context, const struct wined3d_state *st /* Do not care for enabled / disabled stages, just assign the settings. colorop disables / enables required stuff */ if (mapped_stage != WINED3D_UNMAPPED_STAGE) { - if (tex_used && mapped_stage >= gl_info->limits.textures) + if (tex_used && mapped_stage >= gl_info->limits.ffp_textures) { FIXME("Attempt to enable unsupported stage!\n"); return; @@ -3232,7 +3232,7 @@ static void transform_texture(struct wined3d_context *context, const struct wine }
if (mapped_stage == WINED3D_UNMAPPED_STAGE) return; - if (mapped_stage >= gl_info->limits.textures) return; + if (mapped_stage >= gl_info->limits.ffp_textures) return;
wined3d_context_gl_active_texture(context_gl, gl_info, mapped_stage); gl_info->gl_ops.gl.p_glMatrixMode(GL_TEXTURE); @@ -5185,8 +5185,8 @@ static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct if (gl_info->supported[ARB_TEXTURE_ENV_DOT3]) caps->TextureOpCaps |= WINED3DTEXOPCAPS_DOTPRODUCT3;
- caps->MaxTextureBlendStages = gl_info->limits.textures; - caps->MaxSimultaneousTextures = gl_info->limits.textures; + caps->MaxTextureBlendStages = gl_info->limits.ffp_textures; + caps->MaxSimultaneousTextures = gl_info->limits.ffp_textures; }
static unsigned int ffp_fragment_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index d05e268456b..7e4b7bf2f91 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -6805,7 +6805,7 @@ void sampler_texdim(struct wined3d_context *context, const struct wined3d_state * tex_colorop handler takes care. Also no action is needed with pixel * shaders, or if tex_colorop will take care of this business. */ mapped_stage = context_gl->tex_unit_map[sampler]; - if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context_gl->gl_info->limits.textures) + if (mapped_stage == WINED3D_UNMAPPED_STAGE || mapped_stage >= context_gl->gl_info->limits.ffp_textures) return; if (sampler >= context->lowest_disabled_stage) return; diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index ba150476e79..ceb534a10a4 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -276,7 +276,7 @@ struct wined3d_gl_limits { unsigned int buffers; unsigned int lights; - unsigned int textures; + unsigned int ffp_textures; unsigned int texture_coords; unsigned int uniform_blocks[WINED3D_SHADER_TYPE_COUNT]; unsigned int samplers[WINED3D_SHADER_TYPE_COUNT];
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 4 ++-- dlls/wined3d/adapter_vk.c | 2 +- dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/ati_fragment_shader.c | 2 +- dlls/wined3d/directx.c | 2 +- dlls/wined3d/glsl_shader.c | 2 +- dlls/wined3d/nvidia_texture_shader.c | 2 +- dlls/wined3d/state.c | 2 +- dlls/wined3d/wined3d_private.h | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index a9454e51b53..f9fb68e437b 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -1298,7 +1298,7 @@ static enum wined3d_feature_level feature_level_from_caps(const struct wined3d_g
if (fragment_caps->TextureOpCaps & WINED3DTEXOPCAPS_DOTPRODUCT3) return WINED3D_FEATURE_LEVEL_7; - if (fragment_caps->MaxSimultaneousTextures > 1) + if (fragment_caps->max_textures > 1) return WINED3D_FEATURE_LEVEL_6;
return WINED3D_FEATURE_LEVEL_5; @@ -5189,7 +5189,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.vs_uniform_count = shader_caps.vs_uniform_count; d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; - d3d_info->limits.ffp_textures = fragment_caps.MaxSimultaneousTextures; + d3d_info->limits.ffp_textures = fragment_caps.max_textures; d3d_info->limits.ffp_blend_stages = fragment_caps.MaxTextureBlendStages; TRACE("Max texture stages: %u.\n", d3d_info->limits.ffp_blend_stages); d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index fffe33a76d4..919a56ceca8 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2319,7 +2319,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->limits.vs_uniform_count = shader_caps.vs_uniform_count; d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; - d3d_info->limits.ffp_textures = fragment_caps.MaxSimultaneousTextures; + d3d_info->limits.ffp_textures = fragment_caps.max_textures; d3d_info->limits.ffp_blend_stages = fragment_caps.MaxTextureBlendStages; d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; d3d_info->limits.active_light_count = vertex_caps.max_active_lights; diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index f0e1b2bdf99..3b3e9dfb2c3 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -5796,7 +5796,7 @@ static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragmen /* TODO: Implement WINED3DTEXOPCAPS_PREMODULATE */
caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; - caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); + caps->max_textures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
static unsigned int arbfp_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 2a457a93ff6..96bb4a5a6cc 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -1313,7 +1313,7 @@ static void atifs_get_caps(const struct wined3d_adapter *adapter, struct fragmen * r200 series and use an ARB or GLSL shader instead */ caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; - caps->MaxSimultaneousTextures = 6; + caps->max_textures = 6; }
static unsigned int atifs_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 78e743900ec..91342de6aa5 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2530,7 +2530,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter,
caps->TextureOpCaps = fragment_caps.TextureOpCaps; caps->MaxTextureBlendStages = fragment_caps.MaxTextureBlendStages; - caps->MaxSimultaneousTextures = fragment_caps.MaxSimultaneousTextures; + caps->MaxSimultaneousTextures = fragment_caps.max_textures;
caps->MaxUserClipPlanes = vertex_caps.max_user_clip_planes; caps->MaxActiveLights = vertex_caps.max_active_lights; diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index b4960fc16a4..2662013f2a0 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -12081,7 +12081,7 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, s | WINED3DTEXOPCAPS_BUMPENVMAP | WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE; caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; - caps->MaxSimultaneousTextures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); + caps->max_textures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
static unsigned int glsl_fragment_pipe_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index 5fd66f73827..367041dd412 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -748,7 +748,7 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct #endif
caps->MaxTextureBlendStages = min(WINED3D_MAX_FFP_TEXTURES, gl_info->limits.general_combiners); - caps->MaxSimultaneousTextures = gl_info->limits.ffp_textures; + caps->max_textures = gl_info->limits.ffp_textures; }
static unsigned int nvrc_fragment_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index f7fb3493ea1..fbaa6999326 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5186,7 +5186,7 @@ static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct caps->TextureOpCaps |= WINED3DTEXOPCAPS_DOTPRODUCT3;
caps->MaxTextureBlendStages = gl_info->limits.ffp_textures; - caps->MaxSimultaneousTextures = gl_info->limits.ffp_textures; + caps->max_textures = gl_info->limits.ffp_textures; }
static unsigned int ffp_fragment_get_emul_mask(const struct wined3d_adapter *adapter) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 6f1839de440..317fc4e5535 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1998,7 +1998,7 @@ struct fragment_caps DWORD PrimitiveMiscCaps; DWORD TextureOpCaps; DWORD MaxTextureBlendStages; - DWORD MaxSimultaneousTextures; + unsigned int max_textures; };
#define GL_EXT_EMUL_ARB_MULTITEXTURE 0x00000001
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 2 +- dlls/wined3d/adapter_vk.c | 2 +- dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/ati_fragment_shader.c | 2 +- dlls/wined3d/directx.c | 2 +- dlls/wined3d/glsl_shader.c | 2 +- dlls/wined3d/nvidia_texture_shader.c | 2 +- dlls/wined3d/state.c | 2 +- dlls/wined3d/wined3d_private.h | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index f9fb68e437b..576430c9284 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5190,7 +5190,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; d3d_info->limits.ffp_textures = fragment_caps.max_textures; - d3d_info->limits.ffp_blend_stages = fragment_caps.MaxTextureBlendStages; + d3d_info->limits.ffp_blend_stages = fragment_caps.max_blend_stages; TRACE("Max texture stages: %u.\n", d3d_info->limits.ffp_blend_stages); d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; d3d_info->limits.active_light_count = vertex_caps.max_active_lights; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 919a56ceca8..211071fae83 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2320,7 +2320,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; d3d_info->limits.ffp_textures = fragment_caps.max_textures; - d3d_info->limits.ffp_blend_stages = fragment_caps.MaxTextureBlendStages; + d3d_info->limits.ffp_blend_stages = fragment_caps.max_blend_stages; d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; d3d_info->limits.active_light_count = vertex_caps.max_active_lights;
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 3b3e9dfb2c3..b568a9e68ae 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -5795,7 +5795,7 @@ static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragmen
/* TODO: Implement WINED3DTEXOPCAPS_PREMODULATE */
- caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; + caps->max_blend_stages = WINED3D_MAX_FFP_TEXTURES; caps->max_textures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 96bb4a5a6cc..8606d86516d 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -1312,7 +1312,7 @@ static void atifs_get_caps(const struct wined3d_adapter *adapter, struct fragmen * The proper fix for this is not to use GL_ATI_fragment_shader on cards newer than the * r200 series and use an ARB or GLSL shader instead */ - caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; + caps->max_blend_stages = WINED3D_MAX_FFP_TEXTURES; caps->max_textures = 6; }
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 91342de6aa5..ba86e9dc2d4 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2529,7 +2529,7 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d_adapter *adapter, caps->PixelShader1xMaxValue = shader_caps.ps_1x_max_value;
caps->TextureOpCaps = fragment_caps.TextureOpCaps; - caps->MaxTextureBlendStages = fragment_caps.MaxTextureBlendStages; + caps->MaxTextureBlendStages = fragment_caps.max_blend_stages; caps->MaxSimultaneousTextures = fragment_caps.max_textures;
caps->MaxUserClipPlanes = vertex_caps.max_user_clip_planes; diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 2662013f2a0..0fa509a2a6d 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -12080,7 +12080,7 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, s | WINED3DTEXOPCAPS_LERP | WINED3DTEXOPCAPS_BUMPENVMAP | WINED3DTEXOPCAPS_BUMPENVMAPLUMINANCE; - caps->MaxTextureBlendStages = WINED3D_MAX_FFP_TEXTURES; + caps->max_blend_stages = WINED3D_MAX_FFP_TEXTURES; caps->max_textures = min(gl_info->limits.samplers[WINED3D_SHADER_TYPE_PIXEL], WINED3D_MAX_FFP_TEXTURES); }
diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index 367041dd412..e49ae68a784 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -747,7 +747,7 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct WINED3DTEXOPCAPS_PREMODULATE */ #endif
- caps->MaxTextureBlendStages = min(WINED3D_MAX_FFP_TEXTURES, gl_info->limits.general_combiners); + caps->max_blend_stages = min(WINED3D_MAX_FFP_TEXTURES, gl_info->limits.general_combiners); caps->max_textures = gl_info->limits.ffp_textures; }
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index fbaa6999326..a492876a093 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5185,7 +5185,7 @@ static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct if (gl_info->supported[ARB_TEXTURE_ENV_DOT3]) caps->TextureOpCaps |= WINED3DTEXOPCAPS_DOTPRODUCT3;
- caps->MaxTextureBlendStages = gl_info->limits.ffp_textures; + caps->max_blend_stages = gl_info->limits.ffp_textures; caps->max_textures = gl_info->limits.ffp_textures; }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 317fc4e5535..5f28b4f6f88 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1997,7 +1997,7 @@ struct fragment_caps DWORD wined3d_caps; DWORD PrimitiveMiscCaps; DWORD TextureOpCaps; - DWORD MaxTextureBlendStages; + unsigned int max_blend_stages; unsigned int max_textures; };
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/wined3d/adapter_gl.c | 2 +- dlls/wined3d/adapter_vk.c | 2 +- dlls/wined3d/arb_program_shader.c | 9 +++++---- dlls/wined3d/ati_fragment_shader.c | 3 ++- dlls/wined3d/glsl_shader.c | 9 +++++---- dlls/wined3d/nvidia_texture_shader.c | 3 ++- dlls/wined3d/shader.c | 2 +- dlls/wined3d/shader_spirv.c | 2 +- dlls/wined3d/state.c | 2 +- dlls/wined3d/utils.c | 3 +-- dlls/wined3d/wined3d_private.h | 8 +++----- 11 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 576430c9284..7ddcb444450 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5211,7 +5211,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = !!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]; d3d_info->vs_clipping = shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING; - d3d_info->shader_color_key = !!(fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_COLOR_KEY); + d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->frag_coord_correction = !!gl_info->supported[ARB_FRAGMENT_COORD_CONVENTIONS]; diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 211071fae83..7cf829201a7 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2341,7 +2341,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = false; d3d_info->vs_clipping = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING); - d3d_info->shader_color_key = !!(fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_COLOR_KEY); + d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->viewport_array_index_any_shader = false; /* VK_EXT_shader_viewport_index_layer */ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index b568a9e68ae..726734f88cd 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -4824,7 +4824,7 @@ static HRESULT shader_arb_alloc(struct wined3d_device *device, const struct wine priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control;
device->vertex_priv = vertex_priv; device->fragment_priv = fragment_priv; @@ -5763,9 +5763,10 @@ static void arbfp_get_caps(const struct wined3d_adapter *adapter, struct fragmen { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE - | WINED3D_FRAGMENT_CAP_COLOR_KEY; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; + caps->srgb_write = true; + caps->color_key = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE | WINED3DTEXOPCAPS_SELECTARG1 | diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index 8606d86516d..f19c2028ca4 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -1269,7 +1269,8 @@ static void atifs_enable(const struct wined3d_context *context, BOOL enable)
static void atifs_get_caps(const struct wined3d_adapter *adapter, struct fragment_caps *caps) { - caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP | WINED3DPMISCCAPS_PERSTAGECONSTANT; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE | diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 0fa509a2a6d..e381e8df7a4 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -11102,7 +11102,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control; priv->legacy_lighting = device->wined3d->flags & WINED3D_LEGACY_FFP_LIGHTING;
device->vertex_priv = vertex_priv; @@ -12050,9 +12050,10 @@ static void glsl_fragment_pipe_get_caps(const struct wined3d_adapter *adapter, s { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = WINED3D_FRAGMENT_CAP_PROJ_CONTROL - | WINED3D_FRAGMENT_CAP_SRGB_WRITE - | WINED3D_FRAGMENT_CAP_COLOR_KEY; + memset(caps, 0, sizeof(*caps)); + caps->proj_control = true; + caps->srgb_write = true; + caps->color_key = true; caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP | WINED3DPMISCCAPS_PERSTAGECONSTANT; caps->TextureOpCaps = WINED3DTEXOPCAPS_DISABLE diff --git a/dlls/wined3d/nvidia_texture_shader.c b/dlls/wined3d/nvidia_texture_shader.c index e49ae68a784..55e2a596dd1 100644 --- a/dlls/wined3d/nvidia_texture_shader.c +++ b/dlls/wined3d/nvidia_texture_shader.c @@ -697,7 +697,8 @@ static void nvrc_fragment_get_caps(const struct wined3d_adapter *adapter, struct { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = 0; + memset(caps, 0, sizeof(*caps)); + caps->PrimitiveMiscCaps = WINED3DPMISCCAPS_TSSARGTEMP;
/* The caps below can be supported but aren't handled yet in utils.c diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index fa9a487edda..9a7919b437b 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1990,7 +1990,7 @@ static HRESULT shader_none_alloc(struct wined3d_device *device, const struct win priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control;
device->vertex_priv = vertex_priv; device->fragment_priv = fragment_priv; diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c index 355eac1ef7b..2d98dd526ef 100644 --- a/dlls/wined3d/shader_spirv.c +++ b/dlls/wined3d/shader_spirv.c @@ -993,7 +993,7 @@ static HRESULT shader_spirv_alloc(struct wined3d_device *device, priv->vertex_pipe = vertex_pipe; priv->fragment_pipe = fragment_pipe; fragment_pipe->get_caps(device->adapter, &fragment_caps); - priv->ffp_proj_control = fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_PROJ_CONTROL; + priv->ffp_proj_control = fragment_caps.proj_control; memset(&priv->bindings, 0, sizeof(priv->bindings));
device->vertex_priv = vertex_priv; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index a492876a093..3f7bcae738c 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5150,7 +5150,7 @@ static void ffp_fragment_get_caps(const struct wined3d_adapter *adapter, struct { const struct wined3d_gl_info *gl_info = &wined3d_adapter_gl_const(adapter)->gl_info;
- caps->wined3d_caps = 0; + memset(caps, 0, sizeof(*caps)); caps->PrimitiveMiscCaps = 0; caps->TextureOpCaps = WINED3DTEXOPCAPS_ADD | WINED3DTEXOPCAPS_ADDSIGNED diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 7e4b7bf2f91..6b611dc0fae 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -3193,8 +3193,7 @@ static BOOL init_format_texture_info(struct wined3d_adapter *adapter, struct win
adapter->fragment_pipe->get_caps(adapter, &fragment_caps); adapter->shader_backend->shader_get_caps(adapter, &shader_caps); - srgb_write = (fragment_caps.wined3d_caps & WINED3D_FRAGMENT_CAP_SRGB_WRITE) - && (shader_caps.wined3d_caps & WINED3D_SHADER_CAP_SRGB_WRITE); + srgb_write = fragment_caps.srgb_write && (shader_caps.wined3d_caps & WINED3D_SHADER_CAP_SRGB_WRITE);
for (i = 0; i < ARRAY_SIZE(format_texture_info); ++i) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 5f28b4f6f88..2e9eab2225d 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1988,17 +1988,15 @@ struct wined3d_state_entry_template unsigned int extension; };
-#define WINED3D_FRAGMENT_CAP_PROJ_CONTROL 0x00000001 -#define WINED3D_FRAGMENT_CAP_SRGB_WRITE 0x00000002 -#define WINED3D_FRAGMENT_CAP_COLOR_KEY 0x00000004 - struct fragment_caps { - DWORD wined3d_caps; DWORD PrimitiveMiscCaps; DWORD TextureOpCaps; unsigned int max_blend_stages; unsigned int max_textures; + bool proj_control; + bool srgb_write; + bool color_key; };
#define GL_EXT_EMUL_ARB_MULTITEXTURE 0x00000001
From: Zebediah Figura zfigura@codeweavers.com
Instead of duplicating multiple members. --- dlls/wined3d/adapter_gl.c | 12 ++++-------- dlls/wined3d/adapter_vk.c | 6 +----- dlls/wined3d/arb_program_shader.c | 11 ++++++++--- dlls/wined3d/ati_fragment_shader.c | 2 +- dlls/wined3d/context_gl.c | 10 +++++----- dlls/wined3d/cs.c | 4 ++-- dlls/wined3d/state.c | 8 ++++---- dlls/wined3d/texture.c | 6 +++--- dlls/wined3d/utils.c | 2 +- dlls/wined3d/wined3d_private.h | 26 ++++++++++++-------------- 10 files changed, 41 insertions(+), 46 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index 7ddcb444450..c3925b7c3d0 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -5171,14 +5171,13 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ const struct wined3d_gl_info *gl_info = &adapter_gl->gl_info; struct wined3d_d3d_info *d3d_info = &adapter_gl->a.d3d_info; struct wined3d_vertex_caps vertex_caps; - struct fragment_caps fragment_caps; struct shader_caps shader_caps; GLfloat f[2];
adapter_gl->a.shader_backend->shader_get_caps(&adapter_gl->a, &shader_caps); adapter_gl->a.vertex_pipe->vp_get_caps(&adapter_gl->a, &vertex_caps); adapter_gl->a.misc_state_template = misc_state_template_gl; - adapter_gl->a.fragment_pipe->get_caps(&adapter_gl->a, &fragment_caps); + adapter_gl->a.fragment_pipe->get_caps(&adapter_gl->a, &d3d_info->ffp_fragment_caps);
d3d_info->limits.vs_version = shader_caps.vs_version; d3d_info->limits.hs_version = shader_caps.hs_version; @@ -5189,9 +5188,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.vs_uniform_count = shader_caps.vs_uniform_count; d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; - d3d_info->limits.ffp_textures = fragment_caps.max_textures; - d3d_info->limits.ffp_blend_stages = fragment_caps.max_blend_stages; - TRACE("Max texture stages: %u.\n", d3d_info->limits.ffp_blend_stages); + TRACE("Max texture stages: %u.\n", d3d_info->ffp_fragment_caps.max_blend_stages); d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; d3d_info->limits.active_light_count = vertex_caps.max_active_lights;
@@ -5211,7 +5208,6 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = !!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT]; d3d_info->vs_clipping = shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING; - d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->frag_coord_correction = !!gl_info->supported[ARB_FRAGMENT_COORD_CONVENTIONS]; @@ -5231,7 +5227,7 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->pbo = !!gl_info->supported[ARB_PIXEL_BUFFER_OBJECT]; d3d_info->subpixel_viewport = gl_info->limits.viewport_subpixel_bits >= 8; d3d_info->fences = wined3d_fence_supported(gl_info); - d3d_info->feature_level = feature_level_from_caps(gl_info, &shader_caps, &fragment_caps); + d3d_info->feature_level = feature_level_from_caps(gl_info, &shader_caps, &d3d_info->ffp_fragment_caps); d3d_info->filling_convention_offset = gl_info->filling_convention_offset; d3d_info->persistent_map = !!gl_info->supported[ARB_BUFFER_STORAGE];
@@ -5365,7 +5361,7 @@ static BOOL wined3d_adapter_gl_init(struct wined3d_adapter_gl *adapter_gl,
wined3d_adapter_gl_init_d3d_info(adapter_gl, wined3d_creation_flags);
- if (!adapter_gl->a.d3d_info.shader_color_key) + if (!adapter_gl->a.d3d_info.ffp_fragment_caps.color_key) { /* We do not want to deal with re-creating immutable texture storage * for colour-keying emulation. */ diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index 7cf829201a7..73807d827e6 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -2294,7 +2294,6 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ struct wined3d_vk_info *vk_info = &adapter_vk->vk_info; struct wined3d_physical_device_info device_info; struct wined3d_vertex_caps vertex_caps; - struct fragment_caps fragment_caps; unsigned int sample_counts_mask; struct shader_caps shader_caps;
@@ -2308,7 +2307,7 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_
adapter_vk->a.shader_backend->shader_get_caps(&adapter_vk->a, &shader_caps); adapter_vk->a.vertex_pipe->vp_get_caps(&adapter_vk->a, &vertex_caps); - adapter_vk->a.fragment_pipe->get_caps(&adapter_vk->a, &fragment_caps); + adapter_vk->a.fragment_pipe->get_caps(&adapter_vk->a, &d3d_info->ffp_fragment_caps);
d3d_info->limits.vs_version = shader_caps.vs_version; d3d_info->limits.hs_version = shader_caps.hs_version; @@ -2319,8 +2318,6 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->limits.vs_uniform_count = shader_caps.vs_uniform_count; d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count; d3d_info->limits.varying_count = shader_caps.varying_count; - d3d_info->limits.ffp_textures = fragment_caps.max_textures; - d3d_info->limits.ffp_blend_stages = fragment_caps.max_blend_stages; d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices; d3d_info->limits.active_light_count = vertex_caps.max_active_lights;
@@ -2341,7 +2338,6 @@ static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_ d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes; d3d_info->ffp_alpha_test = false; d3d_info->vs_clipping = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_VS_CLIPPING); - d3d_info->shader_color_key = fragment_caps.color_key; d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION); d3d_info->shader_output_interpolation = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION); d3d_info->viewport_array_index_any_shader = false; /* VK_EXT_shader_viewport_index_layer */ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 726734f88cd..272a25902d9 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -4267,7 +4267,7 @@ static struct arb_ps_compiled_shader *find_arb_pshader(struct wined3d_context_gl
if (!d3d_info->vs_clipping) shader_data->clipplane_emulation = shader_find_free_input_register(&shader->reg_maps, - d3d_info->limits.ffp_blend_stages - 1); + d3d_info->ffp_fragment_caps.max_blend_stages - 1); else shader_data->clipplane_emulation = ~0U; } @@ -4514,7 +4514,12 @@ static void find_arb_vs_compile_args(const struct wined3d_state *state, { args->ps_signature = ~0; if (!d3d_info->vs_clipping && adapter->fragment_pipe == &arbfp_fragment_pipeline) - args->clip.boolclip.clip_texcoord = ffp_clip_emul(&context_gl->c) ? d3d_info->limits.ffp_blend_stages : 0; + { + if (ffp_clip_emul(&context_gl->c)) + args->clip.boolclip.clip_texcoord = d3d_info->ffp_fragment_caps.max_blend_stages; + else + args->clip.boolclip.clip_texcoord = 0; + } /* Otherwise: Setting boolclip_compare set clip_texcoord to 0 */ }
@@ -7720,7 +7725,7 @@ static BOOL arbfp_blit_supported(enum wined3d_blit_op blit_op, const struct wine switch (blit_op) { case WINED3D_BLIT_OP_COLOR_BLIT_CKEY: - if (!context->d3d_info->shader_color_key) + if (!context->d3d_info->ffp_fragment_caps.color_key) { /* The conversion modifies the alpha channel so the color key might no longer match. */ TRACE("Color keying not supported with converted textures.\n"); diff --git a/dlls/wined3d/ati_fragment_shader.c b/dlls/wined3d/ati_fragment_shader.c index f19c2028ca4..dddf2d45c7d 100644 --- a/dlls/wined3d/ati_fragment_shader.c +++ b/dlls/wined3d/ati_fragment_shader.c @@ -1034,7 +1034,7 @@ static void set_tex_op_atifs(struct wined3d_context *context, const struct wined return; } new_desc->num_textures_used = 0; - for (i = 0; i < d3d_info->limits.ffp_blend_stages; ++i) + for (i = 0; i < d3d_info->ffp_fragment_caps.max_blend_stages; ++i) { if (settings.op[i].cop == WINED3D_TOP_DISABLE) break; diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index b99d6206bd5..a55365cdf12 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -3798,8 +3798,8 @@ static void wined3d_context_gl_map_fixed_function_samplers(struct wined3d_contex
ffu_map = context_gl->c.fixed_function_usage_map;
- if (d3d_info->limits.ffp_textures == d3d_info->limits.ffp_blend_stages - || context_gl->c.lowest_disabled_stage <= d3d_info->limits.ffp_textures) + if (d3d_info->ffp_fragment_caps.max_textures == d3d_info->ffp_fragment_caps.max_blend_stages + || context_gl->c.lowest_disabled_stage <= d3d_info->ffp_fragment_caps.max_textures) { while (ffu_map) { @@ -3843,7 +3843,7 @@ static void wined3d_context_gl_map_psamplers(struct wined3d_context_gl *context_ { wined3d_context_gl_map_stage(context_gl, i, i); context_invalidate_state(&context_gl->c, STATE_SAMPLER(i)); - if (i < d3d_info->limits.ffp_blend_stages) + if (i < d3d_info->ffp_fragment_caps.max_blend_stages) context_invalidate_texture_stage(&context_gl->c, i); } } @@ -4897,7 +4897,7 @@ static void draw_primitive_immediate_mode(struct wined3d_context_gl *context_gl, GL_EXTCALL(glSecondaryColor3fEXT)(0.0f, 0.0f, 0.0f); }
- texture_stages = d3d_info->limits.ffp_blend_stages; + texture_stages = d3d_info->ffp_fragment_caps.max_blend_stages; for (texture_idx = 0; texture_idx < texture_stages; ++texture_idx) { if (!gl_info->supported[ARB_MULTITEXTURE] && texture_idx > 0) @@ -5363,7 +5363,7 @@ void wined3d_context_gl_load_tex_coords(const struct wined3d_context_gl *context unsigned int texture_idx; GLuint bo;
- for (texture_idx = 0; texture_idx < context_gl->c.d3d_info->limits.ffp_blend_stages; ++texture_idx) + for (texture_idx = 0; texture_idx < context_gl->c.d3d_info->ffp_fragment_caps.max_blend_stages; ++texture_idx) { unsigned int coord_idx = state->texture_states[texture_idx][WINED3D_TSS_TEXCOORD_INDEX];
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 50d89615dd3..aa011ea7714 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1490,7 +1490,7 @@ static void wined3d_cs_exec_set_texture(struct wined3d_cs *cs, const void *data) || (new_fmt_caps & WINED3D_FORMAT_CAP_SHADOW) != (old_fmt_caps & WINED3D_FORMAT_CAP_SHADOW)) device_invalidate_state(cs->c.device, STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL));
- if (!prev && op->stage < d3d_info->limits.ffp_blend_stages) + if (!prev && op->stage < d3d_info->ffp_fragment_caps.max_blend_stages) { /* The source arguments for color and alpha ops have different * meanings when a NULL texture is bound, so the COLOR_OP and @@ -1523,7 +1523,7 @@ static void wined3d_cs_exec_set_texture(struct wined3d_cs *cs, const void *data) } }
- if (!op->texture && op->stage < d3d_info->limits.ffp_blend_stages) + if (!op->texture && op->stage < d3d_info->ffp_fragment_caps.max_blend_stages) { device_invalidate_state(cs->c.device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_COLOR_OP)); device_invalidate_state(cs->c.device, STATE_TEXTURESTAGE(op->stage, WINED3D_TSS_ALPHA_OP)); diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 3f7bcae738c..6eaec9acb55 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -1010,7 +1010,7 @@ static void state_texfactor(struct wined3d_context *context, const struct wined3 wined3d_color_from_d3dcolor(&color, state->render_states[WINED3D_RS_TEXTUREFACTOR]);
/* And now the default texture color as well */ - for (i = 0; i < context->d3d_info->limits.ffp_blend_stages; ++i) + for (i = 0; i < context->d3d_info->ffp_fragment_caps.max_blend_stages; ++i) { /* Note the WINED3D_RS value applies to all textures, but GL has one * per texture, so apply it now ready to be used! */ @@ -3626,7 +3626,7 @@ void apply_pixelshader(struct wined3d_context *context, const struct wined3d_sta { /* Disabled the pixel shader - color ops weren't applied while it was * enabled, so re-apply them. */ - for (i = 0; i < context->d3d_info->limits.ffp_blend_stages; ++i) + for (i = 0; i < context->d3d_info->ffp_fragment_caps.max_blend_stages; ++i) { if (!isStateDirty(context, STATE_TEXTURESTAGE(i, WINED3D_TSS_COLOR_OP))) context_apply_state(context, state, STATE_TEXTURESTAGE(i, WINED3D_TSS_COLOR_OP)); @@ -5303,7 +5303,7 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const { unsigned int start, last, i;
- start = STATE_TEXTURESTAGE(d3d_info->limits.ffp_blend_stages, 0); + start = STATE_TEXTURESTAGE(d3d_info->ffp_fragment_caps.max_blend_stages, 0); last = STATE_TEXTURESTAGE(WINED3D_MAX_FFP_TEXTURES - 1, WINED3D_HIGHEST_TEXTURE_STATE); for (i = start; i <= last; ++i) { @@ -5311,7 +5311,7 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const state_table[i].apply = state_undefined; }
- start = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + d3d_info->limits.ffp_blend_stages); + start = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + d3d_info->ffp_fragment_caps.max_blend_stages); last = STATE_TRANSFORM(WINED3D_TS_TEXTURE0 + WINED3D_MAX_FFP_TEXTURES - 1); for (i = start; i <= last; ++i) { diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index e5005cf99fa..08e95db10f5 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -1669,7 +1669,7 @@ void wined3d_texture_load(struct wined3d_texture *texture, else flag = WINED3D_TEXTURE_RGB_VALID;
- if (!d3d_info->shader_color_key + if (!d3d_info->ffp_fragment_caps.color_key && (!(texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY) != !(texture->async.color_key_flags & WINED3D_CKEY_SRC_BLT) || (texture->async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY @@ -2062,7 +2062,7 @@ void wined3d_texture_gl_prepare_texture(struct wined3d_texture_gl *texture_gl, TRACE("texture_gl %p, context_gl %p, srgb %d, format %s.\n", texture_gl, context_gl, srgb, debug_d3dformat(format->id));
- if (!d3d_info->shader_color_key + if (!d3d_info->ffp_fragment_caps.color_key && !(texture_gl->t.async.flags & WINED3D_TEXTURE_ASYNC_COLOR_KEY) != !(texture_gl->t.async.color_key_flags & WINED3D_CKEY_SRC_BLT)) { @@ -5795,7 +5795,7 @@ static bool ffp_blit_supported(enum wined3d_blit_op blit_op, const struct wined3 switch (blit_op) { case WINED3D_BLIT_OP_COLOR_BLIT_CKEY: - if (context->d3d_info->shader_color_key) + if (context->d3d_info->ffp_fragment_caps.color_key) { TRACE("Colour keying requires converted textures.\n"); return false; diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 6b611dc0fae..bc03938e90a 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -6411,7 +6411,7 @@ void wined3d_ffp_get_fs_settings(const struct wined3d_context *context, const st
settings->padding = 0;
- for (i = 0; i < d3d_info->limits.ffp_blend_stages; ++i) + for (i = 0; i < d3d_info->ffp_fragment_caps.max_blend_stages; ++i) { struct wined3d_texture *texture;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 2e9eab2225d..0b72bf298e2 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -180,14 +180,23 @@ struct color_fixup_desc }; #include <poppack.h>
+struct fragment_caps +{ + unsigned int PrimitiveMiscCaps; + unsigned int TextureOpCaps; + unsigned int max_blend_stages; + unsigned int max_textures; + bool proj_control; + bool srgb_write; + bool color_key; +}; + struct wined3d_d3d_limits { unsigned int vs_version, hs_version, ds_version, gs_version, ps_version, cs_version; DWORD vs_uniform_count; DWORD ps_uniform_count; unsigned int varying_count; - unsigned int ffp_textures; - unsigned int ffp_blend_stages; unsigned int ffp_vertex_blend_matrices; unsigned int active_light_count;
@@ -200,6 +209,7 @@ struct wined3d_d3d_limits
struct wined3d_d3d_info { + struct fragment_caps ffp_fragment_caps; struct wined3d_d3d_limits limits; uint32_t wined3d_creation_flags; uint32_t xyzrhw : 1; @@ -207,7 +217,6 @@ struct wined3d_d3d_info uint32_t ffp_generic_attributes : 1; uint32_t ffp_alpha_test : 1; uint32_t vs_clipping : 1; - uint32_t shader_color_key : 1; uint32_t shader_double_precision : 1; uint32_t shader_output_interpolation : 1; uint32_t frag_coord_correction : 1; @@ -1988,17 +1997,6 @@ struct wined3d_state_entry_template unsigned int extension; };
-struct fragment_caps -{ - DWORD PrimitiveMiscCaps; - DWORD TextureOpCaps; - unsigned int max_blend_stages; - unsigned int max_textures; - bool proj_control; - bool srgb_write; - bool color_key; -}; - #define GL_EXT_EMUL_ARB_MULTITEXTURE 0x00000001 #define GL_EXT_EMUL_EXT_FOG_COORD 0x00000002
This merge request was approved by Jan Sikorski.