Zebediah Figura : wined3d: Move the destination alpha blend function to wined3d_blend_state.
Alexandre Julliard
julliard at winehq.org
Thu Mar 12 17:09:06 CDT 2020
Module: wine
Branch: master
Commit: 30e44111fee91218a3ab3bbffe9cb2fae368e87f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=30e44111fee91218a3ab3bbffe9cb2fae368e87f
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Tue Mar 10 18:06:18 2020 -0500
wined3d: Move the destination alpha blend function to wined3d_blend_state.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3d11/device.c | 1 -
dlls/d3d11/state.c | 1 +
dlls/wined3d/device.c | 3 +++
dlls/wined3d/state.c | 7 ++-----
include/wine/wined3d.h | 1 +
5 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 42d9ccc3bf..be1b6f6f00 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -741,7 +741,6 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
const D3D11_RENDER_TARGET_BLEND_DESC *d = &desc->RenderTarget[0];
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SEPARATEALPHABLENDENABLE, TRUE);
- wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_DESTBLENDALPHA, d->DestBlendAlpha);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_BLENDOPALPHA, d->BlendOpAlpha);
}
wined3d_device_set_render_state(device->wined3d_device,
diff --git a/dlls/d3d11/state.c b/dlls/d3d11/state.c
index 231978b8a5..aa94bc2569 100644
--- a/dlls/d3d11/state.c
+++ b/dlls/d3d11/state.c
@@ -394,6 +394,7 @@ HRESULT d3d_blend_state_create(struct d3d_device *device, const D3D11_BLEND_DESC
wined3d_desc.dst = desc->RenderTarget[0].DestBlend;
wined3d_desc.op = desc->RenderTarget[0].BlendOp;
wined3d_desc.src_alpha = desc->RenderTarget[0].SrcBlendAlpha;
+ wined3d_desc.dst_alpha = desc->RenderTarget[0].DestBlendAlpha;
/* We cannot fail after creating a wined3d_blend_state object. It
* would lead to double free. */
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 303122c2e0..8ee7f8da34 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3586,6 +3586,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
case WINED3D_RS_DESTBLEND:
case WINED3D_RS_BLENDOP:
case WINED3D_RS_SRCBLENDALPHA:
+ case WINED3D_RS_DESTBLENDALPHA:
set_blend_state = TRUE;
break;
@@ -3664,10 +3665,12 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device,
if (state->rs[WINED3D_RS_SEPARATEALPHABLENDENABLE])
{
desc.src_alpha = state->rs[WINED3D_RS_SRCBLENDALPHA];
+ desc.dst_alpha = state->rs[WINED3D_RS_DESTBLENDALPHA];
}
else
{
desc.src_alpha = state->rs[WINED3D_RS_SRCBLEND];
+ desc.dst_alpha = state->rs[WINED3D_RS_DESTBLEND];
}
if (wined3d_bitmap_is_set(changed->renderState, WINED3D_RS_BLENDFACTOR))
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index e0cbf82e14..17adf984c5 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -573,8 +573,7 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
return;
}
- gl_blend_from_d3d(&src_blend_alpha, &dst_blend_alpha, b->desc.src_alpha,
- state->render_states[WINED3D_RS_DESTBLENDALPHA], rt_format);
+ gl_blend_from_d3d(&src_blend_alpha, &dst_blend_alpha, b->desc.src_alpha, b->desc.dst_alpha, rt_format);
GL_EXTCALL(glBlendFuncSeparate(src_blend, dst_blend, src_blend_alpha, dst_blend_alpha));
checkGLcall("glBlendFuncSeparate");
@@ -4502,8 +4501,6 @@ const struct wined3d_state_entry_template misc_state_template[] =
{ STATE_STREAM_OUTPUT, { STATE_STREAM_OUTPUT, state_so_warn, }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_EDGEANTIALIAS), { STATE_RENDER(WINED3D_RS_EDGEANTIALIAS), state_line_antialias}, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_SEPARATEALPHABLENDENABLE), { STATE_BLEND, NULL }, WINED3D_GL_EXT_NONE },
- { STATE_RENDER(WINED3D_RS_DESTBLENDALPHA), { STATE_BLEND, NULL }, WINED3D_GL_EXT_NONE },
- { STATE_RENDER(WINED3D_RS_DESTBLENDALPHA), { STATE_BLEND, NULL }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_BLENDOPALPHA), { STATE_BLEND, NULL }, WINED3D_GL_EXT_NONE },
{ STATE_BLEND, { STATE_BLEND, blend }, WINED3D_GL_EXT_NONE },
{ STATE_BLEND_FACTOR, { STATE_BLEND_FACTOR, state_blend_factor }, EXT_BLEND_COLOR },
@@ -5421,7 +5418,7 @@ static void validate_state_table(struct wined3d_state_entry *state_table)
{174, 177},
{193, 193},
{195, 197},
- {207, 207},
+ {207, 208},
{ 0, 0},
};
static const DWORD simple_states[] =
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 42dd078ca6..aa1b30556b 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2034,6 +2034,7 @@ struct wined3d_blend_state_desc
enum wined3d_blend dst;
enum wined3d_blend_op op;
enum wined3d_blend src_alpha;
+ enum wined3d_blend dst_alpha;
};
struct wined3d_rasterizer_state_desc
More information about the wine-cvs
mailing list