mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Rebase against 9ba058e94c2662f5296c95adeafd29c59b137249.
This commit is contained in:
parent
1d08851c35
commit
4f12cf4dc9
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "e3bd659be9b2868b121857fb2643d775bbf0d8c7"
|
||||
echo "9ba058e94c2662f5296c95adeafd29c59b137249"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -7449,7 +7449,6 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
|
||||
patch_apply wined3d-CSMT_Main/0112-wined3d-Don-t-discard-new-buffers.patch
|
||||
patch_apply wined3d-CSMT_Main/0113-wined3d-Don-t-try-to-sync-VBOs-manually-on-OSX-with-.patch
|
||||
patch_apply wined3d-CSMT_Main/0114-wined3d-Only-discard-buffers-that-are-in-use.patch
|
||||
patch_apply wined3d-CSMT_Main/0115-wined3d-Destroy-samplers-through-the-command-stream.patch
|
||||
patch_apply wined3d-CSMT_Main/0116-wined3d-Destroy-shader-resource-views-through-the-CS.patch
|
||||
patch_apply wined3d-CSMT_Main/0117-wined3d-Send-getdc-and-releasedc-through-the-command.patch
|
||||
patch_apply wined3d-CSMT_Main/0118-wined3d-Ignore-WINED3D_MAP_NO_DIRTY_UPDATE-in-resour.patch
|
||||
@ -7584,7 +7583,6 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Don'\''t discard new buffers.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Don'\''t try to sync VBOs manually on OSX with CSMT.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Only discard buffers that are in use.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Destroy samplers through the command stream.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Destroy shader resource views through the CS.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Send getdc and releasedc through the command stream.", 1 },';
|
||||
echo '+ { "Stefan Dösinger", "wined3d: Ignore WINED3D_MAP_NO_DIRTY_UPDATE in resource_map.", 1 },';
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 914b61d3d8b4a6c680ed6bfe0f3b614a7c32c320 Mon Sep 17 00:00:00 2001
|
||||
From 9c7a85f85462a459d1a4aad3b97bd0542acc9f83 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Wed, 3 Apr 2013 18:01:34 +0200
|
||||
Subject: wined3d: Wait for the cs before destroying objects
|
||||
@ -16,10 +16,10 @@ the CS.
|
||||
6 files changed, 25 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
|
||||
index 054c67c..2ae620c 100644
|
||||
index e851ec9..e99e66d 100644
|
||||
--- a/dlls/wined3d/buffer.c
|
||||
+++ b/dlls/wined3d/buffer.c
|
||||
@@ -557,6 +557,12 @@ ULONG CDECL wined3d_buffer_decref(struct wined3d_buffer *buffer)
|
||||
@@ -549,6 +549,12 @@ ULONG CDECL wined3d_buffer_decref(struct wined3d_buffer *buffer)
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
@ -33,10 +33,10 @@ index 054c67c..2ae620c 100644
|
||||
{
|
||||
context = context_acquire(buffer->resource.device, NULL);
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index d92ce21..fe96c38 100644
|
||||
index 3bcbf19..185def9 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -1279,12 +1279,14 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
|
||||
@@ -1322,12 +1322,14 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
|
||||
{
|
||||
wined3d_cs_st_require_space,
|
||||
wined3d_cs_st_submit,
|
||||
@ -52,10 +52,10 @@ index d92ce21..fe96c38 100644
|
||||
|
||||
/* FIXME: wined3d_device_uninit_3d() should either flush and wait, or be an
|
||||
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
|
||||
index 0ee045f..21ecdd5 100644
|
||||
index 05eae08..975a927 100644
|
||||
--- a/dlls/wined3d/shader.c
|
||||
+++ b/dlls/wined3d/shader.c
|
||||
@@ -2578,6 +2578,11 @@ ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
@@ -2664,6 +2664,11 @@ ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
@ -64,14 +64,14 @@ index 0ee045f..21ecdd5 100644
|
||||
+ FIXME("Waiting for cs.\n");
|
||||
+ shader->device->cs->ops->finish(shader->device->cs);
|
||||
+ }
|
||||
shader_cleanup(shader);
|
||||
shader->parent_ops->wined3d_object_destroyed(shader->parent);
|
||||
HeapFree(GetProcessHeap(), 0, shader);
|
||||
wined3d_cs_emit_destroy_object(shader->device->cs, wined3d_shader_destroy_object, shader);
|
||||
}
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 708470e..0c7fca1 100644
|
||||
index cdb7636..ecabc60 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -399,6 +399,12 @@ static void wined3d_texture_cleanup(struct wined3d_texture *texture)
|
||||
@@ -479,6 +479,12 @@ static void wined3d_texture_cleanup(struct wined3d_texture *texture)
|
||||
|
||||
TRACE("texture %p.\n", texture);
|
||||
|
||||
@ -85,10 +85,10 @@ index 708470e..0c7fca1 100644
|
||||
{
|
||||
if (!(buffer_object = texture->sub_resources[i].buffer_object))
|
||||
diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
|
||||
index 9eb5907..601a5f5 100644
|
||||
index c8704e9..fcd637d 100644
|
||||
--- a/dlls/wined3d/vertexdeclaration.c
|
||||
+++ b/dlls/wined3d/vertexdeclaration.c
|
||||
@@ -58,6 +58,11 @@ ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration
|
||||
@@ -66,6 +66,11 @@ ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
@ -97,14 +97,14 @@ index 9eb5907..601a5f5 100644
|
||||
+ FIXME("Waiting for cs.\n");
|
||||
+ declaration->device->cs->ops->finish(declaration->device->cs);
|
||||
+ }
|
||||
HeapFree(GetProcessHeap(), 0, declaration->elements);
|
||||
declaration->parent_ops->wined3d_object_destroyed(declaration->parent);
|
||||
HeapFree(GetProcessHeap(), 0, declaration);
|
||||
wined3d_cs_emit_destroy_object(declaration->device->cs,
|
||||
wined3d_vertex_declaration_destroy_object, declaration);
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index 4e3a326..973c512 100644
|
||||
index 29f218e..00b4db7 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2879,6 +2879,7 @@ struct wined3d_cs_ops
|
||||
@@ -2938,6 +2938,7 @@ struct wined3d_cs_ops
|
||||
{
|
||||
void *(*require_space)(struct wined3d_cs *cs, size_t size);
|
||||
void (*submit)(struct wined3d_cs *cs);
|
||||
|
@ -1,32 +1,17 @@
|
||||
From 60b42d6c2c6d5d2ce0dde5925a5873a4a051842e Mon Sep 17 00:00:00 2001
|
||||
From 8c808d86f613798096da3f113415f2358c63d6bc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Wed, 31 Jul 2013 23:06:27 +0200
|
||||
Subject: wined3d: Destroy vertex declarations through the CS
|
||||
|
||||
---
|
||||
dlls/wined3d/vertexdeclaration.c | 17 ++++++++++-------
|
||||
1 file changed, 10 insertions(+), 7 deletions(-)
|
||||
dlls/wined3d/vertexdeclaration.c | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
|
||||
index 3349f4f..808e092 100644
|
||||
index fcd637d..c8704e9 100644
|
||||
--- a/dlls/wined3d/vertexdeclaration.c
|
||||
+++ b/dlls/wined3d/vertexdeclaration.c
|
||||
@@ -50,6 +50,14 @@ ULONG CDECL wined3d_vertex_declaration_incref(struct wined3d_vertex_declaration
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+static void wined3d_vertex_declaration_destroy_object(void *object)
|
||||
+{
|
||||
+ struct wined3d_vertex_declaration *declaration = object;
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, declaration->elements);
|
||||
+ HeapFree(GetProcessHeap(), 0, declaration);
|
||||
+}
|
||||
+
|
||||
ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration *declaration)
|
||||
{
|
||||
ULONG refcount = InterlockedDecrement(&declaration->ref);
|
||||
@@ -58,14 +66,9 @@ ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration
|
||||
@@ -66,11 +66,6 @@ ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
@ -35,14 +20,9 @@ index 3349f4f..808e092 100644
|
||||
- FIXME("Waiting for cs.\n");
|
||||
- declaration->device->cs->ops->finish(declaration->device->cs);
|
||||
- }
|
||||
- HeapFree(GetProcessHeap(), 0, declaration->elements);
|
||||
+ const struct wined3d_device *device = declaration->device;
|
||||
declaration->parent_ops->wined3d_object_destroyed(declaration->parent);
|
||||
- HeapFree(GetProcessHeap(), 0, declaration);
|
||||
+ wined3d_cs_emit_destroy_object(device->cs, wined3d_vertex_declaration_destroy_object, declaration);
|
||||
}
|
||||
|
||||
return refcount;
|
||||
wined3d_cs_emit_destroy_object(declaration->device->cs,
|
||||
wined3d_vertex_declaration_destroy_object, declaration);
|
||||
--
|
||||
2.8.0
|
||||
|
||||
|
@ -1,32 +1,17 @@
|
||||
From 2bba243cce7043d8cbac3f670d994a032db0fc77 Mon Sep 17 00:00:00 2001
|
||||
From df9cd44711651586d8aeabd4f4dde47f5bd1801b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Wed, 31 Jul 2013 23:18:28 +0200
|
||||
Subject: wined3d: Destroy shaders through the CS
|
||||
|
||||
---
|
||||
dlls/wined3d/shader.c | 18 +++++++++++-------
|
||||
1 file changed, 11 insertions(+), 7 deletions(-)
|
||||
dlls/wined3d/shader.c | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
|
||||
index 72ea8bc..f5e29b4 100644
|
||||
index 975a927..05eae08 100644
|
||||
--- a/dlls/wined3d/shader.c
|
||||
+++ b/dlls/wined3d/shader.c
|
||||
@@ -2612,6 +2612,14 @@ ULONG CDECL wined3d_shader_incref(struct wined3d_shader *shader)
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+static void wined3d_shader_destroy_object(void *object)
|
||||
+{
|
||||
+ struct wined3d_shader *shader = object;
|
||||
+
|
||||
+ shader_cleanup(shader);
|
||||
+ HeapFree(GetProcessHeap(), 0, shader);
|
||||
+}
|
||||
+
|
||||
ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
{
|
||||
ULONG refcount = InterlockedDecrement(&shader->ref);
|
||||
@@ -2620,14 +2628,10 @@ ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
@@ -2664,11 +2664,6 @@ ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
@ -35,15 +20,9 @@ index 72ea8bc..f5e29b4 100644
|
||||
- FIXME("Waiting for cs.\n");
|
||||
- shader->device->cs->ops->finish(shader->device->cs);
|
||||
- }
|
||||
- shader_cleanup(shader);
|
||||
+ const struct wined3d_device *device = shader->device;
|
||||
+
|
||||
shader->parent_ops->wined3d_object_destroyed(shader->parent);
|
||||
- HeapFree(GetProcessHeap(), 0, shader);
|
||||
+ wined3d_cs_emit_destroy_object(device->cs, wined3d_shader_destroy_object, shader);
|
||||
wined3d_cs_emit_destroy_object(shader->device->cs, wined3d_shader_destroy_object, shader);
|
||||
}
|
||||
|
||||
return refcount;
|
||||
--
|
||||
2.8.0
|
||||
|
||||
|
@ -1,53 +0,0 @@
|
||||
From 4dc96ab42f9d44017ed6510922c1a324a3e1f2bd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Thu, 27 Aug 2015 23:43:08 +0200
|
||||
Subject: wined3d: Destroy samplers through the command stream.
|
||||
|
||||
---
|
||||
dlls/wined3d/sampler.c | 22 ++++++++++++++--------
|
||||
1 file changed, 14 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
index 865198b..8c73466 100644
|
||||
--- a/dlls/wined3d/sampler.c
|
||||
+++ b/dlls/wined3d/sampler.c
|
||||
@@ -33,22 +33,28 @@ ULONG CDECL wined3d_sampler_incref(struct wined3d_sampler *sampler)
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+static void wined3d_sampler_destroy_object(void *object)
|
||||
+{
|
||||
+ struct wined3d_sampler *sampler = object;
|
||||
+ struct wined3d_context *context = context_acquire(sampler->device, NULL);
|
||||
+ const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
+
|
||||
+ GL_EXTCALL(glDeleteSamplers(1, &sampler->name));
|
||||
+ context_release(context);
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, sampler);
|
||||
+}
|
||||
+
|
||||
ULONG CDECL wined3d_sampler_decref(struct wined3d_sampler *sampler)
|
||||
{
|
||||
ULONG refcount = InterlockedDecrement(&sampler->refcount);
|
||||
- const struct wined3d_gl_info *gl_info;
|
||||
- struct wined3d_context *context;
|
||||
|
||||
TRACE("%p decreasing refcount to %u.\n", sampler, refcount);
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
- context = context_acquire(sampler->device, NULL);
|
||||
- gl_info = context->gl_info;
|
||||
- GL_EXTCALL(glDeleteSamplers(1, &sampler->name));
|
||||
- context_release(context);
|
||||
-
|
||||
- HeapFree(GetProcessHeap(), 0, sampler);
|
||||
+ struct wined3d_device *device = sampler->device;
|
||||
+ wined3d_cs_emit_destroy_object(device->cs, wined3d_sampler_destroy_object, sampler);
|
||||
}
|
||||
|
||||
return refcount;
|
||||
--
|
||||
2.8.0
|
||||
|
@ -3844,40 +3844,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
--- a/dlls/wined3d/sampler.c
|
||||
+++ b/dlls/wined3d/sampler.c
|
||||
@@ -33,6 +33,7 @@
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+#if defined(STAGING_CSMT)
|
||||
static void wined3d_sampler_destroy_object(void *object)
|
||||
{
|
||||
struct wined3d_sampler *sampler = object;
|
||||
@@ -55,6 +56,24 @@
|
||||
{
|
||||
struct wined3d_device *device = sampler->device;
|
||||
wined3d_cs_emit_destroy_object(device->cs, wined3d_sampler_destroy_object, sampler);
|
||||
+#else /* STAGING_CSMT */
|
||||
+ULONG CDECL wined3d_sampler_decref(struct wined3d_sampler *sampler)
|
||||
+{
|
||||
+ ULONG refcount = InterlockedDecrement(&sampler->refcount);
|
||||
+ const struct wined3d_gl_info *gl_info;
|
||||
+ struct wined3d_context *context;
|
||||
+
|
||||
+ TRACE("%p decreasing refcount to %u.\n", sampler, refcount);
|
||||
+
|
||||
+ if (!refcount)
|
||||
+ {
|
||||
+ context = context_acquire(sampler->device, NULL);
|
||||
+ gl_info = context->gl_info;
|
||||
+ GL_EXTCALL(glDeleteSamplers(1, &sampler->name));
|
||||
+ context_release(context);
|
||||
+
|
||||
+ HeapFree(GetProcessHeap(), 0, sampler);
|
||||
+#endif /* STAGING_CSMT */
|
||||
}
|
||||
|
||||
return refcount;
|
||||
@@ -67,6 +86,7 @@
|
||||
@@ -66,6 +66,7 @@
|
||||
return sampler->parent;
|
||||
}
|
||||
|
||||
@ -3885,7 +3852,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
void wined3d_sampler_init(struct wined3d_sampler *sampler)
|
||||
{
|
||||
const struct wined3d_gl_info *gl_info;
|
||||
@@ -98,6 +118,45 @@
|
||||
@@ -97,6 +98,45 @@
|
||||
wined3d_gl_compare_func(sampler->desc.comparison_func)));
|
||||
if ((context->d3d_info->wined3d_creation_flags & WINED3D_SRGB_READ_WRITE_CONTROL)
|
||||
&& gl_info->supported[EXT_TEXTURE_SRGB_DECODE] && !sampler->desc.srgb_decode)
|
||||
@ -3931,7 +3898,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
GL_EXTCALL(glSamplerParameteri(sampler->name, GL_TEXTURE_SRGB_DECODE_EXT, GL_SKIP_DECODE_EXT));
|
||||
checkGLcall("sampler creation");
|
||||
|
||||
@@ -109,12 +168,14 @@
|
||||
@@ -108,12 +148,14 @@
|
||||
HRESULT CDECL wined3d_sampler_create(struct wined3d_device *device, const struct wined3d_sampler_desc *desc,
|
||||
void *parent, struct wined3d_sampler **sampler)
|
||||
{
|
||||
@ -3946,7 +3913,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
struct wined3d_sampler *object;
|
||||
|
||||
TRACE("device %p, desc %p, parent %p, sampler %p.\n", device, desc, parent, sampler);
|
||||
@@ -135,6 +196,7 @@
|
||||
@@ -134,6 +176,7 @@
|
||||
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
@ -3954,7 +3921,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
|
||||
object->refcount = 1;
|
||||
object->device = device;
|
||||
object->parent = parent;
|
||||
@@ -143,6 +205,9 @@
|
||||
@@ -142,6 +185,9 @@
|
||||
wined3d_sampler_init(object);
|
||||
else
|
||||
wined3d_cs_emit_sampler_init(device->cs, object);
|
||||
@ -3967,40 +3934,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
|
||||
@@ -2650,6 +2650,7 @@
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+#if defined(STAGING_CSMT)
|
||||
static void wined3d_shader_destroy_object(void *object)
|
||||
{
|
||||
struct wined3d_shader *shader = object;
|
||||
@@ -2658,6 +2659,7 @@
|
||||
HeapFree(GetProcessHeap(), 0, shader);
|
||||
}
|
||||
|
||||
+#endif /* STAGING_CSMT */
|
||||
ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader)
|
||||
{
|
||||
ULONG refcount = InterlockedDecrement(&shader->ref);
|
||||
@@ -2666,10 +2668,16 @@
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
+#if defined(STAGING_CSMT)
|
||||
const struct wined3d_device *device = shader->device;
|
||||
|
||||
shader->parent_ops->wined3d_object_destroyed(shader->parent);
|
||||
wined3d_cs_emit_destroy_object(device->cs, wined3d_shader_destroy_object, shader);
|
||||
+#else /* STAGING_CSMT */
|
||||
+ shader_cleanup(shader);
|
||||
+ shader->parent_ops->wined3d_object_destroyed(shader->parent);
|
||||
+ HeapFree(GetProcessHeap(), 0, shader);
|
||||
+#endif /* STAGING_CSMT */
|
||||
}
|
||||
|
||||
return refcount;
|
||||
@@ -2990,7 +2998,11 @@
|
||||
@@ -2986,7 +2986,11 @@
|
||||
UINT i;
|
||||
|
||||
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
|
||||
@ -6612,41 +6546,6 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
if (d3d_info->vs_clipping || !use_vs(state) || !state->render_states[WINED3D_RS_CLIPPING]
|
||||
|| !state->render_states[WINED3D_RS_CLIPPLANEENABLE])
|
||||
{
|
||||
diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
|
||||
--- a/dlls/wined3d/vertexdeclaration.c
|
||||
+++ b/dlls/wined3d/vertexdeclaration.c
|
||||
@@ -50,6 +50,7 @@
|
||||
return refcount;
|
||||
}
|
||||
|
||||
+#if defined(STAGING_CSMT)
|
||||
static void wined3d_vertex_declaration_destroy_object(void *object)
|
||||
{
|
||||
struct wined3d_vertex_declaration *declaration = object;
|
||||
@@ -58,6 +59,7 @@
|
||||
HeapFree(GetProcessHeap(), 0, declaration);
|
||||
}
|
||||
|
||||
+#endif /* STAGING_CSMT */
|
||||
ULONG CDECL wined3d_vertex_declaration_decref(struct wined3d_vertex_declaration *declaration)
|
||||
{
|
||||
ULONG refcount = InterlockedDecrement(&declaration->ref);
|
||||
@@ -66,9 +68,15 @@
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
+#if defined(STAGING_CSMT)
|
||||
const struct wined3d_device *device = declaration->device;
|
||||
declaration->parent_ops->wined3d_object_destroyed(declaration->parent);
|
||||
wined3d_cs_emit_destroy_object(device->cs, wined3d_vertex_declaration_destroy_object, declaration);
|
||||
+#else /* STAGING_CSMT */
|
||||
+ HeapFree(GetProcessHeap(), 0, declaration->elements);
|
||||
+ declaration->parent_ops->wined3d_object_destroyed(declaration->parent);
|
||||
+ HeapFree(GetProcessHeap(), 0, declaration);
|
||||
+#endif /* STAGING_CSMT */
|
||||
}
|
||||
|
||||
return refcount;
|
||||
diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c
|
||||
--- a/dlls/wined3d/volume.c
|
||||
+++ b/dlls/wined3d/volume.c
|
||||
|
Loading…
Reference in New Issue
Block a user