You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 64e4a03a92498abea428dc567372f3996fa9dc3a.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 706645d08ae7ebd9175f91532077694b988aef7d Mon Sep 17 00:00:00 2001
|
||||
From bc0a87c3b6553fae719b2181bc878e8b9e59838c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Mon, 29 Apr 2013 18:49:53 +0200
|
||||
Subject: wined3d: Send blits through the command stream.
|
||||
@@ -11,10 +11,10 @@ between surface_blt and surface_blt_ugly isn't particularly nice.
|
||||
2 files changed, 16 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index c3a10a2d13a..31453ed0ff8 100644
|
||||
index 8fced7ece3..9dc893bfeb 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -4154,16 +4154,16 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
|
||||
@@ -4148,16 +4148,16 @@ HRESULT CDECL wined3d_device_copy_sub_resource_region(struct wined3d_device *dev
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
@@ -41,12 +41,12 @@ index c3a10a2d13a..31453ed0ff8 100644
|
||||
|
||||
if (!src_box)
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 60e53f55463..9d0909852cd 100644
|
||||
index 8a92a77872..2b249c26c0 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -3189,8 +3189,13 @@ HRESULT CDECL wined3d_texture_blt(struct wined3d_texture *dst_texture, unsigned
|
||||
@@ -3301,8 +3301,13 @@ HRESULT CDECL wined3d_texture_blt(struct wined3d_texture *dst_texture, unsigned
|
||||
if (dst_texture->sub_resources[dst_sub_resource_idx].map_count
|
||||
|| (src_texture && src_texture->sub_resources[src_sub_resource_idx].map_count))
|
||||
|| src_texture->sub_resources[src_sub_resource_idx].map_count)
|
||||
{
|
||||
- WARN("Sub-resource is busy, returning WINEDDERR_SURFACEBUSY.\n");
|
||||
- return WINEDDERR_SURFACEBUSY;
|
||||
@@ -59,7 +59,7 @@ index 60e53f55463..9d0909852cd 100644
|
||||
+ }
|
||||
}
|
||||
|
||||
if ((dst_format_flags & WINED3DFMT_FLAG_BLOCKS) && (flags & WINED3D_BLT_COLOR_FILL))
|
||||
if ((src_format_flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL))
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From bf11cf98c90e7f841ac3ccc1860409f918325203 Mon Sep 17 00:00:00 2001
|
||||
From 8ec257b616f5e216f9c41eb5a08c8e1e10e57495 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Thu, 4 Jul 2013 21:10:16 +0200
|
||||
Subject: wined3d: Send render target view clears through the command stream
|
||||
|
||||
---
|
||||
dlls/d3d9/tests/visual.c | 2 +-
|
||||
dlls/d3d9/tests/visual.c | 4 ++--
|
||||
dlls/wined3d/cs.c | 49 ++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/wined3d/device.c | 6 ++----
|
||||
dlls/wined3d/wined3d_private.h | 3 +++
|
||||
4 files changed, 55 insertions(+), 5 deletions(-)
|
||||
4 files changed, 56 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
|
||||
index 7070895aa2..c3034c4909 100644
|
||||
index 7070895aa2..c14ac9e938 100644
|
||||
--- a/dlls/d3d9/tests/visual.c
|
||||
+++ b/dlls/d3d9/tests/visual.c
|
||||
@@ -1337,7 +1337,7 @@ static void color_fill_test(void)
|
||||
@@ -23,8 +23,17 @@ index 7070895aa2..c3034c4909 100644
|
||||
/* Vendor-specific formats like ATI2N are a non-issue here since they're not
|
||||
* supported as offscreen plain surfaces and do not support D3DUSAGE_RENDERTARGET
|
||||
* when created as texture. */
|
||||
@@ -1458,7 +1458,7 @@ static void color_fill_test(void)
|
||||
{
|
||||
hr = IDirect3DDevice9_ColorFill(device, surface, &rect2, 0xdeadbeef);
|
||||
if (formats[i].flags & BLOCKS)
|
||||
- todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
|
||||
+ ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
|
||||
else
|
||||
ok(SUCCEEDED(hr), "Failed to color fill, hr %#x, fmt=%s.\n", hr, formats[i].name);
|
||||
}
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index bf1b63b897..72e177a41e 100644
|
||||
index 80a9322224..c30dfbc898 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -68,6 +68,7 @@ enum wined3d_cs_op
|
||||
@@ -54,7 +63,7 @@ index bf1b63b897..72e177a41e 100644
|
||||
static void wined3d_cs_exec_sync(struct wined3d_cs *cs, const void *data)
|
||||
{
|
||||
}
|
||||
@@ -1940,6 +1953,41 @@ void wined3d_cs_emit_push_constants(struct wined3d_cs *cs, enum wined3d_push_con
|
||||
@@ -1952,6 +1965,41 @@ void wined3d_cs_emit_push_constants(struct wined3d_cs *cs, enum wined3d_push_con
|
||||
cs->ops->submit(cs);
|
||||
}
|
||||
|
||||
@@ -96,7 +105,7 @@ index bf1b63b897..72e177a41e 100644
|
||||
static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
|
||||
{
|
||||
/* WINED3D_CS_OP_SYNC */ wined3d_cs_exec_sync,
|
||||
@@ -1984,6 +2032,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
@@ -1996,6 +2044,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
/* WINED3D_CS_OP_BLT_SUB_RESOURCE */ wined3d_cs_exec_blt_sub_resource,
|
||||
/* WINED3D_CS_OP_UPDATE_SUB_RESOURCE */ wined3d_cs_exec_update_sub_resource,
|
||||
/* WINED3D_CS_OP_PUSH_CONSTANTS */ wined3d_cs_exec_push_constants,
|
||||
@@ -105,10 +114,10 @@ index bf1b63b897..72e177a41e 100644
|
||||
|
||||
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 500506d789..f1b90f5ee1 100644
|
||||
index 9dc893bfeb..33c1451a99 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -4328,10 +4328,8 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
|
||||
@@ -4324,10 +4324,8 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
@@ -122,10 +131,10 @@ index 500506d789..f1b90f5ee1 100644
|
||||
|
||||
struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(const struct wined3d_device *device,
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index ad72e10d7a..59b446167b 100644
|
||||
index 26df981c77..43cca136d1 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -3232,6 +3232,9 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
|
||||
@@ -3237,6 +3237,9 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
|
||||
const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
|
||||
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;
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
From 3d5c666305162466d808a7f8c8940264c9af019c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefandoesinger@gmx.at>
|
||||
Date: Thu, 7 Apr 2016 20:04:17 +0100
|
||||
Subject: wined3d: Avoid destroying views in color and depth fills.
|
||||
|
||||
---
|
||||
dlls/wined3d/surface.c | 54 ++++++++++++++++++++------------------------------
|
||||
1 file changed, 22 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index 24c8941ed7..5169cd8cea 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -548,8 +548,7 @@ static HRESULT wined3d_surface_depth_fill(struct wined3d_surface *surface, const
|
||||
struct wined3d_resource *resource = &surface->container->resource;
|
||||
struct wined3d_device *device = resource->device;
|
||||
const struct wined3d_blitter_ops *blitter;
|
||||
- struct wined3d_rendertarget_view *view;
|
||||
- struct wined3d_view_desc view_desc;
|
||||
+ struct wined3d_rendertarget_view view;
|
||||
HRESULT hr;
|
||||
|
||||
if (!(blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info,
|
||||
@@ -559,21 +558,17 @@ static HRESULT wined3d_surface_depth_fill(struct wined3d_surface *surface, const
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
- view_desc.format_id = resource->format->id;
|
||||
- view_desc.flags = 0;
|
||||
- view_desc.u.texture.level_idx = surface->texture_level;
|
||||
- view_desc.u.texture.level_count = 1;
|
||||
- view_desc.u.texture.layer_idx = surface->texture_layer;
|
||||
- view_desc.u.texture.layer_count = 1;
|
||||
- if (FAILED(hr = wined3d_rendertarget_view_create(&view_desc,
|
||||
- resource, NULL, &wined3d_null_parent_ops, &view)))
|
||||
- {
|
||||
- ERR("Failed to create rendertarget view, hr %#x.\n", hr);
|
||||
- return hr;
|
||||
- }
|
||||
+ view.resource = resource;
|
||||
+ view.parent = NULL;
|
||||
+ view.parent_ops = &wined3d_null_parent_ops;
|
||||
+ view.format = resource->format;
|
||||
+ view.buffer_offset = 0;
|
||||
+ view.width = wined3d_texture_get_level_width(surface->container, surface->texture_level);
|
||||
+ view.height = wined3d_texture_get_level_height(surface->container, surface->texture_level);;
|
||||
+ view.depth = 1;
|
||||
+ view.sub_resource_idx = surface->texture_layer * surface->container->level_count + surface->texture_level;
|
||||
|
||||
- hr = blitter->depth_fill(device, view, rect, WINED3DCLEAR_ZBUFFER, depth, 0);
|
||||
- wined3d_rendertarget_view_decref(view);
|
||||
+ hr = blitter->depth_fill(device, &view, rect, WINED3DCLEAR_ZBUFFER, depth, 0);
|
||||
|
||||
return hr;
|
||||
}
|
||||
@@ -2259,8 +2254,7 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st
|
||||
struct wined3d_resource *resource = &s->container->resource;
|
||||
struct wined3d_device *device = resource->device;
|
||||
const struct wined3d_blitter_ops *blitter;
|
||||
- struct wined3d_rendertarget_view *view;
|
||||
- struct wined3d_view_desc view_desc;
|
||||
+ struct wined3d_rendertarget_view view;
|
||||
HRESULT hr;
|
||||
|
||||
if (!(blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info,
|
||||
@@ -2270,21 +2264,17 @@ HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const st
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
- view_desc.format_id = resource->format->id;
|
||||
- view_desc.flags = 0;
|
||||
- view_desc.u.texture.level_idx = s->texture_level;
|
||||
- view_desc.u.texture.level_count = 1;
|
||||
- view_desc.u.texture.layer_idx = s->texture_layer;
|
||||
- view_desc.u.texture.layer_count = 1;
|
||||
- if (FAILED(hr = wined3d_rendertarget_view_create(&view_desc,
|
||||
- resource, NULL, &wined3d_null_parent_ops, &view)))
|
||||
- {
|
||||
- ERR("Failed to create rendertarget view, hr %#x.\n", hr);
|
||||
- return hr;
|
||||
- }
|
||||
+ view.resource = resource;
|
||||
+ view.parent = NULL;
|
||||
+ view.parent_ops = &wined3d_null_parent_ops;
|
||||
+ view.format = resource->format;
|
||||
+ view.buffer_offset = 0;
|
||||
+ view.width = wined3d_texture_get_level_width(s->container, s->texture_level);
|
||||
+ view.height = wined3d_texture_get_level_height(s->container, s->texture_level);;
|
||||
+ view.depth = 1;
|
||||
+ view.sub_resource_idx = s->texture_layer * s->container->level_count + s->texture_level;
|
||||
|
||||
- hr = blitter->color_fill(device, view, rect, color);
|
||||
- wined3d_rendertarget_view_decref(view);
|
||||
+ hr = blitter->color_fill(device, &view, rect, color);
|
||||
|
||||
return hr;
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user