Rebase against bb29a9bf5b42a9848faae749b6d0bd79576f665a.

This commit is contained in:
Sebastian Lackner 2016-01-27 22:50:03 +01:00
parent 44aeaade64
commit 8ca2de22a0
7 changed files with 117 additions and 415 deletions

View File

@ -1,291 +0,0 @@
From 389f6141334056d3d91f004ea6b3e02f25cbea29 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 22 Jan 2016 18:20:29 +0800
Subject: olepro32: Add typelib resource.
Based on a patch by Alistair Leslie-Hughes.
---
dlls/olepro32/Makefile.in | 2 +
dlls/olepro32/olepro.idl | 259 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 261 insertions(+)
create mode 100644 dlls/olepro32/olepro.idl
diff --git a/dlls/olepro32/Makefile.in b/dlls/olepro32/Makefile.in
index a6163d1..032fdbd 100644
--- a/dlls/olepro32/Makefile.in
+++ b/dlls/olepro32/Makefile.in
@@ -4,4 +4,6 @@ IMPORTS = oleaut32
C_SRCS = olepro32stubs.c
+IDL_SRCS = olepro.idl
+
RC_SRCS = version.rc
diff --git a/dlls/olepro32/olepro.idl b/dlls/olepro32/olepro.idl
new file mode 100644
index 0000000..5b2fb3e
--- /dev/null
+++ b/dlls/olepro32/olepro.idl
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2003 Robert Shearman
+ * 2005 Huw Davies
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma makedep regtypelib
+
+import "oaidl.idl";
+
+#include <olectl.h>
+
+[
+ uuid(bef6e001-a874-101a-8bba-00aa00300cab),
+ version(2.0),
+ helpstring("Standard OLE Types")
+]
+library StdType
+{
+#if 0 /* FIXME */
+ importlib("stdole32.tlb");
+#endif
+
+ /* typedefs aren't stored in the type library.
+ These type names are known by the type compiler so it
+ doesn't really matter what we define them as. */
+ typedef short VARIANT_BOOL;
+ typedef long BSTR;
+ typedef double CURRENCY;
+ typedef unsigned long HRESULT;
+ typedef void *VARIANT;
+ typedef unsigned long SCODE;
+
+ typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public]
+ unsigned long OLE_COLOR;
+
+ typedef [uuid(66504302-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XPOS_PIXELS;
+
+ typedef [uuid(66504303-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YPOS_PIXELS;
+
+ typedef [uuid(66504304-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XSIZE_PIXELS;
+
+ typedef [uuid(66504305-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YSIZE_PIXELS;
+
+ typedef [uuid(66504306-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XPOS_HIMETRIC;
+
+ typedef [uuid(66504307-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YPOS_HIMETRIC;
+
+ typedef [uuid(66504308-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_XSIZE_HIMETRIC;
+
+ typedef [uuid(66504309-BE0F-101A-8BBB-00AA00300CAB), public]
+ long OLE_YSIZE_HIMETRIC;
+
+ typedef [uuid(BF030640-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_XPOS_CONTAINER;
+
+ typedef [uuid(BF030641-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_YPOS_CONTAINER;
+
+ typedef [uuid(BF030642-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_XSIZE_CONTAINER;
+
+ typedef [uuid(BF030643-9069-101B-AE2D-08002B2EC713), public]
+ float OLE_YSIZE_CONTAINER;
+
+ typedef [uuid(66504313-BE0F-101A-8BBB-00AA00300CAB), public]
+ int OLE_HANDLE;
+
+ typedef [uuid(6650430B-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL OLE_OPTEXCLUSIVE;
+
+ typedef [uuid(BF030644-9069-101B-AE2D-08002B2EC713), public]
+ VARIANT_BOOL OLE_CANCELBOOL;
+
+ typedef [uuid(BF030645-9069-101B-AE2D-08002B2EC713), public]
+ VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+
+ [uuid(6650430A-BE0F-101A-8BBB-00AA00300CAB)]
+ enum OLE_TRISTATE
+ {
+ Unchecked = 0,
+ Checked = 1,
+ Gray = 2
+ };
+
+ typedef [uuid(6650430D-BE0F-101A-8BBB-00AA00300CAB), public]
+ BSTR FONTNAME;
+
+ typedef [uuid(6650430E-BE0F-101A-8BBB-00AA00300CAB), public]
+ CURRENCY FONTSIZE;
+
+ typedef [uuid(6650430F-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTBOLD;
+
+ typedef [uuid(66504310-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTITALIC;
+
+ typedef [uuid(66504311-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTUNDERSCORE;
+
+ typedef [uuid(66504312-BE0F-101A-8BBB-00AA00300CAB), public]
+ VARIANT_BOOL FONTSTRIKETHROUGH;
+
+ [
+ odl,
+ uuid(BEF6E002-A874-101A-8BBA-00AA00300CAB),
+ helpstring("Font Object"),
+ hidden
+ ]
+ interface IFont : IUnknown
+ {
+ [propget] HRESULT Name([out, retval] BSTR *pname);
+ [propput] HRESULT Name([in] BSTR pname);
+ [propget] HRESULT Size([out, retval] CURRENCY *psize);
+ [propput] HRESULT Size([in] CURRENCY psize);
+ [propget] HRESULT Bold([out, retval] VARIANT_BOOL *pbold);
+ [propput] HRESULT Bold([in] VARIANT_BOOL pbold);
+ [propget] HRESULT Italic([out, retval] VARIANT_BOOL *pitalic);
+ [propput] HRESULT Italic([in] VARIANT_BOOL pitalic);
+ [propget] HRESULT Underline([out, retval] VARIANT_BOOL *punderline);
+ [propput] HRESULT Underline([in] VARIANT_BOOL punderline);
+ [propget] HRESULT Strikethrough([out, retval] VARIANT_BOOL *pstrikethrough);
+ [propput] HRESULT Strikethrough([in] VARIANT_BOOL pstrikethrough);
+ [propget] HRESULT Weight([out, retval] short *pweight);
+ [propput] HRESULT Weight([in] short pweight);
+ [propget] HRESULT Charset([out, retval] short *pcharset);
+ [propput] HRESULT Charset([in] short pcharset);
+ [propget] HRESULT hFont([out, retval] OLE_HANDLE *phfont);
+ HRESULT Clone([out] IFont **ppfont);
+ HRESULT IsEqual([in] IFont *pfontOther);
+ HRESULT SetRatio([in] long cyLogical, [in] long cyHimetric);
+ HRESULT AddRefHfont([in] OLE_HANDLE hFont);
+ HRESULT ReleaseHfont([in] OLE_HANDLE hFont);
+ };
+
+ [
+ odl,
+ uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB)
+ ]
+ dispinterface Font
+ {
+ properties:
+ [id(DISPID_FONT_NAME)] BSTR Name;
+ [id(DISPID_FONT_SIZE)] CURRENCY Size;
+ [id(DISPID_FONT_BOLD)] VARIANT_BOOL Bold;
+ [id(DISPID_FONT_ITALIC)] VARIANT_BOOL Italic;
+ [id(DISPID_FONT_UNDER)] VARIANT_BOOL Underline;
+ [id(DISPID_FONT_STRIKE)] VARIANT_BOOL Strikethrough;
+ [id(DISPID_FONT_WEIGHT)] short Weight;
+ [id(DISPID_FONT_CHARSET)] short Charset;
+ methods:
+ }
+
+ typedef [public] Font IFontDisp;
+
+ [
+ uuid(0BE35203-8F91-11CE-9DE3-00AA004BB851)
+ ]
+ coclass StdFont
+ {
+ [default] dispinterface Font;
+ interface IFont;
+ };
+
+ [
+ odl,
+ uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB),
+ helpstring("Picture Object"),
+ hidden
+ ]
+ interface IPicture : IUnknown
+ {
+ [propget] HRESULT Handle([out, retval] OLE_HANDLE *phandle);
+ [propget] HRESULT hPal([out, retval] OLE_HANDLE *phpal);
+ [propget] HRESULT Type([out, retval] short *ptype);
+ [propget] HRESULT Width([out, retval] OLE_XSIZE_HIMETRIC *pwidth);
+ [propget] HRESULT Height([out, retval] OLE_YSIZE_HIMETRIC *pheight);
+ HRESULT Render([in] int hdc,
+ [in] long x,
+ [in] long y,
+ [in] long cx,
+ [in] long cy,
+ [in] OLE_XPOS_HIMETRIC xSrc,
+ [in] OLE_YPOS_HIMETRIC ySrc,
+ [in] OLE_XSIZE_HIMETRIC cxSrc,
+ [in] OLE_YSIZE_HIMETRIC cySrc,
+ [in] void *prcWBounds);
+
+ [propput] HRESULT hPal([in] OLE_HANDLE phpal);
+ [propget] HRESULT CurDC([out, retval] int *phdcOut);
+ HRESULT SelectPicture([in] int hdcIn,
+ [out] int *phdcOut,
+ [out] OLE_HANDLE *phbmpOut);
+ [propget] HRESULT KeepOriginalFormat([out, retval] VARIANT_BOOL *pfkeep);
+ [propput] HRESULT KeepOriginalFormat([in] VARIANT_BOOL pfkeep);
+ HRESULT PictureChanged();
+ HRESULT SaveAsFile([in] void *pstm,
+ [in] VARIANT_BOOL fSaveMemCopy,
+ [out] long *pcbSize);
+ [propget] HRESULT Attributes([out, retval] long *pdwAttr);
+ HRESULT SetHdc([in] OLE_HANDLE hdc);
+ };
+
+ [
+ uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB)
+ ]
+ dispinterface Picture
+ {
+ properties:
+ [id(DISPID_PICT_HANDLE), readonly] OLE_HANDLE Handle;
+ [id(DISPID_PICT_HPAL)] OLE_HANDLE hPal;
+ [id(DISPID_PICT_TYPE), readonly] short Type;
+ [id(DISPID_PICT_WIDTH), readonly] OLE_XSIZE_HIMETRIC Width;
+ [id(DISPID_PICT_HEIGHT), readonly] OLE_YSIZE_HIMETRIC Height;
+ methods:
+ [id(DISPID_PICT_RENDER)]
+ void Render(int hdc,
+ long x,
+ long y,
+ long cx,
+ long cy,
+ OLE_XPOS_HIMETRIC xSrc,
+ OLE_YPOS_HIMETRIC ySrc,
+ OLE_XSIZE_HIMETRIC cxSrc,
+ OLE_YSIZE_HIMETRIC cySrc,
+ void *prcWBounds);
+ };
+
+ typedef [public] Picture IPictureDisp;
+
+ [
+ uuid(0BE35204-8F91-11CE-9DE3-00AA004BB851)
+ ]
+ coclass StdPicture
+ {
+ [default] dispinterface Picture;
+ interface IPicture;
+ };
+}
--
2.6.4

View File

@ -1 +0,0 @@
Fixes: [14617] Add Standard OLE Types typelib to olepro32.dll

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "d178301b723b0a05d8dc0c04b185e39f3ac8ba14"
echo "bb29a9bf5b42a9848faae749b6d0bd79576f665a"
}
# Show version information
@ -242,7 +242,6 @@ patch_enable_all ()
enable_ole32_CoGetApartmentType="$1"
enable_oleaut32_TKIND_COCLASS="$1"
enable_oleaut32_x86_64_Marshaller="$1"
enable_olepro32_Typelib="$1"
enable_openal32_EFX_Extension="$1"
enable_opengl32_Revert_Disable_Ext="$1"
enable_quartz_MediaSeeking_Positions="$1"
@ -296,6 +295,7 @@ patch_enable_all ()
enable_shlwapi_AssocGetPerceivedType="$1"
enable_shlwapi_SHMapHandle="$1"
enable_shlwapi_UrlCombine="$1"
enable_stdole32_idl_Typelib="$1"
enable_stdole32_tlb_SLTG_Typelib="$1"
enable_ucrtbase_Functions="$1"
enable_user32_DeferWindowPos="$1"
@ -866,9 +866,6 @@ patch_enable ()
oleaut32-x86_64_Marshaller)
enable_oleaut32_x86_64_Marshaller="$2"
;;
olepro32-Typelib)
enable_olepro32_Typelib="$2"
;;
openal32-EFX_Extension)
enable_openal32_EFX_Extension="$2"
;;
@ -1028,6 +1025,9 @@ patch_enable ()
shlwapi-UrlCombine)
enable_shlwapi_UrlCombine="$2"
;;
stdole32.idl-Typelib)
enable_stdole32_idl_Typelib="$2"
;;
stdole32.tlb-SLTG_Typelib)
enable_stdole32_tlb_SLTG_Typelib="$2"
;;
@ -5242,24 +5242,6 @@ if test "$enable_oleaut32_x86_64_Marshaller" -eq 1; then
) >> "$patchlist"
fi
# Patchset olepro32-Typelib
# |
# | This patchset fixes the following Wine bugs:
# | * [#14617] Add Standard OLE Types typelib to olepro32.dll
# |
# | Modified files:
# | * dlls/olepro32/Makefile.in, dlls/olepro32/olepro.idl, dlls/stdole32.tlb/std_ole_v1.idl, include/Makefile.in,
# | include/stdole32.idl
# |
if test "$enable_olepro32_Typelib" -eq 1; then
patch_apply olepro32-Typelib/0001-include-Make-stdole32.idl-a-public-component.patch
patch_apply olepro32-Typelib/0002-olepro32-Add-typelib-resource.patch
(
echo '+ { "Dmitry Timoshkov", "include: Make stdole32.idl a public component.", 1 },';
echo '+ { "Dmitry Timoshkov", "olepro32: Add typelib resource.", 1 },';
) >> "$patchlist"
fi
# Patchset openal32-EFX_Extension
# |
# | This patchset fixes the following Wine bugs:
@ -6013,6 +5995,18 @@ if test "$enable_shlwapi_UrlCombine" -eq 1; then
) >> "$patchlist"
fi
# Patchset stdole32.idl-Typelib
# |
# | Modified files:
# | * dlls/stdole32.tlb/std_ole_v1.idl, include/Makefile.in, include/stdole32.idl
# |
if test "$enable_stdole32_idl_Typelib" -eq 1; then
patch_apply stdole32.idl-Typelib/0001-include-Make-stdole32.idl-a-public-component.patch
(
echo '+ { "Dmitry Timoshkov", "include: Make stdole32.idl a public component.", 1 },';
) >> "$patchlist"
fi
# Patchset widl-SLTG_Typelib_Support
# |
# | Modified files:

View File

@ -1,4 +1,4 @@
From f096c2b76bb908a0107daf187adcad6d6ab4723d Mon Sep 17 00:00:00 2001
From 0846dc3670f5f7520a544570627283a4b4e9ced9 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, 172 insertions(+), 127 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 6ecb6fa..cecc75e 100644
index b2ddf55..31f005a 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -684,7 +684,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv,
@ -42,7 +42,7 @@ index 6ecb6fa..cecc75e 100644
}
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 26f56ab..b4fefee 100644
index 0d9de90..cb40148 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1511,6 +1511,12 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
@ -58,15 +58,15 @@ index 26f56ab..b4fefee 100644
/* Initialize the texture unit mapping to a 1:1 mapping */
for (s = 0; s < MAX_COMBINED_SAMPLERS; ++s)
{
@@ -1839,6 +1845,7 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
out:
@@ -1840,6 +1846,7 @@ out:
if (hdc) wined3d_release_dc(swapchain->win_handle, hdc);
device->shader_backend->shader_free_context_data(ret);
device->adapter->fragment_pipe->free_context_data(ret);
+ HeapFree(GetProcessHeap(), 0, ret->current_fb.render_targets);
HeapFree(GetProcessHeap(), 0, ret->free_event_queries);
HeapFree(GetProcessHeap(), 0, ret->free_occlusion_queries);
HeapFree(GetProcessHeap(), 0, ret->free_timestamp_queries);
@@ -1873,6 +1880,7 @@ void context_destroy(struct wined3d_device *device, struct wined3d_context *cont
@@ -1874,6 +1881,7 @@ void context_destroy(struct wined3d_device *device, struct wined3d_context *cont
device->shader_backend->shader_free_context_data(context);
device->adapter->fragment_pipe->free_context_data(context);
@ -74,7 +74,7 @@ index 26f56ab..b4fefee 100644
HeapFree(GetProcessHeap(), 0, context->draw_buffers);
HeapFree(GetProcessHeap(), 0, context->blit_targets);
device_context_remove(device, context);
@@ -2384,7 +2392,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2385,7 +2393,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
DWORD rt_mask = 0, *cur_mask;
UINT i;
@ -83,7 +83,7 @@ index 26f56ab..b4fefee 100644
|| rt_count != context->gl_info->limits.buffers)
{
if (!context_validate_rt_config(rt_count, rts, dsv))
@@ -2429,6 +2437,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2430,6 +2438,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
rt_mask = context_generate_rt_mask_no_fbo(device,
rt_count ? wined3d_rendertarget_view_get_surface(rts[0]) : NULL);
}
@ -92,7 +92,7 @@ index 26f56ab..b4fefee 100644
}
else if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
&& (!rt_count || wined3d_resource_is_offscreen(rts[0]->resource)))
@@ -2487,7 +2497,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
@@ -2488,7 +2498,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_device *device)
{
const struct wined3d_state *state = &device->state;
@ -101,7 +101,7 @@ index 26f56ab..b4fefee 100644
struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL];
DWORD rt_mask, rt_mask_bits;
unsigned int i;
@@ -2517,7 +2527,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
@@ -2518,7 +2528,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)
{
const struct wined3d_device *device = context->swapchain->device;
@ -110,7 +110,7 @@ index 26f56ab..b4fefee 100644
DWORD rt_mask = find_draw_buffers_mask(context, device);
DWORD *cur_mask;
@@ -2549,6 +2559,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat
@@ -2550,6 +2560,8 @@ void context_state_fb(struct wined3d_context *context, const struct wined3d_stat
context_apply_draw_buffers(context, rt_mask);
*cur_mask = rt_mask;
}
@ -119,7 +119,7 @@ index 26f56ab..b4fefee 100644
}
static void context_map_stage(struct wined3d_context *context, DWORD stage, DWORD unit)
@@ -3192,7 +3204,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context, struct wined3d_de
@@ -3193,7 +3205,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context, struct wined3d_de
{
const struct wined3d_state *state = &device->state;
const struct StateEntry *state_table = context->state_table;
@ -575,7 +575,7 @@ index 0afeff9..4e66f01 100644
surface_modify_ds_location(ds, location, ds->ds_current_size.cx, ds->ds_current_size.cy);
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 6234699..5d7c78a 100644
index 1eb7e6d..56e4bb9 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -1627,7 +1627,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context *cont
@ -588,10 +588,10 @@ index 6234699..5d7c78a 100644
const struct wined3d_shader_lconst *lconst;
const char *prefix;
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index f2c3e74..f20797b 100644
index 140665e..cc18f88 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -2450,7 +2450,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
@@ -2451,7 +2451,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
if (!gl_info->supported[ARB_FRAMEBUFFER_SRGB] && state->render_states[WINED3D_RS_SRGBWRITEENABLE])
{
@ -788,7 +788,7 @@ index cb3d494..6b348b8 100644
if (FAILED(hr = stateblock_allocate_shader_constants(stateblock)))
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 96f5b9f..7784396 100644
index 817ef6f..35bf399 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3265,8 +3265,8 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE
@ -815,7 +815,7 @@ index dbf2c8b..73730cd 100644
struct wined3d_context *context;
struct wined3d_surface *front;
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 5eb1696..86a83c8 100644
index 28a3216..d28994e 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -3776,7 +3776,7 @@ void get_projection_matrix(const struct wined3d_context *context, const struct w
@ -827,7 +827,7 @@ index 5eb1696..86a83c8 100644
state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE;
float z_scale = zenable ? 2.0f : 0.0f;
float z_offset = zenable ? -1.0f : 0.0f;
@@ -4368,7 +4368,7 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d
@@ -4357,7 +4357,7 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d
unsigned int i;
DWORD ttff;
DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;
@ -837,10 +837,10 @@ index 5eb1696..86a83c8 100644
const struct wined3d_d3d_info *d3d_info = context->d3d_info;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index ccc9a93..2ea88c7 100644
index 6ae6072..df9d5fa 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1164,6 +1164,36 @@ struct wined3d_timestamp_query
@@ -1176,6 +1176,36 @@ struct wined3d_timestamp_query
void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN;
void context_free_timestamp_query(struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN;
@ -877,7 +877,7 @@ index ccc9a93..2ea88c7 100644
struct wined3d_context
{
const struct wined3d_gl_info *gl_info;
@@ -1178,6 +1208,7 @@ struct wined3d_context
@@ -1190,6 +1220,7 @@ struct wined3d_context
DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
DWORD numDirtyEntries;
DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */
@ -885,7 +885,7 @@ index ccc9a93..2ea88c7 100644
struct wined3d_swapchain *swapchain;
struct wined3d_surface *current_rt;
@@ -1280,12 +1311,6 @@ struct wined3d_context
@@ -1292,12 +1323,6 @@ struct wined3d_context
GLuint dummy_arbfp_prog;
};
@ -898,7 +898,7 @@ index ccc9a93..2ea88c7 100644
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
struct StateEntry
@@ -2008,7 +2033,7 @@ struct wined3d_stream_state
@@ -2020,7 +2045,7 @@ struct wined3d_stream_state
struct wined3d_state
{
DWORD flags;
@ -907,7 +907,7 @@ index ccc9a93..2ea88c7 100644
struct wined3d_vertex_declaration *vertex_declaration;
struct wined3d_stream_output stream_output[MAX_STREAM_OUT];
@@ -2114,7 +2139,6 @@ struct wined3d_device
@@ -2126,7 +2151,6 @@ struct wined3d_device
struct wine_rb_tree samplers;
/* Render Target Support */
@ -915,7 +915,7 @@ index ccc9a93..2ea88c7 100644
struct wined3d_surface *onscreen_depth_stencil;
struct wined3d_rendertarget_view *auto_depth_stencil_view;
@@ -2626,9 +2650,8 @@ struct wined3d_stateblock
@@ -2638,9 +2662,8 @@ struct wined3d_stateblock
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -927,7 +927,7 @@ index ccc9a93..2ea88c7 100644
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
struct wined3d_cs_ops
@@ -2641,7 +2664,6 @@ struct wined3d_cs
@@ -2653,7 +2676,6 @@ struct wined3d_cs
{
const struct wined3d_cs_ops *ops;
struct wined3d_device *device;

View File

@ -70,7 +70,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader
shader_arb_ps_local_constants(compiled, context, state, rt_height);
}
@@ -7856,7 +7864,11 @@
@@ -7857,7 +7865,11 @@
/* Now load the surface */
if (wined3d_settings.offscreen_rendering_mode != ORM_FBO
@ -82,7 +82,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader
== WINED3D_LOCATION_DRAWABLE
&& !wined3d_resource_is_offscreen(&src_surface->container->resource))
{
@@ -7894,6 +7906,7 @@
@@ -7895,6 +7907,7 @@
/* Leave the opengl state valid for blitting */
arbfp_blit_unset(context->gl_info);
@ -90,7 +90,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader
if (wined3d_settings.cs_multithreaded)
context->gl_info->gl_ops.gl.p_glFinish();
else if (wined3d_settings.strict_draw_ordering
@@ -7905,6 +7918,17 @@
@@ -7906,6 +7919,17 @@
wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding);
wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding);
@ -646,8 +646,8 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
/* Initialize the texture unit mapping to a 1:1 mapping */
for (s = 0; s < MAX_COMBINED_SAMPLERS; ++s)
{
@@ -1784,7 +1786,9 @@
out:
@@ -1785,7 +1787,9 @@
if (hdc) wined3d_release_dc(swapchain->win_handle, hdc);
device->shader_backend->shader_free_context_data(ret);
device->adapter->fragment_pipe->free_context_data(ret);
+#if defined(STAGING_CSMT)
@ -656,7 +656,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
HeapFree(GetProcessHeap(), 0, ret->free_event_queries);
HeapFree(GetProcessHeap(), 0, ret->free_occlusion_queries);
HeapFree(GetProcessHeap(), 0, ret->free_timestamp_queries);
@@ -1819,7 +1823,9 @@
@@ -1820,7 +1824,9 @@
device->shader_backend->shader_free_context_data(context);
device->adapter->fragment_pipe->free_context_data(context);
@ -666,7 +666,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
HeapFree(GetProcessHeap(), 0, context->draw_buffers);
HeapFree(GetProcessHeap(), 0, context->blit_targets);
device_context_remove(device, context);
@@ -2239,6 +2245,7 @@
@@ -2240,6 +2246,7 @@
WARN("Depth stencil format is not supported by WGL, rendering the backbuffer in an FBO\n");
/* The currently active context is the necessary context to access the swapchain's onscreen buffers */
@ -674,7 +674,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
wined3d_resource_load_location(&context->current_rt->resource, context, WINED3D_LOCATION_TEXTURE_RGB);
swapchain->render_to_fbo = TRUE;
swapchain_update_draw_bindings(swapchain);
@@ -2253,6 +2260,22 @@
@@ -2254,6 +2261,22 @@
return context_generate_rt_mask_from_surface(rt);
else
return context_generate_rt_mask(context->offscreenBuffer);
@ -697,7 +697,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
}
/* Context activation is done by the caller. */
@@ -2284,7 +2307,11 @@
@@ -2285,7 +2308,11 @@
}
else
{
@ -709,7 +709,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
}
cur_mask = context->current_fbo ? &context->current_fbo->rt_mask : &context->draw_buffers_mask;
@@ -2331,7 +2358,11 @@
@@ -2332,7 +2359,11 @@
DWORD rt_mask = 0, *cur_mask;
UINT i;
@ -721,7 +721,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
|| rt_count != context->gl_info->limits.buffers)
{
if (!context_validate_rt_config(rt_count, rts, dsv))
@@ -2373,11 +2404,17 @@
@@ -2374,11 +2405,17 @@
}
else
{
@ -739,7 +739,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
}
else if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
&& (!rt_count || wined3d_resource_is_offscreen(rts[0]->resource)))
@@ -2390,7 +2427,11 @@
@@ -2391,7 +2428,11 @@
}
else
{
@ -751,7 +751,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
rt_count ? wined3d_rendertarget_view_get_surface(rts[0]) : NULL);
}
@@ -2433,6 +2474,7 @@
@@ -2434,6 +2475,7 @@
return TRUE;
}
@ -759,7 +759,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const struct wined3d_state *state)
{
struct wined3d_rendertarget_view **rts = state->fb.render_targets;
@@ -2442,6 +2484,18 @@
@@ -2443,6 +2485,18 @@
if (wined3d_settings.offscreen_rendering_mode != ORM_FBO)
return context_generate_rt_mask_no_fbo(context, wined3d_rendertarget_view_get_surface(rts[0]));
@ -778,7 +778,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
else if (!context->render_offscreen)
return context_generate_rt_mask_from_surface(wined3d_rendertarget_view_get_surface(rts[0]));
@@ -2464,8 +2518,14 @@
@@ -2465,8 +2519,14 @@
/* Context activation is done by the caller. */
void context_state_fb(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
@ -793,7 +793,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
DWORD *cur_mask;
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
@@ -2496,8 +2556,10 @@
@@ -2497,8 +2557,10 @@
context_apply_draw_buffers(context, rt_mask);
*cur_mask = rt_mask;
}
@ -804,7 +804,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
}
static void context_map_stage(struct wined3d_context *context, DWORD stage, DWORD unit)
@@ -2744,12 +2806,22 @@
@@ -2745,12 +2807,22 @@
/* Context activation is done by the caller. */
void context_state_drawbuf(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
@ -827,7 +827,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
if (rt_mask != *cur_mask)
{
context_apply_draw_buffers(context, rt_mask);
@@ -2951,7 +3023,11 @@
@@ -2952,7 +3024,11 @@
{
if (state->vertex_declaration->half_float_conv_needed && !stream_info->all_vbo)
{
@ -839,7 +839,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
context->use_immediate_mode_draw = TRUE;
}
else
@@ -3136,11 +3212,19 @@
@@ -3137,11 +3213,19 @@
}
/* Context activation is done by the caller. */
@ -859,7 +859,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
unsigned int i;
WORD map;
@@ -3173,12 +3257,17 @@
@@ -3174,12 +3258,17 @@
for (i = 0, map = context->stream_info.use_map; map; map >>= 1, ++i)
{
if (map & 1)
@ -877,7 +877,7 @@ diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
}
if (state->index_buffer)
{
@@ -3273,7 +3362,11 @@
@@ -3274,7 +3363,11 @@
if (texture->texture_srgb.name)
wined3d_texture_load(texture, context, TRUE);
wined3d_texture_load(texture, context, FALSE);
@ -3717,7 +3717,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -5544,9 +5544,15 @@
@@ -5546,9 +5546,15 @@
DebugBreak();
}
@ -4671,7 +4671,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -1906,7 +1906,11 @@
@@ -1907,7 +1907,11 @@
}
}
@ -4683,7 +4683,7 @@ diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
{
HeapFree(GetProcessHeap(), 0, shader->output_signature.elements);
HeapFree(GetProcessHeap(), 0, shader->input_signature.elements);
@@ -2165,10 +2169,16 @@
@@ -2166,10 +2170,16 @@
if (!refcount)
{
@ -4700,7 +4700,7 @@ diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
}
return refcount;
@@ -2451,7 +2461,11 @@
@@ -2452,7 +2462,11 @@
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
if (!gl_info->supported[ARB_FRAMEBUFFER_SRGB] && state->render_states[WINED3D_RS_SRGBWRITEENABLE])
{
@ -8381,7 +8381,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
default:
mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f;
}
@@ -4368,7 +4387,11 @@
@@ -4357,7 +4376,11 @@
unsigned int i;
DWORD ttff;
DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;
@ -9206,7 +9206,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
#include <stdarg.h>
#include <math.h>
#include <limits.h>
@@ -283,8 +311,10 @@
@@ -294,8 +322,10 @@
unsigned int max_sm_gs;
unsigned int max_sm_ps;
BOOL no_3d;
@ -9217,7 +9217,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN;
@@ -1038,9 +1068,14 @@
@@ -1050,9 +1080,14 @@
WORD use_map; /* MAX_ATTRIBS, 16 */
};
@ -9232,7 +9232,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN;
#define eps 1e-8f
@@ -1128,8 +1163,10 @@
@@ -1140,8 +1175,10 @@
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -9243,7 +9243,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
union wined3d_gl_query_object
@@ -1165,6 +1202,7 @@
@@ -1177,6 +1214,7 @@
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -9251,7 +9251,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT64 timestamp;
};
@@ -1200,6 +1238,12 @@
@@ -1212,6 +1250,12 @@
for (i = 0; i < min(dst->rt_size, src->rt_size); i++)
dst->render_targets[i] = src->render_targets[i];
}
@ -9264,7 +9264,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_context
{
@@ -1215,7 +1259,9 @@
@@ -1227,7 +1271,9 @@
DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
DWORD numDirtyEntries;
DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */
@ -9274,7 +9274,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_swapchain *swapchain;
struct wined3d_surface *current_rt;
@@ -1313,8 +1359,17 @@
@@ -1325,8 +1371,17 @@
GLfloat fog_coord_value;
GLfloat color[4], fogstart, fogend, fogcolor[4];
GLuint dummy_arbfp_prog;
@ -9292,7 +9292,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
@@ -1457,8 +1512,12 @@
@@ -1469,8 +1524,12 @@
void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN;
BOOL context_apply_clear_state(struct wined3d_context *context, const struct wined3d_device *device,
UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN;
@ -9305,7 +9305,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target,
struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN;
void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info,
@@ -2041,7 +2100,11 @@
@@ -2053,7 +2112,11 @@
struct wined3d_state
{
DWORD flags;
@ -9317,7 +9317,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration *vertex_declaration;
struct wined3d_stream_output stream_output[MAX_STREAM_OUT];
@@ -2086,6 +2149,7 @@
@@ -2098,6 +2161,7 @@
DWORD render_states[WINEHIGHEST_RENDER_STATE + 1];
};
@ -9325,7 +9325,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_gl_bo
{
GLuint name;
@@ -2094,6 +2158,7 @@
@@ -2106,6 +2170,7 @@
UINT size;
};
@ -9333,7 +9333,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
#define WINED3D_UNMAPPED_STAGE ~0U
/* Multithreaded flag. Removed from the public header to signal that
@@ -2149,11 +2214,23 @@
@@ -2161,11 +2226,23 @@
struct wined3d_rendertarget_view *back_buffer_view;
struct wined3d_swapchain **swapchains;
UINT swapchain_count;
@ -9357,7 +9357,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* For rendering to a texture using glCopyTexImage */
GLuint depth_blt_texture;
@@ -2164,6 +2241,9 @@
@@ -2176,6 +2253,9 @@
UINT xScreenSpace;
UINT yScreenSpace;
UINT cursorWidth, cursorHeight;
@ -9367,7 +9367,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HCURSOR hardwareCursor;
/* The Wine logo texture */
@@ -2198,6 +2278,7 @@
@@ -2210,6 +2290,7 @@
UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN;
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -9375,7 +9375,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN;
void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN;
void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture,
@@ -2210,6 +2291,11 @@
@@ -2222,6 +2303,11 @@
void device_create_default_sampler(struct wined3d_device *device);
void device_delete_opengl_contexts_cs(struct wined3d_device *device,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -9387,7 +9387,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2229,9 +2315,11 @@
@@ -2241,9 +2327,11 @@
HRESULT (*resource_sub_resource_map)(struct wined3d_resource *resource, unsigned int sub_resource_idx,
struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags);
HRESULT (*resource_sub_resource_unmap)(struct wined3d_resource *resource, unsigned int sub_resource_idx);
@ -9399,7 +9399,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_resource
@@ -2256,6 +2344,7 @@
@@ -2268,6 +2356,7 @@
UINT depth;
UINT size;
DWORD priority;
@ -9407,7 +9407,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *heap_memory, *map_heap_memory, *user_memory, *bitmap_data;
UINT custom_row_pitch, custom_slice_pitch;
struct wined3d_gl_bo *buffer, *map_buffer;
@@ -2263,6 +2352,10 @@
@@ -2275,6 +2364,10 @@
DWORD locations;
LONG access_fence;
BOOL unmap_dirtify;
@ -9418,7 +9418,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *parent;
const struct wined3d_parent_ops *parent_ops;
@@ -2287,6 +2380,7 @@
@@ -2299,6 +2392,7 @@
void *parent, const struct wined3d_parent_ops *parent_ops,
const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN;
void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -9426,7 +9426,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN;
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void wined3d_resource_changed(struct wined3d_resource *resource,
@@ -2335,6 +2429,15 @@
@@ -2347,6 +2441,15 @@
{
while(InterlockedCompareExchange(&resource->access_fence, 0, 0));
}
@ -9442,7 +9442,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Tests show that the start address of resources is 32 byte aligned */
#define RESOURCE_ALIGNMENT 16
@@ -2419,7 +2522,9 @@
@@ -2431,7 +2534,9 @@
void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture,
const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
@ -9452,7 +9452,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_bind(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture,
@@ -2451,8 +2556,15 @@
@@ -2463,8 +2568,15 @@
struct wined3d_resource resource;
struct wined3d_texture *container;
@ -9468,7 +9468,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
static inline struct wined3d_volume *volume_from_resource(struct wined3d_resource *resource)
@@ -2460,6 +2572,7 @@
@@ -2472,6 +2584,7 @@
return CONTAINING_RECORD(resource, struct wined3d_volume, resource);
}
@ -9476,7 +9476,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_volume_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
unsigned int level, struct wined3d_volume **volume) DECLSPEC_HIDDEN;
void wined3d_volume_destroy(struct wined3d_volume *volume) DECLSPEC_HIDDEN;
@@ -2475,6 +2588,27 @@
@@ -2487,6 +2600,27 @@
struct wined3d_surface_dib
{
HBITMAP DIBsection;
@ -9504,7 +9504,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT bitmap_size;
};
@@ -2500,7 +2634,11 @@
@@ -2512,7 +2646,11 @@
struct wined3d_surface_ops
{
HRESULT (*surface_private_setup)(struct wined3d_surface *surface);
@ -9516,7 +9516,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_surface
@@ -2508,12 +2646,26 @@
@@ -2520,12 +2658,26 @@
struct wined3d_resource resource;
const struct wined3d_surface_ops *surface_ops;
struct wined3d_texture *container;
@ -9543,7 +9543,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
GLuint rb_multisample;
GLuint rb_resolved;
GLenum texture_target;
@@ -2557,11 +2709,22 @@
@@ -2569,11 +2721,22 @@
GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context,
unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN;
@ -9566,7 +9566,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
void wined3d_surface_prepare(struct wined3d_surface *surface, struct wined3d_context *context,
DWORD location) DECLSPEC_HIDDEN;
@@ -2573,6 +2736,7 @@
@@ -2585,6 +2748,7 @@
const struct wined3d_gl_info *gl_info, void *mem, unsigned int pitch) DECLSPEC_HIDDEN;
HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point,
struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN;
@ -9574,7 +9574,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
GLenum target, unsigned int level, unsigned int layer, DWORD flags,
struct wined3d_surface **surface) DECLSPEC_HIDDEN;
@@ -2587,6 +2751,17 @@
@@ -2599,6 +2763,17 @@
void wined3d_surface_cleanup_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void wined3d_surface_getdc_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void wined3d_surface_releasedc_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
@ -9592,7 +9592,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -2607,8 +2782,10 @@
@@ -2619,8 +2794,10 @@
GLuint name;
};
@ -9603,7 +9603,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration_element
{
const struct wined3d_format *format;
@@ -2637,8 +2814,10 @@
@@ -2649,8 +2826,10 @@
BOOL half_float_conv_needed;
};
@ -9614,7 +9614,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_saved_states
{
DWORD transform[(HIGHEST_TRANSFORMSTATE >> 5) + 1];
@@ -2706,6 +2885,7 @@
@@ -2718,6 +2897,7 @@
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -9622,7 +9622,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN;
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
@@ -2756,6 +2936,32 @@
@@ -2768,6 +2948,32 @@
void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context,
struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN;
@ -9655,7 +9655,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
@@ -2805,6 +3011,7 @@
@@ -2817,6 +3023,7 @@
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
@ -9663,7 +9663,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, const float *constants,
UINT vector4f_count, enum wined3d_shader_type type) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register,
@@ -2868,6 +3075,7 @@
@@ -2880,6 +3087,7 @@
void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_resource *resource,
unsigned int sub_resource_idx, const struct wined3d_box *box, const void *data, unsigned int row_pitch,
unsigned int depth_pitch) DECLSPEC_HIDDEN;
@ -9671,7 +9671,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
@@ -2882,8 +3090,12 @@
@@ -2894,8 +3102,12 @@
struct wined3d_query_ops
{
HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags);
@ -9684,7 +9684,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_query
@@ -2897,12 +3109,16 @@
@@ -2909,12 +3121,16 @@
enum wined3d_query_type type;
DWORD data_size;
void *extendedData;
@ -9701,7 +9701,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
* fixed function semantics as D3DCOLOR or FLOAT16 */
@@ -2929,7 +3145,9 @@
@@ -2941,7 +3157,9 @@
GLenum buffer_object_usage;
GLenum buffer_type_hint;
DWORD flags;
@ -9711,7 +9711,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *map_ptr;
struct wined3d_map_range *maps;
@@ -2954,11 +3172,15 @@
@@ -2966,11 +3184,15 @@
BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *context) DECLSPEC_HIDDEN;
void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context,
const struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -9727,7 +9727,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_buffer_upload_data(struct wined3d_buffer *buffer,
const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
@@ -2996,8 +3218,10 @@
@@ -3008,8 +3230,10 @@
return surface_from_resource(resource);
}
@ -9738,7 +9738,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_shader_resource_view
{
LONG refcount;
@@ -3010,8 +3234,12 @@
@@ -3022,8 +3246,12 @@
struct wined3d_swapchain_ops
{
void (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect,
@ -9751,7 +9751,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_swapchain
@@ -3050,8 +3278,10 @@
@@ -3062,8 +3290,10 @@
void swapchain_destroy_contexts(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -9762,7 +9762,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/*****************************************************************************
* Utility function prototypes
@@ -3255,7 +3485,9 @@
@@ -3266,7 +3496,9 @@
void shader_generate_main(const struct wined3d_shader *shader, struct wined3d_string_buffer *buffer,
const struct wined3d_shader_reg_maps *reg_maps, const DWORD *byte_code, void *backend_ctx) DECLSPEC_HIDDEN;
BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN;

View File

@ -1,4 +1,4 @@
From 5328b553ac1e9b1c57045fc8a0e2964f66a47d25 Mon Sep 17 00:00:00 2001
From 8e605496655d72d832a822ba6adc77fdc2540216 Mon Sep 17 00:00:00 2001
From: Ken Thomases <ken@codeweavers.com>
Date: Sun, 14 Sep 2014 19:47:03 -0500
Subject: Revert "wined3d: Track if a context's hdc is private so we never need
@ -11,7 +11,7 @@ This reverts commit 272873823e9beff91ea1a62845fc7e5f94a9636f.
2 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index c11dd08..10e484c 100644
index cfd6ec6..ed14aa4 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -812,7 +812,7 @@ static BOOL context_restore_pixel_format(struct wined3d_context *ctx)
@ -76,7 +76,7 @@ index c11dd08..10e484c 100644
@@ -1446,7 +1445,6 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
int swap_interval;
DWORD state;
HDC hdc;
HDC hdc = 0;
- BOOL hdc_is_private = FALSE;
TRACE("swapchain %p, target %p, window %p.\n", swapchain, target, swapchain->win_handle);
@ -110,10 +110,10 @@ index c11dd08..10e484c 100644
ret->needs_set = 1;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d5a881f..e9bc39e 100644
index a5e7167..00ecbc4 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1195,9 +1195,8 @@ struct wined3d_context
@@ -1218,9 +1218,8 @@ struct wined3d_context
DWORD use_immediate_mode_draw : 1;
DWORD rebind_fbo : 1;
DWORD needs_set : 1;