case WINED3D_CMP_ALWAYS:
return GL_ALWAYS;
default:
- FIXME("Unrecognized compare function %#x.\n", f);
+ {
+ static int once;
+ if (f || !once++) FIXME("Unrecognized compare function %#x.\n", f);
return GL_NONE;
+ }
}
}
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_BLEND_TEXTURE_ALPHA_PM:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_MODULATE_ALPHA_ADD_COLOR:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_MODULATE_COLOR_ADD_ALPHA:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_MODULATE_INVALPHA_ADD_COLOR:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_MODULATE_INVCOLOR_ADD_ALPHA:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_MULTIPLY_ADD:
if (gl_info->supported[ATI_TEXTURE_ENV_COMBINE3])
{
checkGLcall("GL_TEXTURE_ENV, scal_target, 1");
} else
Handled = FALSE;
- break;
+ break;
case WINED3D_TOP_BUMPENVMAP_LUMINANCE:
case WINED3D_TOP_BUMPENVMAP:
if (gl_info->supported[NV_TEXTURE_SHADER2])
{
const struct wined3d_gl_info *gl_info = context->gl_info;
unsigned int mapped_stage = 0;
- unsigned int textureNo = 0;
+ unsigned int textureNo;
for (textureNo = 0; textureNo < context->d3d_info->limits.ffp_blend_stages; ++textureNo)
{
}
static void wined3d_sampler_desc_from_sampler_states(struct wined3d_sampler_desc *desc,
- const struct wined3d_gl_info *gl_info, const DWORD *sampler_states, const struct wined3d_texture *texture)
+ const struct wined3d_context *context, const DWORD *sampler_states, const struct wined3d_texture *texture)
{
union
{
if (texture->flags & WINED3D_TEXTURE_COND_NP2)
{
desc->mip_filter = WINED3D_TEXF_NONE;
- if (gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT])
+ if (context->gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT])
desc->min_filter = WINED3D_TEXF_POINT;
}
}
struct gl_texture *gl_tex;
unsigned int base_level;
- wined3d_sampler_desc_from_sampler_states(&desc, gl_info, sampler_states, texture);
+ wined3d_sampler_desc_from_sampler_states(&desc, context, sampler_states, texture);
wined3d_texture_bind(texture, context, srgb);
if (!gl_info->supported[ARB_SAMPLER_OBJECTS])
{
- wined3d_texture_apply_sampler_desc(texture, &desc, gl_info);
+ wined3d_texture_apply_sampler_desc(texture, &desc, context);
}
else
{
void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
-#if defined(STAGING_CSMT)
- unsigned int rt_fmt_flags = state->fb.render_targets[0]->format_flags;
-#else /* STAGING_CSMT */
- unsigned int rt_fmt_flags = state->fb->render_targets[0]->format_flags;
-#endif /* STAGING_CSMT */
const struct wined3d_gl_info *gl_info = context->gl_info;
TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id);
- if (state->render_states[WINED3D_RS_SRGBWRITEENABLE] && rt_fmt_flags & WINED3DFMT_FLAG_SRGB_WRITE)
+#if defined(STAGING_CSMT)
+ if (needs_srgb_write(context, state, &state->fb))
+#else /* STAGING_CSMT */
+ if (needs_srgb_write(context, state, state->fb))
+#endif /* STAGING_CSMT */
gl_info->gl_ops.gl.p_glEnable(GL_FRAMEBUFFER_SRGB);
else
gl_info->gl_ops.gl.p_glDisable(GL_FRAMEBUFFER_SRGB);