Rebase against 0b49495b8ed9e725b47b7ca791312a2a3c3e3c97.

This commit is contained in:
Sebastian Lackner 2016-08-05 02:43:06 +02:00
parent 43c1f6218c
commit 89e2d01a1d
9 changed files with 102 additions and 299 deletions

View File

@ -1,41 +0,0 @@
From 337b1e60966bf902e79d69981c1bf49bf8be6192 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 31 Jul 2016 00:01:24 +0200
Subject: xaudio2_7: Only declare debug channel when needed.
---
dlls/xaudio2_7/compat.c | 2 ++
dlls/xaudio2_7/x3daudio.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/dlls/xaudio2_7/compat.c b/dlls/xaudio2_7/compat.c
index 516d6c2..b9e720f 100644
--- a/dlls/xaudio2_7/compat.c
+++ b/dlls/xaudio2_7/compat.c
@@ -101,7 +101,9 @@
#include "wine/debug.h"
+#if XAUDIO2_VER <= 7
WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
+#endif
/* BEGIN IXAudio2SourceVoice */
#if XAUDIO2_VER == 0
diff --git a/dlls/xaudio2_7/x3daudio.c b/dlls/xaudio2_7/x3daudio.c
index a182852..58f7062 100644
--- a/dlls/xaudio2_7/x3daudio.c
+++ b/dlls/xaudio2_7/x3daudio.c
@@ -23,7 +23,9 @@
#include "wine/debug.h"
+#if XAUDIO2_VER >= 8 || defined X3DAUDIO1_VER
WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
+#endif
#ifdef X3DAUDIO1_VER
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, void *pReserved)
--
2.9.0

View File

@ -1,18 +1,18 @@
From 8113f7a7b3c214b5c9d07a4b6f5b0d97d6f576f1 Mon Sep 17 00:00:00 2001
From ddc5f6fd9dde7a5cdde0be59d4a9db9e086400a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 12 Jul 2014 23:58:19 +0200
Subject: comctl32: Preserve custom colors between subitems. (v2)
---
dlls/comctl32/listview.c | 20 +++++++++-----------
dlls/comctl32/tests/listview.c | 27 ++++++++++++++++++++++-----
2 files changed, 31 insertions(+), 16 deletions(-)
dlls/comctl32/tests/listview.c | 23 ++++++++++++++++++++---
2 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c
index 784ca7b..2c4051d 100644
index 56e2563..a35f5f2 100644
--- a/dlls/comctl32/listview.c
+++ b/dlls/comctl32/listview.c
@@ -1054,7 +1054,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRA
@@ -1072,7 +1072,7 @@ static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRA
COLORREF backcolor, textcolor;
/* apparently, for selected items, we have to override the returned values */
@ -21,7 +21,7 @@ index 784ca7b..2c4051d 100644
{
if (lpnmlvcd->nmcd.uItemState & CDIS_SELECTED)
{
@@ -4767,6 +4767,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
@@ -4784,6 +4784,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
while (iterator_next(subitems))
{
DWORD subitemstage = CDRF_DODEFAULT;
@ -29,7 +29,7 @@ index 784ca7b..2c4051d 100644
/* We need to query for each subitem, item's data (subitem == 0) is already here at this point */
if (subitems->nItem)
@@ -4793,19 +4794,16 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
@@ -4810,19 +4811,16 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERAT
if (cdsubitemmode & CDRF_NOTIFYSUBITEMDRAW)
subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPREPAINT, &nmlvcd);
@ -57,22 +57,18 @@ index 784ca7b..2c4051d 100644
if (subitemstage & CDRF_NOTIFYPOSTPAINT)
subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPOSTPAINT, &nmlvcd);
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index ed5d9f9..64cc214 100644
index ec87e3b..eb4db0e 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -1823,14 +1823,18 @@ static LRESULT WINAPI cd_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
@@ -1830,12 +1830,16 @@ static LRESULT WINAPI cd_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
clr = GetBkColor(nmlvcd->nmcd.hdc);
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
- if (nmlvcd->iSubItem)
- todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
- else
- todo_wine_if(nmlvcd->iSubItem)
- ok(clr == c0ffee, "clr=%.8x\n", clr);
+ if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS))
+ {
+ if (nmlvcd->iSubItem)
+ todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
+ else
+ todo_wine_if(nmlvcd->iSubItem)
+ ok(clr == c0ffee, "clr=%.8x\n", clr);
+ }
return CDRF_NOTIFYPOSTPAINT;
@ -84,7 +80,7 @@ index ed5d9f9..64cc214 100644
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
return CDRF_DODEFAULT;
@@ -1846,6 +1850,7 @@ static void test_customdraw(void)
@@ -1851,6 +1855,7 @@ static void test_customdraw(void)
{
HWND hwnd;
WNDPROC oldwndproc;
@ -92,7 +88,7 @@ index ed5d9f9..64cc214 100644
hwnd = create_listview_control(LVS_REPORT);
@@ -1865,6 +1870,18 @@ static void test_customdraw(void)
@@ -1870,6 +1875,18 @@ static void test_customdraw(void)
UpdateWindow(hwnd);
ok_sequence(sequences, PARENT_CD_SEQ_INDEX, parent_report_cd_seq, "parent customdraw, LVS_REPORT", FALSE);
@ -112,5 +108,5 @@ index ed5d9f9..64cc214 100644
hwnd = create_listview_control(LVS_LIST);
--
2.8.0
2.9.0

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "a65718a3e7b95443a82dafd5d2c9cded961404a6"
echo "0b49495b8ed9e725b47b7ca791312a2a3c3e3c97"
}
# Show version information
@ -2335,9 +2335,8 @@ fi
# | dlls/rpcrt4/tests/ndr_marshall.c, dlls/scrrun/tests/dictionary.c, dlls/shell32/tests/appbar.c,
# | dlls/shell32/tests/shelldispatch.c, dlls/shell32/tests/shellole.c, dlls/shlwapi/tests/ordinal.c,
# | dlls/user32/tests/input.c, dlls/user32/tests/menu.c, dlls/vbscript/vbdisp.c, dlls/winealsa.drv/mmdevdrv.c,
# | dlls/wined3d/glsl_shader.c, dlls/winhttp/tests/winhttp.c, dlls/wshom.ocx/tests/wshom.c, dlls/xaudio2_7/compat.c,
# | dlls/xaudio2_7/x3daudio.c, include/d3dtypes.h, include/wine/list.h, include/wine/rbtree.h, include/winnt.h,
# | server/request.c, server/sock.c, tools/makedep.c
# | dlls/wined3d/glsl_shader.c, dlls/winhttp/tests/winhttp.c, dlls/wshom.ocx/tests/wshom.c, include/d3dtypes.h,
# | include/wine/list.h, include/wine/rbtree.h, include/winnt.h, server/request.c, server/sock.c, tools/makedep.c
# |
if test "$enable_Compiler_Warnings" -eq 1; then
patch_apply Compiler_Warnings/0001-comctl32-Avoid-misleading-indentation-warnings.patch
@ -2352,7 +2351,6 @@ if test "$enable_Compiler_Warnings" -eq 1; then
patch_apply Compiler_Warnings/0011-user32-tests-Avoid-misleading-indentation-warnings.patch
patch_apply Compiler_Warnings/0012-winhttp-tests-Avoid-misleading-indentation-warnings.patch
patch_apply Compiler_Warnings/0013-wshom.ocx-tests-Avoid-misleading-indentation-warning.patch
patch_apply Compiler_Warnings/0014-xaudio2_7-Only-declare-debug-channel-when-needed.patch
patch_apply Compiler_Warnings/0015-include-Avoid-shift-overflow-warning.patch
patch_apply Compiler_Warnings/0017-server-Workaround-duplicate-condition-warning-of-GCC.patch
patch_apply Compiler_Warnings/0018-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch
@ -2382,7 +2380,6 @@ if test "$enable_Compiler_Warnings" -eq 1; then
echo '+ { "Sebastian Lackner", "user32/tests: Avoid misleading indentation warnings.", 1 },';
echo '+ { "Sebastian Lackner", "winhttp/tests: Avoid misleading indentation warnings.", 1 },';
echo '+ { "Sebastian Lackner", "wshom.ocx/tests: Avoid misleading indentation warnings.", 1 },';
echo '+ { "Sebastian Lackner", "xaudio2_7: Only declare debug channel when needed.", 1 },';
echo '+ { "Sebastian Lackner", "include: Avoid shift overflow warning.", 1 },';
echo '+ { "Sebastian Lackner", "server: Workaround duplicate condition warning of GCC 6.", 1 },';
echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },';

View File

@ -1,4 +1,4 @@
From 39a2802a5a07da378f07e6e56b9ba89e297390fb Mon Sep 17 00:00:00 2001
From c96b9ddd5a522622943774e1df2d58084e483e7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 29 Oct 2015 17:33:23 +0100
Subject: wined3d: Start to move surface/volume_load_location into the texture.
@ -9,41 +9,9 @@ FIXME 2: This breaks some rtv->resource != buffer checks.
wined3d_surface_prepare will be moved into the texture a lot later, after
moving allocation of all locations (including sysmem) there.
---
dlls/wined3d/swapchain.c | 7 ++++---
dlls/wined3d/texture.c | 1 +
2 files changed, 5 insertions(+), 3 deletions(-)
dlls/wined3d/texture.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 8f93095..306c499 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -327,7 +327,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain,
if (texture->resource.multisample_type)
{
location = WINED3D_LOCATION_RB_RESOLVED;
- surface_load_location(back_buffer, context, location);
+ wined3d_texture_load_location(texture, 0, context, location);
}
context_apply_fbo_state_blit(context, GL_READ_FRAMEBUFFER, back_buffer, NULL, location);
@@ -556,14 +556,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
*/
if (!swapchain->render_to_fbo && render_to_fbo && wined3d_settings.offscreen_rendering_mode == ORM_FBO)
{
- surface_load_location(back_buffer, context, WINED3D_LOCATION_TEXTURE_RGB);
+ wined3d_texture_load_location(back_buffer->container, 0, context, WINED3D_LOCATION_TEXTURE_RGB);
wined3d_texture_invalidate_location(back_buffer->container, 0, WINED3D_LOCATION_DRAWABLE);
swapchain->render_to_fbo = TRUE;
swapchain_update_draw_bindings(swapchain);
}
else
{
- surface_load_location(back_buffer, context, back_buffer->container->resource.draw_binding);
+ wined3d_texture_load_location(swapchain->back_buffers[0], 0, context,
+ swapchain->back_buffers[0]->resource.draw_binding);
}
if (swapchain->render_to_fbo)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 873d72b..0acc74f 100644
--- a/dlls/wined3d/texture.c

View File

@ -1,14 +1,13 @@
From 0de3c15670f2fa6a665f75a77ae522456372ed9b Mon Sep 17 00:00:00 2001
From 6930278bb1ba99c7cfcbd1cfaef73c8034cc48a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Tue, 17 Nov 2015 23:13:29 -0800
Subject: wined3d: Call texture_load_location instead of surface_load_location.
---
dlls/wined3d/device.c | 9 ++++++---
dlls/wined3d/surface.c | 8 +++++---
dlls/wined3d/swapchain.c | 8 ++++----
dlls/wined3d/texture.c | 2 +-
4 files changed, 16 insertions(+), 11 deletions(-)
dlls/wined3d/device.c | 9 ++++++---
dlls/wined3d/surface.c | 5 +++--
dlls/wined3d/texture.c | 2 +-
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index e052557..604be94 100644
@ -42,7 +41,7 @@ index e052557..604be94 100644
}
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 859f481..6d5b22b 100644
index 2796590..5dfdcfd 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2447,7 +2447,7 @@ static void surface_blt_to_drawable(const struct wined3d_device *device,
@ -64,45 +63,6 @@ index 859f481..6d5b22b 100644
}
if (texture->resource.usage & WINED3DUSAGE_DEPTHSTENCIL)
@@ -4380,7 +4381,8 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
if (!wined3d_resource_is_offscreen(&dst_texture->resource))
{
struct wined3d_context *context = context_acquire(device, dst_surface);
- surface_load_location(dst_surface, context, dst_texture->resource.draw_binding);
+ wined3d_texture_load_location(dst_texture, surface_get_sub_resource_idx(dst_surface),
+ context, dst_texture->resource.draw_binding);
context_release(context);
}
return WINED3D_OK;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 4d7f60a..6f3b4d8 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -464,7 +464,7 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct
sub_resource = &texture->sub_resources[0];
if (!(sub_resource->locations & supported_locations))
- surface_load_location(sub_resource->u.surface, context, texture->resource.draw_binding);
+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding);
texture_prev->texture_rgb = texture->texture_rgb;
texture_prev->rb_multisample = texture->rb_multisample;
@@ -644,12 +644,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
static void swapchain_gl_frontbuffer_updated(struct wined3d_swapchain *swapchain)
{
- struct wined3d_surface *surface;
+ struct wined3d_texture *texture = swapchain->front_buffer;
+ struct wined3d_surface *surface = texture->sub_resources[0].u.surface;
struct wined3d_context *context;
- surface = swapchain->front_buffer->sub_resources[0].u.surface;
context = context_acquire(swapchain->device, surface);
- surface_load_location(surface, context, surface->container->resource.draw_binding);
+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding);
context_release(context);
SetRectEmpty(&swapchain->front_buffer_update);
}
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 0acc74f..2d155cb 100644
--- a/dlls/wined3d/texture.c

View File

@ -1,4 +1,4 @@
From c1c29e14d5b9efe39db225334885e4b4703ff72d Mon Sep 17 00:00:00 2001
From 8f5ab38fe34d5b7da764d021d8389661f6815956 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 20 Dec 2012 13:09:17 +0100
Subject: wined3d: Move the framebuffer into wined3d_state
@ -20,7 +20,7 @@ Subject: wined3d: Move the framebuffer into wined3d_state
13 files changed, 192 insertions(+), 133 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 3f551b6..05ce745 100644
index f877149..1ffe498 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -704,7 +704,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv,
@ -42,7 +42,7 @@ index 3f551b6..05ce745 100644
}
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 8b12a39..8946676 100644
index f5311af..d276ee8 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1699,6 +1699,11 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
@ -73,7 +73,7 @@ index 8b12a39..8946676 100644
HeapFree(GetProcessHeap(), 0, context->draw_buffers);
HeapFree(GetProcessHeap(), 0, context->blit_targets);
device_context_remove(device, context);
@@ -2576,7 +2583,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2577,7 +2584,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
DWORD rt_mask = 0, *cur_mask;
UINT i;
@ -82,7 +82,7 @@ index 8b12a39..8946676 100644
|| rt_count != gl_info->limits.buffers)
{
if (!context_validate_rt_config(rt_count, rts, dsv))
@@ -2621,6 +2628,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2622,6 +2629,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
rt_mask = context_generate_rt_mask_no_fbo(context,
rt_count ? wined3d_rendertarget_view_get_surface(rts[0])->container : NULL);
}
@ -91,7 +91,7 @@ index 8b12a39..8946676 100644
}
else if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
&& (!rt_count || wined3d_resource_is_offscreen(rts[0]->resource)))
@@ -2678,7 +2687,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2679,7 +2688,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const struct wined3d_state *state)
{
@ -100,7 +100,7 @@ index 8b12a39..8946676 100644
struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL];
DWORD rt_mask, rt_mask_bits;
unsigned int i;
@@ -2708,7 +2717,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
@@ -2709,7 +2718,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
void context_state_fb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
DWORD rt_mask = find_draw_buffers_mask(context, state);
@ -109,7 +109,7 @@ index 8b12a39..8946676 100644
DWORD *cur_mask;
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
@@ -2739,6 +2748,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat
@@ -2740,6 +2749,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat
context_apply_draw_buffers(context, rt_mask);
*cur_mask = rt_mask;
}
@ -118,7 +118,7 @@ index 8b12a39..8946676 100644
}
static void context_map_stage(struct wined3d_context *context, DWORD stage, DWORD unit)
@@ -3370,7 +3381,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context,
@@ -3371,7 +3382,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context,
const struct wined3d_device *device, const struct wined3d_state *state)
{
const struct StateEntry *state_table = context->state_table;
@ -128,7 +128,7 @@ index 8b12a39..8946676 100644
WORD map;
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 6569b97..0553d4a 100644
index c9c9b9c..446c642 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -328,19 +328,19 @@ static void wined3d_cs_exec_clear(struct wined3d_cs *cs, const void *data)
@ -281,10 +281,10 @@ index 6569b97..0553d4a 100644
HeapFree(GetProcessHeap(), 0, cs);
}
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 98a934c..6e118dc 100644
index 604be94..e7f0a67 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -987,7 +987,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi
@@ -995,7 +995,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi
BOOL ds_enable = !!swapchain->desc.enable_auto_depth_stencil;
unsigned int i;
@ -293,7 +293,7 @@ index 98a934c..6e118dc 100644
{
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@@ -1005,7 +1005,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
@@ -1013,7 +1013,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
struct wined3d_swapchain_desc *swapchain_desc)
{
static const struct wined3d_color black = {0.0f, 0.0f, 0.0f, 0.0f};
@ -301,7 +301,7 @@ index 98a934c..6e118dc 100644
struct wined3d_swapchain *swapchain = NULL;
struct wined3d_context *context;
DWORD clear_flags = 0;
@@ -1018,9 +1017,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
@@ -1026,9 +1025,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
if (device->wined3d->flags & WINED3D_NO3D)
return WINED3DERR_INVALIDCALL;
@ -311,7 +311,7 @@ index 98a934c..6e118dc 100644
if (FAILED(hr = device->shader_backend->shader_alloc_private(device,
device->adapter->vertex_pipe, device->adapter->fragment_pipe)))
{
@@ -1095,7 +1091,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
@@ -1103,7 +1099,6 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
return WINED3D_OK;
err_out:
@ -319,7 +319,7 @@ index 98a934c..6e118dc 100644
HeapFree(GetProcessHeap(), 0, device->swapchains);
device->swapchain_count = 0;
if (device->back_buffer_view)
@@ -1173,8 +1168,25 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
@@ -1181,8 +1176,25 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
if (device->cursor_texture)
wined3d_texture_decref(device->cursor_texture);
@ -345,7 +345,7 @@ index 98a934c..6e118dc 100644
/* Unload resources */
LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
{
@@ -1205,37 +1217,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
@@ -1213,37 +1225,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
* destroy the context. */
context_release(context);
@ -383,7 +383,7 @@ index 98a934c..6e118dc 100644
if (device->back_buffer_view)
{
wined3d_rendertarget_view_decref(device->back_buffer_view);
@@ -1253,9 +1234,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
@@ -1261,9 +1242,6 @@ HRESULT CDECL wined3d_device_uninit_3d(struct wined3d_device *device)
device->swapchains = NULL;
device->swapchain_count = 0;
@ -393,7 +393,7 @@ index 98a934c..6e118dc 100644
device->d3d_initialized = FALSE;
return WINED3D_OK;
@@ -2072,7 +2050,7 @@ static void resolve_depth_buffer(struct wined3d_state *state)
@@ -2080,7 +2058,7 @@ static void resolve_depth_buffer(struct wined3d_state *state)
|| !(dst_texture->resource.format_flags & WINED3DFMT_FLAG_DEPTH))
return;
@ -402,7 +402,7 @@ index 98a934c..6e118dc 100644
return;
if (src_view->resource->type == WINED3D_RTYPE_BUFFER)
{
@@ -3467,6 +3445,8 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device)
@@ -3475,6 +3453,8 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device)
HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_count,
const RECT *rects, DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil)
{
@ -411,7 +411,7 @@ index 98a934c..6e118dc 100644
TRACE("device %p, rect_count %u, rects %p, flags %#x, color %s, depth %.8e, stencil %u.\n",
device, rect_count, rects, flags, debug_color(color), depth, stencil);
@@ -3478,7 +3458,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
@@ -3486,7 +3466,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
if (flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL))
{
@ -420,7 +420,7 @@ index 98a934c..6e118dc 100644
if (!ds)
{
WARN("Clearing depth and/or stencil without a depth stencil buffer attached, returning WINED3DERR_INVALIDCALL\n");
@@ -3487,8 +3467,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
@@ -3495,8 +3475,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
}
else if (flags & WINED3DCLEAR_TARGET)
{
@ -431,7 +431,7 @@ index 98a934c..6e118dc 100644
{
WARN("Silently ignoring depth and target clear with mismatching sizes\n");
return WINED3D_OK;
@@ -3804,8 +3784,8 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
@@ -3812,8 +3792,8 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
if (state->render_states[WINED3D_RS_ZENABLE] || state->render_states[WINED3D_RS_ZWRITEENABLE]
|| state->render_states[WINED3D_RS_STENCILENABLE])
{
@ -442,7 +442,7 @@ index 98a934c..6e118dc 100644
if (ds && rt && (ds->width < rt->width || ds->height < rt->height))
{
@@ -4263,20 +4243,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co
@@ -4271,20 +4251,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co
return NULL;
}
@ -466,7 +466,7 @@ index 98a934c..6e118dc 100644
TRACE("device %p, view_idx %u, view %p, set_viewport %#x.\n",
device, view_idx, view, set_viewport);
@@ -4313,13 +4294,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
@@ -4321,13 +4302,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
}
@ -482,7 +482,7 @@ index 98a934c..6e118dc 100644
wined3d_cs_emit_set_rendertarget_view(device->cs, view_idx, view);
/* Release after the assignment, to prevent device_resource_released()
* from seeing the surface as still in use. */
@@ -4331,18 +4312,19 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
@@ -4339,18 +4320,19 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
void CDECL wined3d_device_set_depth_stencil_view(struct wined3d_device *device, struct wined3d_rendertarget_view *view)
{
@ -504,7 +504,7 @@ index 98a934c..6e118dc 100644
wined3d_rendertarget_view_incref(view);
wined3d_cs_emit_set_depth_stencil_view(device->cs, view);
if (prev)
@@ -4705,10 +4687,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4710,10 +4692,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
wined3d_texture_decref(device->cursor_texture);
device->cursor_texture = NULL;
}
@ -516,7 +516,7 @@ index 98a934c..6e118dc 100644
{
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@@ -4717,6 +4698,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4722,6 +4703,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
}
wined3d_device_set_depth_stencil_view(device, NULL);
@ -528,7 +528,7 @@ index 98a934c..6e118dc 100644
if (device->onscreen_depth_stencil)
{
wined3d_texture_decref(device->onscreen_depth_stencil->container);
@@ -4942,27 +4928,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4888,27 +4874,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
if (device->d3d_initialized)
delete_opengl_contexts(device, swapchain);
@ -564,7 +564,7 @@ index 98a934c..6e118dc 100644
wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect);
}
@@ -5052,11 +5039,11 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso
@@ -4998,11 +4985,11 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@ -578,7 +578,7 @@ index 98a934c..6e118dc 100644
ERR("Resource %p is still in use as depth/stencil buffer.\n", resource);
switch (type)
@@ -5192,8 +5179,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
@@ -5138,8 +5125,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
device->blitter = adapter->blitter;
@ -594,7 +594,7 @@ index 98a934c..6e118dc 100644
if (!(device->cs = wined3d_cs_create(device)))
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index dd82654..dd0f1d9 100644
index e5b30db..1188009 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -412,7 +412,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@ -829,10 +829,10 @@ index 2fbfa2c..bb3c0cc 100644
if (type == WINED3D_SBT_RECORDED)
return WINED3D_OK;
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index af7a92a..1b32ad0 100644
index 3673fe9..5695a53 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2568,7 +2568,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE
@@ -2566,7 +2566,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE
{
struct wined3d_texture *dst_texture = dst_surface->container;
struct wined3d_device *device = dst_texture->resource.device;
@ -842,13 +842,13 @@ index af7a92a..1b32ad0 100644
struct wined3d_texture *src_texture;
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index cf3cb95..783a174 100644
index 041e289..c2db0e4 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -481,7 +481,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -488,7 +488,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
const RECT *src_rect, const RECT *dst_rect, DWORD flags)
{
struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface;
struct wined3d_texture *back_buffer = swapchain->back_buffers[0];
- const struct wined3d_fb_state *fb = &swapchain->device->fb;
+ const struct wined3d_fb_state *fb = &swapchain->device->state.fb;
const struct wined3d_gl_info *gl_info;
@ -877,7 +877,7 @@ index 93b610d..288c82e 100644
|| !state->render_states[WINED3D_RS_CLIPPLANEENABLE])
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 63534ce..5e6cbda 100644
index 4b4aecc..032d236 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1450,6 +1450,36 @@ struct wined3d_timestamp_query

View File

@ -1,4 +1,4 @@
From 2b155ebd27175664ee670e0213dff7295c3fbdff Mon Sep 17 00:00:00 2001
From 896c9a5cbbf43da7bafda1c00169cb6b67c1a32a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 4 Apr 2013 14:52:24 +0200
Subject: wined3d: Pass the depth stencil to swapchain->present
@ -26,7 +26,7 @@ index 095fa0e..cacafec 100644
wined3d_resource_release(&swapchain->front_buffer->resource);
for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index c920919..33908dc 100644
index 7a3cdd2..dd0f17d 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -485,10 +485,10 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct
@ -37,12 +37,12 @@ index c920919..33908dc 100644
+ const RECT *src_rect, const RECT *dst_rect, DWORD flags,
+ struct wined3d_rendertarget_view *depth_stencil)
{
struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface;
struct wined3d_texture *back_buffer = swapchain->back_buffers[0];
- const struct wined3d_fb_state *fb = &swapchain->device->state.fb;
const struct wined3d_gl_info *gl_info;
struct wined3d_texture *logo_texture;
struct wined3d_context *context;
@@ -624,15 +624,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -621,15 +621,15 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
wined3d_texture_validate_location(swapchain->back_buffers[swapchain->desc.backbuffer_count - 1],
0, WINED3D_LOCATION_DISCARDED);
@ -61,7 +61,7 @@ index c920919..33908dc 100644
if (ds == swapchain->device->onscreen_depth_stencil)
{
wined3d_texture_decref(swapchain->device->onscreen_depth_stencil->container);
@@ -705,7 +705,8 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai
@@ -701,7 +701,8 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai
}
static void swapchain_gdi_present(struct wined3d_swapchain *swapchain,

View File

@ -1,4 +1,4 @@
From aa7fbb82f5ce2b7bac9fd6cb74fcbaa85f5ac777 Mon Sep 17 00:00:00 2001
From c41a1ed5fc68a6083416dd263e23fbd72544dfc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefandoesinger@gmx.at>
Date: Sat, 7 May 2016 13:58:17 +0100
Subject: wined3d: Use surface_blt_ugly in swapchain_gl_present.
@ -8,30 +8,30 @@ Subject: wined3d: Use surface_blt_ugly in swapchain_gl_present.
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index a622844..87fae35 100644
index b885fc7..16dd4c5 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -503,7 +503,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -514,7 +514,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
RECT rect = {0, 0, logo_texture->resource.width, logo_texture->resource.height};
/* Blit the logo into the upper left corner of the drawable. */
- wined3d_texture_blt(swapchain->back_buffers[0], 0, &rect, logo_texture, 0, &rect,
+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &rect,
- wined3d_texture_blt(back_buffer, 0, &rect, logo_texture, 0, &rect,
+ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &rect,
+ logo_texture->sub_resources[0].u.surface, &rect,
WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT);
}
@@ -532,8 +533,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -541,8 +542,8 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
if (swapchain->desc.windowed)
MapWindowPoints(NULL, swapchain->win_handle, (POINT *)&dst_rect, 2);
if (wined3d_clip_blit(&clip_rect, &dst_rect, &src_rect))
- wined3d_texture_blt(swapchain->back_buffers[0], 0, &dst_rect,
- wined3d_texture_blt(back_buffer, 0, &dst_rect,
- swapchain->device->cursor_texture, 0, &src_rect,
+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &dst_rect,
+ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &dst_rect,
+ swapchain->device->cursor_texture->sub_resources[0].u.surface, &src_rect,
WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT);
}
--
2.8.0
2.9.0

View File

@ -6463,26 +6463,19 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
else
{
@@ -4380,10 +4732,18 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
if (!wined3d_resource_is_offscreen(&dst_texture->resource))
{
struct wined3d_context *context = context_acquire(device, dst_surface);
+#if !defined(STAGING_CSMT)
surface_load_location(dst_surface, context, dst_texture->resource.draw_binding);
@@ -4384,7 +4736,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
context, dst_texture->resource.draw_binding);
context_release(context);
}
+#if !defined(STAGING_CSMT)
return WINED3D_OK;
+#else /* STAGING_CSMT */
+ wined3d_texture_load_location(dst_texture, surface_get_sub_resource_idx(dst_surface),
+ context, dst_texture->resource.draw_binding);
+ context_release(context);
+ }
+ return;
+#endif /* STAGING_CSMT */
}
}
}
@@ -4407,7 +4767,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4408,7 +4764,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, 0);
dst_swapchain->desc.swap_effect = swap_effect;
@ -6494,7 +6487,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
if (fbo_blit_supported(&device->adapter->gl_info, blit_op,
@@ -4428,7 +4792,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4429,7 +4789,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx,
~dst_texture->resource.draw_binding);
@ -6506,7 +6499,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op,
@@ -4438,7 +4806,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4439,7 +4803,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
{
blitter->blit_surface(device, blit_op, filter, src_surface,
src_rect, dst_surface, dst_rect, color_key);
@ -6518,7 +6511,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
}
}
@@ -4446,9 +4818,156 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4447,9 +4815,156 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
fallback:
/* Special cases for render targets. */
if (SUCCEEDED(surface_blt_special(dst_surface, dst_rect, src_surface, src_rect, flags, fx, filter)))
@ -6692,100 +6685,52 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
swapchain_cleanup(swapchain);
swapchain->parent_ops->wined3d_object_destroyed(swapchain->parent);
HeapFree(GetProcessHeap(), 0, swapchain);
@@ -334,7 +341,11 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain,
if (texture->resource.multisample_type)
{
location = WINED3D_LOCATION_RB_RESOLVED;
+#if !defined(STAGING_CSMT)
surface_load_location(back_buffer, context, location);
+#else /* STAGING_CSMT */
+ wined3d_texture_load_location(texture, 0, context, location);
+#endif /* STAGING_CSMT */
}
context_apply_fbo_state_blit(context, GL_READ_FRAMEBUFFER, back_buffer, NULL, location);
@@ -464,7 +475,11 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct
sub_resource = &texture->sub_resources[0];
if (!(sub_resource->locations & supported_locations))
+#if !defined(STAGING_CSMT)
surface_load_location(sub_resource->u.surface, context, texture->resource.draw_binding);
+#else /* STAGING_CSMT */
+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding);
+#endif /* STAGING_CSMT */
texture_prev->texture_rgb = texture->texture_rgb;
texture_prev->rb_multisample = texture->rb_multisample;
@@ -485,10 +500,17 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct
@@ -485,10 +492,17 @@ static void wined3d_swapchain_rotate(struct wined3d_swapchain *swapchain, struct
}
static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
+#if !defined(STAGING_CSMT)
const RECT *src_rect, const RECT *dst_rect, DWORD flags)
{
struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface;
struct wined3d_texture *back_buffer = swapchain->back_buffers[0];
const struct wined3d_fb_state *fb = &swapchain->device->fb;
+#else /* STAGING_CSMT */
+ const RECT *src_rect, const RECT *dst_rect, DWORD flags,
+ struct wined3d_rendertarget_view *depth_stencil)
+{
+ struct wined3d_surface *back_buffer = swapchain->back_buffers[0]->sub_resources[0].u.surface;
+ struct wined3d_texture *back_buffer = swapchain->back_buffers[0];
+#endif /* STAGING_CSMT */
const struct wined3d_gl_info *gl_info;
struct wined3d_texture *logo_texture;
struct wined3d_context *context;
@@ -509,7 +531,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -509,7 +523,12 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
RECT rect = {0, 0, logo_texture->resource.width, logo_texture->resource.height};
/* Blit the logo into the upper left corner of the drawable. */
+#if !defined(STAGING_CSMT)
wined3d_texture_blt(swapchain->back_buffers[0], 0, &rect, logo_texture, 0, &rect,
wined3d_texture_blt(back_buffer, 0, &rect, logo_texture, 0, &rect,
+#else /* STAGING_CSMT */
+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &rect,
+ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &rect,
+ logo_texture->sub_resources[0].u.surface, &rect,
+#endif /* STAGING_CSMT */
WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT);
}
@@ -538,8 +565,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -536,8 +555,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
if (swapchain->desc.windowed)
MapWindowPoints(NULL, swapchain->win_handle, (POINT *)&dst_rect, 2);
if (wined3d_clip_blit(&clip_rect, &dst_rect, &src_rect))
+#if !defined(STAGING_CSMT)
wined3d_texture_blt(swapchain->back_buffers[0], 0, &dst_rect,
wined3d_texture_blt(back_buffer, 0, &dst_rect,
swapchain->device->cursor_texture, 0, &src_rect,
+#else /* STAGING_CSMT */
+ surface_blt_ugly(swapchain->back_buffers[0]->sub_resources[0].u.surface, &dst_rect,
+ surface_blt_ugly(back_buffer->sub_resources[0].u.surface, &dst_rect,
+ swapchain->device->cursor_texture->sub_resources[0].u.surface, &src_rect,
+#endif /* STAGING_CSMT */
WINED3D_BLT_ALPHA_TEST, NULL, WINED3D_TEXF_POINT);
}
@@ -563,14 +595,23 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
*/
if (!swapchain->render_to_fbo && render_to_fbo && wined3d_settings.offscreen_rendering_mode == ORM_FBO)
{
+#if !defined(STAGING_CSMT)
surface_load_location(back_buffer, context, WINED3D_LOCATION_TEXTURE_RGB);
+#else /* STAGING_CSMT */
+ wined3d_texture_load_location(back_buffer->container, 0, context, WINED3D_LOCATION_TEXTURE_RGB);
+#endif /* STAGING_CSMT */
wined3d_texture_invalidate_location(back_buffer->container, 0, WINED3D_LOCATION_DRAWABLE);
swapchain->render_to_fbo = TRUE;
swapchain_update_draw_bindings(swapchain);
}
else
{
+#if !defined(STAGING_CSMT)
surface_load_location(back_buffer, context, back_buffer->container->resource.draw_binding);
+#else /* STAGING_CSMT */
+ wined3d_texture_load_location(swapchain->back_buffers[0], 0, context,
+ swapchain->back_buffers[0]->resource.draw_binding);
+#endif /* STAGING_CSMT */
}
if (swapchain->render_to_fbo)
@@ -583,8 +624,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -581,8 +605,13 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
swapchain_blit(swapchain, context, src_rect, dst_rect);
}
@ -6799,7 +6744,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
/* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */
gl_info->gl_ops.wgl.p_wglSwapBuffers(context->hdc);
@@ -621,19 +667,33 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
@@ -619,19 +648,33 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
wined3d_texture_validate_location(swapchain->back_buffers[swapchain->desc.backbuffer_count - 1],
0, WINED3D_LOCATION_DISCARDED);
@ -6833,29 +6778,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
}
}
}
@@ -643,12 +703,21 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
static void swapchain_gl_frontbuffer_updated(struct wined3d_swapchain *swapchain)
{
+#if !defined(STAGING_CSMT)
struct wined3d_surface *surface;
struct wined3d_context *context;
surface = swapchain->front_buffer->sub_resources[0].u.surface;
context = context_acquire(swapchain->device, surface);
surface_load_location(surface, context, surface->container->resource.draw_binding);
+#else /* STAGING_CSMT */
+ struct wined3d_texture *texture = swapchain->front_buffer;
+ struct wined3d_surface *surface = texture->sub_resources[0].u.surface;
+ struct wined3d_context *context;
+
+ context = context_acquire(swapchain->device, surface);
+ wined3d_texture_load_location(texture, 0, context, texture->resource.draw_binding);
+#endif /* STAGING_CSMT */
context_release(context);
SetRectEmpty(&swapchain->front_buffer_update);
}
@@ -702,7 +771,12 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai
@@ -699,7 +742,12 @@ static void swapchain_gdi_frontbuffer_updated(struct wined3d_swapchain *swapchai
}
static void swapchain_gdi_present(struct wined3d_swapchain *swapchain,
@ -6868,7 +6791,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
{
struct wined3d_surface *front, *back;
HBITMAP bitmap;
@@ -813,6 +887,71 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s
@@ -810,6 +858,71 @@ static void wined3d_swapchain_apply_sample_count_override(const struct wined3d_s
*quality = 0;
}
@ -6940,7 +6863,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3d_device *device,
struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
{
@@ -935,6 +1074,7 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3
@@ -932,6 +1045,7 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3
if (!(device->wined3d->flags & WINED3D_NO3D))
{
@ -6948,7 +6871,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
static const enum wined3d_format_id formats[] =
{
WINED3DFMT_D24_UNORM_S8_UINT,
@@ -990,6 +1130,11 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3
@@ -987,6 +1101,11 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3
}
context_release(swapchain->context[0]);
swapchain_update_swap_interval(swapchain);
@ -6960,7 +6883,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
}
if (swapchain->desc.backbuffer_count > 0)
@@ -1315,6 +1460,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha
@@ -1312,6 +1431,9 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha
enum wined3d_multisample_type multisample_type, unsigned int multisample_quality)
{
BOOL update_desc = FALSE;
@ -6970,7 +6893,7 @@ diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
TRACE("swapchain %p, buffer_count %u, width %u, height %u, format %s, "
"multisample_type %#x, multisample_quality %#x.\n",
@@ -1326,6 +1474,11 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha
@@ -1323,6 +1445,11 @@ HRESULT CDECL wined3d_swapchain_resize_buffers(struct wined3d_swapchain *swapcha
if (buffer_count && buffer_count != swapchain->desc.backbuffer_count)
FIXME("Cannot change the back buffer count yet.\n");