=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Introduce gl_blend_from_d3d() helper function.
Alexandre Julliard
julliard at winehq.org
Tue Aug 9 11:11:05 CDT 2016
Module: wine
Branch: master
Commit: db5211d36fd4a8807ece523deb666e6bd2a0c2b0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=db5211d36fd4a8807ece523deb666e6bd2a0c2b0
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Mon Aug 8 16:52:28 2016 +0200
wined3d: Introduce gl_blend_from_d3d() helper function.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wined3d/state.c | 83 +++++++++++++++++++++++-----------------------------
1 file changed, 37 insertions(+), 46 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 54ce2ee..630a745 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -412,12 +412,35 @@ static GLenum gl_blend_factor(enum wined3d_blend factor, const struct wined3d_fo
}
}
+static void gl_blend_from_d3d(GLenum *src_blend, GLenum *dst_blend,
+ enum wined3d_blend d3d_src_blend, enum wined3d_blend d3d_dst_blend,
+ const struct wined3d_format *rt_format)
+{
+ /* WINED3D_BLEND_BOTHSRCALPHA and WINED3D_BLEND_BOTHINVSRCALPHA are legacy
+ * source blending values which are still valid up to d3d9. They should
+ * not occur as dest blend values. */
+ if (d3d_src_blend == WINED3D_BLEND_BOTHSRCALPHA)
+ {
+ *src_blend = GL_SRC_ALPHA;
+ *dst_blend = GL_ONE_MINUS_SRC_ALPHA;
+ }
+ else if (d3d_src_blend == WINED3D_BLEND_BOTHINVSRCALPHA)
+ {
+ *src_blend = GL_ONE_MINUS_SRC_ALPHA;
+ *dst_blend = GL_SRC_ALPHA;
+ }
+ else
+ {
+ *src_blend = gl_blend_factor(d3d_src_blend, rt_format);
+ *dst_blend = gl_blend_factor(d3d_dst_blend, rt_format);
+ }
+}
+
static void state_blend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
const struct wined3d_gl_info *gl_info = context->gl_info;
const struct wined3d_format *rt_format;
- enum wined3d_blend d3d_blend;
- GLenum srcBlend, dstBlend;
+ GLenum src_blend, dst_blend;
unsigned int rt_fmt_flags;
if (!state->fb->render_targets[0])
@@ -458,34 +481,18 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
return;
};
- /* WINED3D_BLEND_BOTHSRCALPHA and WINED3D_BLEND_BOTHINVSRCALPHA are legacy
- * source blending values which are still valid up to d3d9. They should
- * not occur as dest blend values. */
- d3d_blend = state->render_states[WINED3D_RS_SRCBLEND];
- if (d3d_blend == WINED3D_BLEND_BOTHSRCALPHA)
- {
- srcBlend = GL_SRC_ALPHA;
- dstBlend = GL_ONE_MINUS_SRC_ALPHA;
- }
- else if (d3d_blend == WINED3D_BLEND_BOTHINVSRCALPHA)
- {
- srcBlend = GL_ONE_MINUS_SRC_ALPHA;
- dstBlend = GL_SRC_ALPHA;
- }
- else
- {
- srcBlend = gl_blend_factor(d3d_blend, rt_format);
- dstBlend = gl_blend_factor(state->render_states[WINED3D_RS_DESTBLEND], rt_format);
- }
+ gl_blend_from_d3d(&src_blend, &dst_blend,
+ state->render_states[WINED3D_RS_SRCBLEND],
+ state->render_states[WINED3D_RS_DESTBLEND], rt_format);
if (state->render_states[WINED3D_RS_EDGEANTIALIAS]
|| state->render_states[WINED3D_RS_ANTIALIASEDLINEENABLE])
{
gl_info->gl_ops.gl.p_glEnable(GL_LINE_SMOOTH);
checkGLcall("glEnable(GL_LINE_SMOOTH)");
- if (srcBlend != GL_SRC_ALPHA)
+ if (src_blend != GL_SRC_ALPHA)
WARN("WINED3D_RS_EDGEANTIALIAS enabled, but unexpected src blending param.\n");
- if (dstBlend != GL_ONE_MINUS_SRC_ALPHA && dstBlend != GL_ONE)
+ if (dst_blend != GL_ONE_MINUS_SRC_ALPHA && dst_blend != GL_ONE)
WARN("WINED3D_RS_EDGEANTIALIAS enabled, but unexpected dst blending param.\n");
}
else
@@ -500,7 +507,7 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
if (state->render_states[WINED3D_RS_SEPARATEALPHABLENDENABLE])
{
- GLenum srcBlendAlpha, dstBlendAlpha;
+ GLenum src_blend_alpha, dst_blend_alpha;
/* Separate alpha blending requires GL_EXT_blend_function_separate, so make sure it is around */
if (!context->gl_info->supported[EXT_BLEND_FUNC_SEPARATE])
@@ -509,33 +516,17 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
return;
}
- /* WINED3D_BLEND_BOTHSRCALPHA and WINED3D_BLEND_BOTHINVSRCALPHA are legacy
- * source blending values which are still valid up to d3d9. They should
- * not occur as dest blend values. */
- d3d_blend = state->render_states[WINED3D_RS_SRCBLENDALPHA];
- if (d3d_blend == WINED3D_BLEND_BOTHSRCALPHA)
- {
- srcBlendAlpha = GL_SRC_ALPHA;
- dstBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
- }
- else if (d3d_blend == WINED3D_BLEND_BOTHINVSRCALPHA)
- {
- srcBlendAlpha = GL_ONE_MINUS_SRC_ALPHA;
- dstBlendAlpha = GL_SRC_ALPHA;
- }
- else
- {
- srcBlendAlpha = gl_blend_factor(d3d_blend, rt_format);
- dstBlendAlpha = gl_blend_factor(state->render_states[WINED3D_RS_DESTBLENDALPHA], rt_format);
- }
+ gl_blend_from_d3d(&src_blend_alpha, &dst_blend_alpha,
+ state->render_states[WINED3D_RS_SRCBLENDALPHA],
+ state->render_states[WINED3D_RS_DESTBLENDALPHA], rt_format);
- GL_EXTCALL(glBlendFuncSeparate(srcBlend, dstBlend, srcBlendAlpha, dstBlendAlpha));
+ GL_EXTCALL(glBlendFuncSeparate(src_blend, dst_blend, src_blend_alpha, dst_blend_alpha));
checkGLcall("glBlendFuncSeparate");
}
else
{
- TRACE("glBlendFunc src=%x, dst=%x\n", srcBlend, dstBlend);
- gl_info->gl_ops.gl.p_glBlendFunc(srcBlend, dstBlend);
+ TRACE("glBlendFunc src=%x, dst=%x.\n", src_blend, dst_blend);
+ gl_info->gl_ops.gl.p_glBlendFunc(src_blend, dst_blend);
checkGLcall("glBlendFunc");
}
More information about the wine-cvs
mailing list