mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 76644a7c26f2c2b3a5968665c349b45bdb294387.
This commit is contained in:
parent
26a06cd63b
commit
e7a0f0e60e
@ -1,58 +0,0 @@
|
||||
From 5c5620766e4e3be85bdec4aab689b9f5b42b2f2b Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Bruni <mbruni@codeweavers.com>
|
||||
Date: Wed, 18 Jan 2017 21:35:28 +0100
|
||||
Subject: d3d9: Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx.
|
||||
|
||||
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
|
||||
---
|
||||
dlls/d3d9/device.c | 14 ++++++--------
|
||||
1 file changed, 6 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
|
||||
index e0bc5859c61..e646cb76c76 100644
|
||||
--- a/dlls/d3d9/device.c
|
||||
+++ b/dlls/d3d9/device.c
|
||||
@@ -2485,18 +2485,16 @@ static HRESULT WINAPI d3d9_device_DrawIndexedPrimitiveUP(IDirect3DDevice9Ex *ifa
|
||||
UINT primitive_count, const void *index_data, D3DFORMAT index_format,
|
||||
const void *vertex_data, UINT vertex_stride)
|
||||
{
|
||||
- struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
|
||||
- HRESULT hr;
|
||||
UINT idx_count = vertex_count_from_primitive_count(primitive_type, primitive_count);
|
||||
+ struct d3d9_device *device = impl_from_IDirect3DDevice9Ex(iface);
|
||||
UINT idx_fmt_size = index_format == D3DFMT_INDEX16 ? 2 : 4;
|
||||
+ UINT vtx_size = vertex_count * vertex_stride;
|
||||
UINT idx_size = idx_count * idx_fmt_size;
|
||||
struct wined3d_map_desc wined3d_map_desc;
|
||||
struct wined3d_box wined3d_box = {0};
|
||||
struct wined3d_resource *ib, *vb;
|
||||
- UINT ib_pos;
|
||||
-
|
||||
- UINT vtx_size = vertex_count * vertex_stride;
|
||||
- UINT vb_pos, align;
|
||||
+ UINT vb_pos, ib_pos, align;
|
||||
+ HRESULT hr;
|
||||
|
||||
TRACE("iface %p, primitive_type %#x, min_vertex_idx %u, vertex_count %u, primitive_count %u, "
|
||||
"index_data %p, index_format %#x, vertex_data %p, vertex_stride %u.\n",
|
||||
@@ -2536,7 +2534,7 @@ static HRESULT WINAPI d3d9_device_DrawIndexedPrimitiveUP(IDirect3DDevice9Ex *ifa
|
||||
if (FAILED(hr = wined3d_resource_map(vb, 0, &wined3d_map_desc, &wined3d_box,
|
||||
vb_pos ? WINED3D_MAP_NOOVERWRITE : WINED3D_MAP_DISCARD)))
|
||||
goto done;
|
||||
- memcpy(wined3d_map_desc.data, vertex_data, vtx_size);
|
||||
+ memcpy(wined3d_map_desc.data, (char *)vertex_data + min_vertex_idx * vertex_stride, vtx_size);
|
||||
wined3d_resource_unmap(vb, 0);
|
||||
device->vertex_buffer_pos = vb_pos + vtx_size;
|
||||
|
||||
@@ -2568,7 +2566,7 @@ static HRESULT WINAPI d3d9_device_DrawIndexedPrimitiveUP(IDirect3DDevice9Ex *ifa
|
||||
|
||||
wined3d_device_set_index_buffer(device->wined3d_device, device->index_buffer,
|
||||
wined3dformat_from_d3dformat(index_format), 0);
|
||||
- wined3d_device_set_base_vertex_index(device->wined3d_device, vb_pos / vertex_stride);
|
||||
+ wined3d_device_set_base_vertex_index(device->wined3d_device, vb_pos / vertex_stride - min_vertex_idx);
|
||||
|
||||
wined3d_device_set_primitive_type(device->wined3d_device, primitive_type);
|
||||
hr = wined3d_device_draw_indexed_primitive(device->wined3d_device, ib_pos / idx_fmt_size, idx_count);
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1,58 +0,0 @@
|
||||
From 6ab43f9745b48a8646b54c1a072a07ddd96e333b Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Bruni <mbruni@codeweavers.com>
|
||||
Date: Wed, 18 Jan 2017 21:35:29 +0100
|
||||
Subject: d3d8: Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx.
|
||||
|
||||
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
|
||||
---
|
||||
dlls/d3d8/device.c | 14 ++++++--------
|
||||
1 file changed, 6 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
|
||||
index 43b8e2be4bb..805694b8536 100644
|
||||
--- a/dlls/d3d8/device.c
|
||||
+++ b/dlls/d3d8/device.c
|
||||
@@ -2124,18 +2124,16 @@ static HRESULT WINAPI d3d8_device_DrawIndexedPrimitiveUP(IDirect3DDevice8 *iface
|
||||
UINT primitive_count, const void *index_data, D3DFORMAT index_format,
|
||||
const void *vertex_data, UINT vertex_stride)
|
||||
{
|
||||
- struct d3d8_device *device = impl_from_IDirect3DDevice8(iface);
|
||||
- HRESULT hr;
|
||||
UINT idx_count = vertex_count_from_primitive_count(primitive_type, primitive_count);
|
||||
+ struct d3d8_device *device = impl_from_IDirect3DDevice8(iface);
|
||||
UINT idx_fmt_size = index_format == D3DFMT_INDEX16 ? 2 : 4;
|
||||
+ UINT vtx_size = vertex_count * vertex_stride;
|
||||
UINT idx_size = idx_count * idx_fmt_size;
|
||||
struct wined3d_map_desc wined3d_map_desc;
|
||||
struct wined3d_box wined3d_box = {0};
|
||||
struct wined3d_resource *ib, *vb;
|
||||
- UINT ib_pos;
|
||||
-
|
||||
- UINT vtx_size = vertex_count * vertex_stride;
|
||||
- UINT vb_pos, align;
|
||||
+ UINT vb_pos, ib_pos, align;
|
||||
+ HRESULT hr;
|
||||
|
||||
TRACE("iface %p, primitive_type %#x, min_vertex_idx %u, vertex_count %u, primitive_count %u, "
|
||||
"index_data %p, index_format %#x, vertex_data %p, vertex_stride %u.\n",
|
||||
@@ -2168,7 +2166,7 @@ static HRESULT WINAPI d3d8_device_DrawIndexedPrimitiveUP(IDirect3DDevice8 *iface
|
||||
if (FAILED(hr = wined3d_resource_map(vb, 0, &wined3d_map_desc, &wined3d_box,
|
||||
vb_pos ? WINED3D_MAP_NOOVERWRITE : WINED3D_MAP_DISCARD)))
|
||||
goto done;
|
||||
- memcpy(wined3d_map_desc.data, vertex_data, vtx_size);
|
||||
+ memcpy(wined3d_map_desc.data, (char *)vertex_data + min_vertex_idx * vertex_stride, vtx_size);
|
||||
wined3d_resource_unmap(vb, 0);
|
||||
device->vertex_buffer_pos = vb_pos + vtx_size;
|
||||
|
||||
@@ -2200,7 +2198,7 @@ static HRESULT WINAPI d3d8_device_DrawIndexedPrimitiveUP(IDirect3DDevice8 *iface
|
||||
|
||||
wined3d_device_set_index_buffer(device->wined3d_device, device->index_buffer,
|
||||
wined3dformat_from_d3dformat(index_format), 0);
|
||||
- wined3d_device_set_base_vertex_index(device->wined3d_device, vb_pos / vertex_stride);
|
||||
+ wined3d_device_set_base_vertex_index(device->wined3d_device, vb_pos / vertex_stride - min_vertex_idx);
|
||||
|
||||
wined3d_device_set_primitive_type(device->wined3d_device, primitive_type);
|
||||
hr = wined3d_device_draw_indexed_primitive(device->wined3d_device, ib_pos / idx_fmt_size, idx_count);
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1,123 +0,0 @@
|
||||
From c50f96ff6353cc65ed3e39b43fd7e46cf2678c69 Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Bruni <mbruni@codeweavers.com>
|
||||
Date: Wed, 18 Jan 2017 21:35:30 +0100
|
||||
Subject: d3d9/tests: Add a test for DrawIndexedPrimitiveUP().
|
||||
|
||||
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
|
||||
---
|
||||
dlls/d3d9/tests/visual.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 94 insertions(+)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
|
||||
index a1064127d5a..be544f3b5c7 100644
|
||||
--- a/dlls/d3d9/tests/visual.c
|
||||
+++ b/dlls/d3d9/tests/visual.c
|
||||
@@ -22244,6 +22244,99 @@ done:
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
+static void test_drawindexedprimitiveup(void)
|
||||
+{
|
||||
+ static const struct vertex
|
||||
+ {
|
||||
+ struct vec3 position;
|
||||
+ DWORD diffuse;
|
||||
+ }
|
||||
+ quad[] =
|
||||
+ {
|
||||
+ {{-1.0f, -1.0f, 0.1f}, 0xff00ff00},
|
||||
+ {{-1.0f, 1.0f, 0.1f}, 0xff0000ff},
|
||||
+ {{ 1.0f, -1.0f, 0.1f}, 0xffff0000},
|
||||
+ {{ 1.0f, 1.0f, 0.1f}, 0xff0000ff},
|
||||
+
|
||||
+ {{-1.0f, -1.0f, 0.1f}, 0xff0000ff},
|
||||
+ {{-1.0f, 1.0f, 0.1f}, 0xff00ff00},
|
||||
+ {{ 1.0f, -1.0f, 0.1f}, 0xffff0000},
|
||||
+ {{ 1.0f, 1.0f, 0.1f}, 0xff00ff00},
|
||||
+ };
|
||||
+ static const unsigned short indices[] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||
+ IDirect3DDevice9 *device;
|
||||
+ IDirect3D9 *d3d;
|
||||
+ ULONG refcount;
|
||||
+ D3DCOLOR color;
|
||||
+ HWND window;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ window = create_window();
|
||||
+ d3d = Direct3DCreate9(D3D_SDK_VERSION);
|
||||
+ ok(!!d3d, "Failed to create a D3D object.\n");
|
||||
+
|
||||
+ if (!(device = create_device(d3d, window, window, TRUE)))
|
||||
+ {
|
||||
+ skip("Failed to create a D3D device.\n");
|
||||
+ IDirect3D9_Release(d3d);
|
||||
+ DestroyWindow(window);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ hr = IDirect3DDevice9_SetRenderState(device, D3DRS_CLIPPING, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable clipping, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_SetRenderState(device, D3DRS_ZENABLE, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable Z test, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_SetRenderState(device, D3DRS_LIGHTING, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable lighting, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
||||
+ ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice9_BeginScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_DrawIndexedPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 4, 4, 2, indices + 4, D3DFMT_INDEX16, quad, sizeof(*quad));
|
||||
+ ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_EndScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr);
|
||||
+
|
||||
+ color = getPixelColor(device, 160, 120);
|
||||
+ ok(color_match(color, 0x0040bf00, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 120);
|
||||
+ ok(color_match(color, 0x0040bf00, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 160, 360);
|
||||
+ ok(color_match(color, 0x00404080, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 360);
|
||||
+ ok(color_match(color, 0x00bf4000, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+
|
||||
+ hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
||||
+ ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice9_BeginScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_DrawIndexedPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 0, 4, 2, indices, D3DFMT_INDEX16, quad, sizeof(*quad));
|
||||
+ ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice9_EndScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr);
|
||||
+
|
||||
+ color = getPixelColor(device, 160, 120);
|
||||
+ ok(color_match(color, 0x004000bf, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 120);
|
||||
+ ok(color_match(color, 0x004000bf, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 160, 360);
|
||||
+ ok(color_match(color, 0x00408040, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 360);
|
||||
+ ok(color_match(color, 0x00bf0040, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+
|
||||
+ refcount = IDirect3DDevice9_Release(device);
|
||||
+ ok(!refcount, "Device has %u references left.\n", refcount);
|
||||
+ IDirect3D9_Release(d3d);
|
||||
+ DestroyWindow(window);
|
||||
+}
|
||||
+
|
||||
START_TEST(visual)
|
||||
{
|
||||
D3DADAPTER_IDENTIFIER9 identifier;
|
||||
@@ -22372,4 +22465,5 @@ START_TEST(visual)
|
||||
test_evict_bound_resources();
|
||||
test_max_index16();
|
||||
test_backbuffer_resize();
|
||||
+ test_drawindexedprimitiveup();
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1,132 +0,0 @@
|
||||
From 38c67dd093a7b64dc3730cf6b919f4bcf31c65f0 Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Bruni <mbruni@codeweavers.com>
|
||||
Date: Wed, 18 Jan 2017 21:35:31 +0100
|
||||
Subject: d3d8/tests: Add a test for DrawIndexedPrimitiveUP().
|
||||
|
||||
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
|
||||
---
|
||||
dlls/d3d8/tests/visual.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 103 insertions(+)
|
||||
|
||||
diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c
|
||||
index c0ecc6a6fa6..57c89171b7d 100644
|
||||
--- a/dlls/d3d8/tests/visual.c
|
||||
+++ b/dlls/d3d8/tests/visual.c
|
||||
@@ -9700,6 +9700,108 @@ done:
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
+static void test_drawindexedprimitiveup(void)
|
||||
+{
|
||||
+ static const struct vertex
|
||||
+ {
|
||||
+ struct vec3 position;
|
||||
+ DWORD diffuse;
|
||||
+ }
|
||||
+ quad[] =
|
||||
+ {
|
||||
+ {{-1.0f, -1.0f, 0.1f}, 0xff00ff00},
|
||||
+ {{-1.0f, 1.0f, 0.1f}, 0xff0000ff},
|
||||
+ {{ 1.0f, -1.0f, 0.1f}, 0xffff0000},
|
||||
+ {{ 1.0f, 1.0f, 0.1f}, 0xff0000ff},
|
||||
+
|
||||
+ {{-1.0f, -1.0f, 0.1f}, 0xff0000ff},
|
||||
+ {{-1.0f, 1.0f, 0.1f}, 0xff00ff00},
|
||||
+ {{ 1.0f, -1.0f, 0.1f}, 0xffff0000},
|
||||
+ {{ 1.0f, 1.0f, 0.1f}, 0xff00ff00},
|
||||
+ };
|
||||
+ static const unsigned short indices[] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||
+ IDirect3DDevice8 *device;
|
||||
+ IDirect3D8 *d3d;
|
||||
+ ULONG refcount;
|
||||
+ D3DCOLOR color;
|
||||
+ HWND window;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ window = create_window();
|
||||
+ d3d = Direct3DCreate8(D3D_SDK_VERSION);
|
||||
+ ok(!!d3d, "Failed to create a D3D object.\n");
|
||||
+
|
||||
+ if (!(device = create_device(d3d, window, window, TRUE)))
|
||||
+ {
|
||||
+ skip("Failed to create a D3D device.\n");
|
||||
+ IDirect3D8_Release(d3d);
|
||||
+ DestroyWindow(window);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ hr = IDirect3DDevice8_SetRenderState(device, D3DRS_CLIPPING, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable clipping, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_SetRenderState(device, D3DRS_ZENABLE, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable Z test, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_SetRenderState(device, D3DRS_LIGHTING, FALSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to disable lighting, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set color op, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set color arg, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set alpha op, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_SetTextureStageState(device, 0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set alpha arg, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_SetVertexShader(device, D3DFVF_XYZ | D3DFVF_DIFFUSE);
|
||||
+ ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
||||
+ ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_BeginScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_DrawIndexedPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 4, 4, 2, indices + 4, D3DFMT_INDEX16, quad, sizeof(*quad));
|
||||
+ ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_EndScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr);
|
||||
+
|
||||
+ color = getPixelColor(device, 160, 120);
|
||||
+ ok(color_match(color, 0x0040bf00, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 120);
|
||||
+ ok(color_match(color, 0x0040bf00, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 160, 360);
|
||||
+ ok(color_match(color, 0x00404080, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 360);
|
||||
+ ok(color_match(color, 0x00bf4000, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
||||
+ ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
||||
+
|
||||
+ hr = IDirect3DDevice8_BeginScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_DrawIndexedPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 0, 4, 2, indices, D3DFMT_INDEX16, quad, sizeof(*quad));
|
||||
+ ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
|
||||
+ hr = IDirect3DDevice8_EndScene(device);
|
||||
+ ok(SUCCEEDED(hr), "Failed to end scene, hr %#x.\n", hr);
|
||||
+
|
||||
+ color = getPixelColor(device, 160, 120);
|
||||
+ ok(color_match(color, 0x004000bf, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 120);
|
||||
+ ok(color_match(color, 0x004000bf, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 160, 360);
|
||||
+ ok(color_match(color, 0x00408040, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+ color = getPixelColor(device, 480, 360);
|
||||
+ ok(color_match(color, 0x00bf0040, 1), "Got unexpected color 0x%08x.\n", color);
|
||||
+
|
||||
+ refcount = IDirect3DDevice8_Release(device);
|
||||
+ ok(!refcount, "Device has %u references left.\n", refcount);
|
||||
+ IDirect3D8_Release(d3d);
|
||||
+ DestroyWindow(window);
|
||||
+}
|
||||
+
|
||||
START_TEST(visual)
|
||||
{
|
||||
D3DADAPTER_IDENTIFIER8 identifier;
|
||||
@@ -9770,4 +9872,5 @@ START_TEST(visual)
|
||||
test_edge_antialiasing_blending();
|
||||
test_max_index16();
|
||||
test_backbuffer_resize();
|
||||
+ test_drawindexedprimitiveup();
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [35993] Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx
|
@ -1,269 +0,0 @@
|
||||
From 0a0146b997a9c5d60fea6a4c6367e059241b942b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?J=C3=B3zef=20Kucia?= <jkucia@codeweavers.com>
|
||||
Date: Tue, 17 Jan 2017 12:26:37 +0100
|
||||
Subject: ddraw: Relax "dwSize" validation in ddraw_surface*_Lock().
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
|
||||
---
|
||||
dlls/ddraw/ddraw_private.h | 6 +--
|
||||
dlls/ddraw/surface.c | 91 ++++++++++++++++++++++++++--------------------
|
||||
dlls/ddraw/tests/ddraw7.c | 4 --
|
||||
3 files changed, 54 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
|
||||
index 0dc915cfcb2..a8ac865887d 100644
|
||||
--- a/dlls/ddraw/ddraw_private.h
|
||||
+++ b/dlls/ddraw/ddraw_private.h
|
||||
@@ -628,10 +628,10 @@ struct member_info
|
||||
/* Structure copy */
|
||||
#define ME(x,f,e) { x, #x, (void (*)(const void *))(f), offsetof(STRUCT, e) }
|
||||
|
||||
-#define DD_STRUCT_COPY_BYSIZE_(to,from,from_size) \
|
||||
+#define DD_STRUCT_COPY_BYSIZE_(to,from,to_size,from_size) \
|
||||
do { \
|
||||
DWORD __size = (to)->dwSize; \
|
||||
- DWORD __resetsize = min(__size, sizeof(*to)); \
|
||||
+ DWORD __resetsize = min(to_size, sizeof(*to)); \
|
||||
DWORD __copysize = min(__resetsize, from_size); \
|
||||
assert(to != from); \
|
||||
memcpy(to, from, __copysize); \
|
||||
@@ -639,7 +639,7 @@ struct member_info
|
||||
(to)->dwSize = __size; /* restore size */ \
|
||||
} while (0)
|
||||
|
||||
-#define DD_STRUCT_COPY_BYSIZE(to,from) DD_STRUCT_COPY_BYSIZE_(to,from,(from)->dwSize)
|
||||
+#define DD_STRUCT_COPY_BYSIZE(to,from) DD_STRUCT_COPY_BYSIZE_(to,from,(to)->dwSize,(from)->dwSize)
|
||||
|
||||
HRESULT hr_ddraw_from_wined3d(HRESULT hr) DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
|
||||
index 7d1fc2edd34..cbe1eb7d98f 100644
|
||||
--- a/dlls/ddraw/surface.c
|
||||
+++ b/dlls/ddraw/surface.c
|
||||
@@ -955,14 +955,15 @@ static HRESULT WINAPI ddraw_surface1_GetAttachedSurface(IDirectDrawSurface *ifac
|
||||
*
|
||||
*****************************************************************************/
|
||||
static HRESULT surface_lock(struct ddraw_surface *surface,
|
||||
- RECT *rect, DDSURFACEDESC2 *surface_desc, DWORD flags, HANDLE h)
|
||||
+ RECT *rect, DDSURFACEDESC2 *surface_desc, unsigned int surface_desc_size,
|
||||
+ DWORD flags, HANDLE h)
|
||||
{
|
||||
- struct wined3d_box box;
|
||||
struct wined3d_map_desc map_desc;
|
||||
+ struct wined3d_box box;
|
||||
HRESULT hr = DD_OK;
|
||||
|
||||
- TRACE("surface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
- surface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
+ TRACE("surface %p, rect %s, surface_desc %p, surface_desc_size %u, flags %#x, h %p.\n",
|
||||
+ surface, wine_dbgstr_rect(rect), surface_desc, surface_desc_size, flags, h);
|
||||
|
||||
/* surface->surface_desc.dwWidth and dwHeight are changeable, thus lock */
|
||||
wined3d_mutex_lock();
|
||||
@@ -1026,7 +1027,7 @@ static HRESULT surface_lock(struct ddraw_surface *surface,
|
||||
}
|
||||
|
||||
/* Windows does not set DDSD_LPSURFACE on locked surfaces. */
|
||||
- DD_STRUCT_COPY_BYSIZE(surface_desc, &surface->surface_desc);
|
||||
+ DD_STRUCT_COPY_BYSIZE_(surface_desc, &surface->surface_desc, surface_desc_size, surface->surface_desc.dwSize);
|
||||
surface_desc->lpSurface = map_desc.data;
|
||||
|
||||
TRACE("locked surface returning description :\n");
|
||||
@@ -1038,63 +1039,80 @@ static HRESULT surface_lock(struct ddraw_surface *surface,
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
+static BOOL surface_validate_lock_desc(struct ddraw_surface *surface,
|
||||
+ const DDSURFACEDESC *desc, unsigned int *size)
|
||||
+{
|
||||
+ if (!desc)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (desc->dwSize == sizeof(DDSURFACEDESC) || desc->dwSize == sizeof(DDSURFACEDESC2))
|
||||
+ {
|
||||
+ *size = desc->dwSize;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
+ if (surface->version == 7
|
||||
+ && surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_TEXTURE
|
||||
+ && !(surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))
|
||||
+ {
|
||||
+ if (desc->dwSize >= sizeof(DDSURFACEDESC2))
|
||||
+ *size = sizeof(DDSURFACEDESC2);
|
||||
+ else
|
||||
+ *size = sizeof(DDSURFACEDESC);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
+ WARN("Invalid structure size %u.\n", desc->dwSize);
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI ddraw_surface7_Lock(IDirectDrawSurface7 *iface,
|
||||
RECT *rect, DDSURFACEDESC2 *surface_desc, DWORD flags, HANDLE h)
|
||||
{
|
||||
struct ddraw_surface *surface = impl_from_IDirectDrawSurface7(iface);
|
||||
+ unsigned int surface_desc_size;
|
||||
|
||||
TRACE("iface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
iface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
|
||||
- if (!surface_desc) return DDERR_INVALIDPARAMS;
|
||||
- if (surface_desc->dwSize != sizeof(DDSURFACEDESC) &&
|
||||
- surface_desc->dwSize != sizeof(DDSURFACEDESC2))
|
||||
- {
|
||||
- WARN("Invalid structure size %d, returning DDERR_INVALIDPARAMS\n", surface_desc->dwSize);
|
||||
+ if (!surface_validate_lock_desc(surface, (DDSURFACEDESC *)surface_desc, &surface_desc_size))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
- }
|
||||
- return surface_lock(surface, rect, surface_desc, flags, h);
|
||||
+
|
||||
+ return surface_lock(surface, rect, surface_desc, surface_desc_size, flags, h);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ddraw_surface4_Lock(IDirectDrawSurface4 *iface, RECT *rect,
|
||||
DDSURFACEDESC2 *surface_desc, DWORD flags, HANDLE h)
|
||||
{
|
||||
struct ddraw_surface *surface = impl_from_IDirectDrawSurface4(iface);
|
||||
+ unsigned int surface_desc_size;
|
||||
|
||||
TRACE("iface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
iface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
|
||||
- if (!surface_desc) return DDERR_INVALIDPARAMS;
|
||||
- if (surface_desc->dwSize != sizeof(DDSURFACEDESC) &&
|
||||
- surface_desc->dwSize != sizeof(DDSURFACEDESC2))
|
||||
- {
|
||||
- WARN("Invalid structure size %d, returning DDERR_INVALIDPARAMS\n", surface_desc->dwSize);
|
||||
+ if (!surface_validate_lock_desc(surface, (DDSURFACEDESC *)surface_desc, &surface_desc_size))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
- }
|
||||
- return surface_lock(surface, rect, surface_desc, flags, h);
|
||||
+
|
||||
+ return surface_lock(surface, rect, surface_desc, surface_desc_size, flags, h);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ddraw_surface3_Lock(IDirectDrawSurface3 *iface, RECT *rect,
|
||||
DDSURFACEDESC *surface_desc, DWORD flags, HANDLE h)
|
||||
{
|
||||
struct ddraw_surface *surface = impl_from_IDirectDrawSurface3(iface);
|
||||
+ unsigned int surface_desc_size;
|
||||
DDSURFACEDESC2 surface_desc2;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("iface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
iface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
|
||||
- if (!surface_desc) return DDERR_INVALIDPARAMS;
|
||||
- if (surface_desc->dwSize != sizeof(DDSURFACEDESC) &&
|
||||
- surface_desc->dwSize != sizeof(DDSURFACEDESC2))
|
||||
- {
|
||||
- WARN("Invalid structure size %d, returning DDERR_INVALIDPARAMS\n", surface_desc->dwSize);
|
||||
+ if (!surface_validate_lock_desc(surface, surface_desc, &surface_desc_size))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
- }
|
||||
|
||||
surface_desc2.dwSize = surface_desc->dwSize;
|
||||
surface_desc2.dwFlags = 0;
|
||||
- hr = surface_lock(surface, rect, &surface_desc2, flags, h);
|
||||
+ hr = surface_lock(surface, rect, &surface_desc2, surface_desc_size, flags, h);
|
||||
DDSD2_to_DDSD(&surface_desc2, surface_desc);
|
||||
surface_desc->dwSize = surface_desc2.dwSize;
|
||||
return hr;
|
||||
@@ -1104,23 +1122,19 @@ static HRESULT WINAPI ddraw_surface2_Lock(IDirectDrawSurface2 *iface, RECT *rect
|
||||
DDSURFACEDESC *surface_desc, DWORD flags, HANDLE h)
|
||||
{
|
||||
struct ddraw_surface *surface = impl_from_IDirectDrawSurface2(iface);
|
||||
+ unsigned int surface_desc_size;
|
||||
DDSURFACEDESC2 surface_desc2;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("iface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
iface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
|
||||
- if (!surface_desc) return DDERR_INVALIDPARAMS;
|
||||
- if (surface_desc->dwSize != sizeof(DDSURFACEDESC) &&
|
||||
- surface_desc->dwSize != sizeof(DDSURFACEDESC2))
|
||||
- {
|
||||
- WARN("Invalid structure size %d, returning DDERR_INVALIDPARAMS\n", surface_desc->dwSize);
|
||||
+ if (!surface_validate_lock_desc(surface, surface_desc, &surface_desc_size))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
- }
|
||||
|
||||
surface_desc2.dwSize = surface_desc->dwSize;
|
||||
surface_desc2.dwFlags = 0;
|
||||
- hr = surface_lock(surface, rect, &surface_desc2, flags, h);
|
||||
+ hr = surface_lock(surface, rect, &surface_desc2, surface_desc_size, flags, h);
|
||||
DDSD2_to_DDSD(&surface_desc2, surface_desc);
|
||||
surface_desc->dwSize = surface_desc2.dwSize;
|
||||
return hr;
|
||||
@@ -1130,22 +1144,19 @@ static HRESULT WINAPI ddraw_surface1_Lock(IDirectDrawSurface *iface, RECT *rect,
|
||||
DDSURFACEDESC *surface_desc, DWORD flags, HANDLE h)
|
||||
{
|
||||
struct ddraw_surface *surface = impl_from_IDirectDrawSurface(iface);
|
||||
+ unsigned int surface_desc_size;
|
||||
DDSURFACEDESC2 surface_desc2;
|
||||
HRESULT hr;
|
||||
+
|
||||
TRACE("iface %p, rect %s, surface_desc %p, flags %#x, h %p.\n",
|
||||
iface, wine_dbgstr_rect(rect), surface_desc, flags, h);
|
||||
|
||||
- if (!surface_desc) return DDERR_INVALIDPARAMS;
|
||||
- if (surface_desc->dwSize != sizeof(DDSURFACEDESC) &&
|
||||
- surface_desc->dwSize != sizeof(DDSURFACEDESC2))
|
||||
- {
|
||||
- WARN("Invalid structure size %d, returning DDERR_INVALIDPARAMS\n", surface_desc->dwSize);
|
||||
+ if (!surface_validate_lock_desc(surface, surface_desc, &surface_desc_size))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
- }
|
||||
|
||||
surface_desc2.dwSize = surface_desc->dwSize;
|
||||
surface_desc2.dwFlags = 0;
|
||||
- hr = surface_lock(surface, rect, &surface_desc2, flags, h);
|
||||
+ hr = surface_lock(surface, rect, &surface_desc2, surface_desc_size, flags, h);
|
||||
DDSD2_to_DDSD(&surface_desc2, surface_desc);
|
||||
surface_desc->dwSize = surface_desc2.dwSize;
|
||||
return hr;
|
||||
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
|
||||
index 7957f1733d5..bc35ae78199 100644
|
||||
--- a/dlls/ddraw/tests/ddraw7.c
|
||||
+++ b/dlls/ddraw/tests/ddraw7.c
|
||||
@@ -5909,7 +5909,6 @@ static void test_surface_lock(void)
|
||||
expected_hr = tests[i].caps & DDSCAPS_TEXTURE && !(tests[i].caps & DDSCAPS_VIDEOMEMORY)
|
||||
? DD_OK : DDERR_INVALIDPARAMS;
|
||||
hr = IDirectDrawSurface7_Lock(surface, NULL, &ddsd, DDLOCK_WAIT, NULL);
|
||||
- todo_wine_if(expected_hr == D3D_OK)
|
||||
ok(hr == expected_hr, "Got hr %#x, expected %#x, type %s.\n", hr, expected_hr, tests[i].name);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
@@ -12340,7 +12339,6 @@ static void test_surface_desc_size(void)
|
||||
desc.blob[sizeof(DDSURFACEDESC2)] = 0xef;
|
||||
hr = IDirectDrawSurface_Lock(surface, NULL, &desc.desc1, 0, 0);
|
||||
expected_hr = ignore_size || valid_size ? DD_OK : DDERR_INVALIDPARAMS;
|
||||
- todo_wine_if(ignore_size && !valid_size)
|
||||
ok(hr == expected_hr, "Got hr %#x, expected %#x, dwSize %u, type %s.\n",
|
||||
hr, expected_hr, desc_sizes[j], surface_caps[i].name);
|
||||
ok(desc.dwSize == desc_sizes[j], "dwSize was changed from %u to %u, type %s.\n",
|
||||
@@ -12367,7 +12365,6 @@ static void test_surface_desc_size(void)
|
||||
desc.blob[sizeof(DDSURFACEDESC2)] = 0xef;
|
||||
hr = IDirectDrawSurface3_Lock(surface3, NULL, &desc.desc1, 0, 0);
|
||||
expected_hr = ignore_size || valid_size ? DD_OK : DDERR_INVALIDPARAMS;
|
||||
- todo_wine_if(ignore_size && !valid_size)
|
||||
ok(hr == expected_hr, "Got hr %#x, expected %#x, dwSize %u, type %s.\n",
|
||||
hr, expected_hr, desc_sizes[j], surface_caps[i].name);
|
||||
ok(desc.dwSize == desc_sizes[j], "dwSize was changed from %u to %u, type %s.\n",
|
||||
@@ -12394,7 +12391,6 @@ static void test_surface_desc_size(void)
|
||||
desc.blob[sizeof(DDSURFACEDESC2)] = 0xef;
|
||||
hr = IDirectDrawSurface7_Lock(surface7, NULL, &desc.desc2, 0, 0);
|
||||
expected_hr = ignore_size || valid_size ? DD_OK : DDERR_INVALIDPARAMS;
|
||||
- todo_wine_if(ignore_size && !valid_size)
|
||||
ok(hr == expected_hr, "Got hr %#x, expected %#x, dwSize %u, type %s.\n",
|
||||
hr, expected_hr, desc_sizes[j], surface_caps[i].name);
|
||||
ok(desc.dwSize == desc_sizes[j], "dwSize was changed from %u to %u, type %s.\n",
|
||||
--
|
||||
2.11.0
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [14897] Relax dwSize validation ddraw_surface*_Lock
|
@ -52,13 +52,13 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "088968f242a7efd57cd6d07602443157c40be6ac"
|
||||
echo "76644a7c26f2c2b3a5968665c349b45bdb294387"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
version()
|
||||
{
|
||||
echo "Wine Staging 2.0"
|
||||
echo "Wine Staging 2.1 (unreleased)"
|
||||
echo "Copyright (C) 2014-2017 the Wine Staging project authors."
|
||||
echo ""
|
||||
echo "Patchset to be applied on upstream Wine:"
|
||||
@ -116,7 +116,6 @@ patch_enable_all ()
|
||||
enable_d3d11_ResolveSubresource="$1"
|
||||
enable_d3d8_ValidateShader="$1"
|
||||
enable_d3d9_DesktopWindow="$1"
|
||||
enable_d3d9_DrawIndexedPrimitiveUP="$1"
|
||||
enable_d3d9_Surface_Refcount="$1"
|
||||
enable_d3d9_Tests="$1"
|
||||
enable_d3dx11_D3DX11CreateShaderResourceViewFromMemory="$1"
|
||||
@ -143,7 +142,6 @@ patch_enable_all ()
|
||||
enable_ddraw_Fix_Typos="$1"
|
||||
enable_ddraw_FlipToGDISurface="$1"
|
||||
enable_ddraw_IDirect3DTexture2_Load="$1"
|
||||
enable_ddraw_Relax_dwSize_Validation="$1"
|
||||
enable_ddraw_Rendering_Targets="$1"
|
||||
enable_ddraw_Write_Vtable="$1"
|
||||
enable_dinput_Initialize="$1"
|
||||
@ -412,7 +410,6 @@ patch_enable_all ()
|
||||
enable_wined3d_GTX_560M="$1"
|
||||
enable_wined3d_Limit_Vram="$1"
|
||||
enable_wined3d_QUERY_Stubs="$1"
|
||||
enable_wined3d_Render_Target="$1"
|
||||
enable_wined3d_Revert_Pixel_Center_Offset="$1"
|
||||
enable_wined3d_Silence_FIXMEs="$1"
|
||||
enable_wined3d_WINED3DFMT_R32G32_UINT="$1"
|
||||
@ -567,9 +564,6 @@ patch_enable ()
|
||||
d3d9-DesktopWindow)
|
||||
enable_d3d9_DesktopWindow="$2"
|
||||
;;
|
||||
d3d9-DrawIndexedPrimitiveUP)
|
||||
enable_d3d9_DrawIndexedPrimitiveUP="$2"
|
||||
;;
|
||||
d3d9-Surface_Refcount)
|
||||
enable_d3d9_Surface_Refcount="$2"
|
||||
;;
|
||||
@ -648,9 +642,6 @@ patch_enable ()
|
||||
ddraw-IDirect3DTexture2_Load)
|
||||
enable_ddraw_IDirect3DTexture2_Load="$2"
|
||||
;;
|
||||
ddraw-Relax_dwSize_Validation)
|
||||
enable_ddraw_Relax_dwSize_Validation="$2"
|
||||
;;
|
||||
ddraw-Rendering_Targets)
|
||||
enable_ddraw_Rendering_Targets="$2"
|
||||
;;
|
||||
@ -1455,9 +1446,6 @@ patch_enable ()
|
||||
wined3d-QUERY_Stubs)
|
||||
enable_wined3d_QUERY_Stubs="$2"
|
||||
;;
|
||||
wined3d-Render_Target)
|
||||
enable_wined3d_Render_Target="$2"
|
||||
;;
|
||||
wined3d-Revert_Pixel_Center_Offset)
|
||||
enable_wined3d_Revert_Pixel_Center_Offset="$2"
|
||||
;;
|
||||
@ -2008,9 +1996,6 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then
|
||||
if test "$enable_wined3d_QUERY_Stubs" -gt 1; then
|
||||
abort "Patchset wined3d-QUERY_Stubs disabled, but wined3d-CSMT_Helper depends on that."
|
||||
fi
|
||||
if test "$enable_wined3d_Render_Target" -gt 1; then
|
||||
abort "Patchset wined3d-Render_Target disabled, but wined3d-CSMT_Helper depends on that."
|
||||
fi
|
||||
if test "$enable_wined3d_Revert_Pixel_Center_Offset" -gt 1; then
|
||||
abort "Patchset wined3d-Revert_Pixel_Center_Offset disabled, but wined3d-CSMT_Helper depends on that."
|
||||
fi
|
||||
@ -2024,7 +2009,6 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then
|
||||
enable_wined3d_Accounting=1
|
||||
enable_wined3d_DXTn=1
|
||||
enable_wined3d_QUERY_Stubs=1
|
||||
enable_wined3d_Render_Target=1
|
||||
enable_wined3d_Revert_Pixel_Center_Offset=1
|
||||
enable_wined3d_Silence_FIXMEs=1
|
||||
fi
|
||||
@ -3332,27 +3316,6 @@ if test "$enable_d3d9_DesktopWindow" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset d3d9-DrawIndexedPrimitiveUP
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#35993] Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d8/device.c, dlls/d3d8/tests/visual.c, dlls/d3d9/device.c, dlls/d3d9/tests/visual.c
|
||||
# |
|
||||
if test "$enable_d3d9_DrawIndexedPrimitiveUP" -eq 1; then
|
||||
patch_apply d3d9-DrawIndexedPrimitiveUP/0001-d3d9-Fix-DrawIndexedPrimitiveUP-with-non-zero-min_ve.patch
|
||||
patch_apply d3d9-DrawIndexedPrimitiveUP/0002-d3d8-Fix-DrawIndexedPrimitiveUP-with-non-zero-min_ve.patch
|
||||
patch_apply d3d9-DrawIndexedPrimitiveUP/0003-d3d9-tests-Add-a-test-for-DrawIndexedPrimitiveUP.patch
|
||||
patch_apply d3d9-DrawIndexedPrimitiveUP/0004-d3d8-tests-Add-a-test-for-DrawIndexedPrimitiveUP.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Matteo Bruni", "d3d9: Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx.", 1 },';
|
||||
printf '%s\n' '+ { "Matteo Bruni", "d3d8: Fix DrawIndexedPrimitiveUP with non-zero min_vertex_idx.", 1 },';
|
||||
printf '%s\n' '+ { "Matteo Bruni", "d3d9/tests: Add a test for DrawIndexedPrimitiveUP().", 1 },';
|
||||
printf '%s\n' '+ { "Matteo Bruni", "d3d8/tests: Add a test for DrawIndexedPrimitiveUP().", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset d3d9-Surface_Refcount
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -3807,21 +3770,6 @@ if test "$enable_ddraw_IDirect3DTexture2_Load" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ddraw-Relax_dwSize_Validation
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#14897] Relax dwSize validation ddraw_surface*_Lock
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ddraw/ddraw_private.h, dlls/ddraw/surface.c, dlls/ddraw/tests/ddraw7.c
|
||||
# |
|
||||
if test "$enable_ddraw_Relax_dwSize_Validation" -eq 1; then
|
||||
patch_apply ddraw-Relax_dwSize_Validation/0001-ddraw-Relax-dwSize-validation-in-ddraw_surface-_Lock.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Józef Kucia", "ddraw: Relax \"dwSize\" validation in ddraw_surface*_Lock().", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ddraw-Rendering_Targets
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -8406,20 +8354,6 @@ if test "$enable_wined3d_QUERY_Stubs" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wined3d-Render_Target
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/wined3d/context.c, dlls/wined3d/state.c
|
||||
# |
|
||||
if test "$enable_wined3d_Render_Target" -eq 1; then
|
||||
patch_apply wined3d-Render_Target/0001-wined3d-Handle-no-render-target-view-case-when-setti.patch
|
||||
patch_apply wined3d-Render_Target/0002-wined3d-Set-draw-buffer-mask-to-zero-GL_NONE-when-no.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael Müller", "wined3d: Handle no render target view case when setting scissors.", 1 },';
|
||||
printf '%s\n' '+ { "Michael Müller", "wined3d: Set draw buffer mask to zero (GL_NONE) when no render target view is attached.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset wined3d-Revert_Pixel_Center_Offset
|
||||
# |
|
||||
# | Modified files:
|
||||
@ -8437,7 +8371,7 @@ fi
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * d3d11-Deferred_Context, makedep-PARENTSPEC, ntdll-Attach_Process_DLLs, ntdll-DllOverrides_WOW64, ntdll-
|
||||
# | Loader_Machine_Type, ntdll-DllRedirects, wined3d-1DTextures, wined3d-Accounting, wined3d-DXTn, wined3d-QUERY_Stubs,
|
||||
# | wined3d-Render_Target, wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs
|
||||
# | wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/wined3d-csmt/Makefile.in, dlls/wined3d-csmt/version.rc
|
||||
@ -8504,7 +8438,7 @@ fi
|
||||
# | This patchset has the following (direct or indirect) dependencies:
|
||||
# | * d3d11-Deferred_Context, makedep-PARENTSPEC, ntdll-Attach_Process_DLLs, ntdll-DllOverrides_WOW64, ntdll-
|
||||
# | Loader_Machine_Type, ntdll-DllRedirects, wined3d-1DTextures, wined3d-Accounting, wined3d-DXTn, wined3d-QUERY_Stubs,
|
||||
# | wined3d-Render_Target, wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs, wined3d-CSMT_Helper
|
||||
# | wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs, wined3d-CSMT_Helper
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#11674] Support for CSMT (command stream) to increase graphic performance
|
||||
|
@ -4,7 +4,6 @@ Depends: wined3d-QUERY_Stubs
|
||||
Depends: wined3d-1DTextures
|
||||
Depends: wined3d-Silence_FIXMEs
|
||||
Depends: wined3d-Revert_Pixel_Center_Offset
|
||||
Depends: wined3d-Render_Target
|
||||
Depends: d3d11-Deferred_Context
|
||||
Depends: makedep-PARENTSPEC
|
||||
Depends: ntdll-DllRedirects
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 848085bd98f238e46bc23113ed9329cb14b6c1cf Mon Sep 17 00:00:00 2001
|
||||
From c563899de22cc9420394ffb433e5541110025c50 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 15 Nov 2016 22:07:56 +0100
|
||||
Subject: Revert "wined3d: Introduce
|
||||
@ -14,7 +14,7 @@ This reverts commit 5cdb8f2486cf00a61c1aac20daef8c7cac0d8312.
|
||||
4 files changed, 10 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 3cc78234b0d..7dbdc0aa1e2 100644
|
||||
index e55372065ad..bb3a5f8da6f 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -291,8 +291,7 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
|
||||
@ -37,10 +37,10 @@ index 3cc78234b0d..7dbdc0aa1e2 100644
|
||||
else
|
||||
{
|
||||
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
|
||||
index 5952c6cc610..402bad31da0 100644
|
||||
index 283e49760ee..f92aa8ff692 100644
|
||||
--- a/dlls/wined3d/state.c
|
||||
+++ b/dlls/wined3d/state.c
|
||||
@@ -4636,7 +4636,7 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine
|
||||
@@ -4637,7 +4637,7 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine
|
||||
if (vp.height > target->height)
|
||||
vp.height = target->height;
|
||||
|
||||
@ -49,7 +49,7 @@ index 5952c6cc610..402bad31da0 100644
|
||||
}
|
||||
else if (depth_stencil)
|
||||
{
|
||||
@@ -4678,7 +4678,7 @@ static void viewport_miscpart_cc(struct wined3d_context *context,
|
||||
@@ -4679,7 +4679,7 @@ static void viewport_miscpart_cc(struct wined3d_context *context,
|
||||
if (vp.height > target->height)
|
||||
vp.height = target->height;
|
||||
|
||||
@ -58,15 +58,15 @@ index 5952c6cc610..402bad31da0 100644
|
||||
}
|
||||
else if (depth_stencil)
|
||||
{
|
||||
@@ -4865,7 +4865,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st
|
||||
@@ -4864,7 +4864,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st
|
||||
UINT height;
|
||||
UINT width;
|
||||
|
||||
if (target)
|
||||
{
|
||||
- wined3d_rendertarget_view_get_drawable_size(target, context, &width, &height);
|
||||
+ surface_get_drawable_size(wined3d_rendertarget_view_get_surface(target), context, &width, &height);
|
||||
gl_info->gl_ops.gl.p_glScissor(r->left, height - r->bottom, r->right - r->left, r->bottom - r->top);
|
||||
}
|
||||
else
|
||||
- wined3d_rendertarget_view_get_drawable_size(target, context, &width, &height);
|
||||
+ surface_get_drawable_size(wined3d_rendertarget_view_get_surface(target), context, &width, &height);
|
||||
gl_info->gl_ops.gl.p_glScissor(r->left, height - r->bottom, r->right - r->left, r->bottom - r->top);
|
||||
}
|
||||
checkGLcall("glScissor");
|
||||
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
|
||||
index 609f8f7365e..a0a46208343 100644
|
||||
--- a/dlls/wined3d/view.c
|
||||
@ -97,10 +97,10 @@ index 609f8f7365e..a0a46208343 100644
|
||||
/* The drawable size of an onscreen drawable is the surface size.
|
||||
* (Actually: The window size, but the surface is created in window
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index e7321b889ac..28efc25b908 100644
|
||||
index 690f22c9dd0..45b1ea84dd6 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2987,6 +2987,8 @@ HRESULT surface_color_fill(struct wined3d_surface *s,
|
||||
@@ -2984,6 +2984,8 @@ HRESULT surface_color_fill(struct wined3d_surface *s,
|
||||
const RECT *rect, const struct wined3d_color *color) DECLSPEC_HIDDEN;
|
||||
HRESULT wined3d_surface_create_dc(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
|
||||
void wined3d_surface_destroy_dc(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
|
||||
@ -109,7 +109,7 @@ index e7321b889ac..28efc25b908 100644
|
||||
void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb,
|
||||
struct wined3d_context *context) DECLSPEC_HIDDEN;
|
||||
HRESULT surface_load_location(struct wined3d_surface *surface,
|
||||
@@ -3302,9 +3304,6 @@ static inline struct wined3d_surface *wined3d_rendertarget_view_get_surface(
|
||||
@@ -3299,9 +3301,6 @@ static inline struct wined3d_surface *wined3d_rendertarget_view_get_surface(
|
||||
return texture->sub_resources[view->sub_resource_idx].u.surface;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e5634d551d285a969917899fd21fe5754a418d1c Mon Sep 17 00:00:00 2001
|
||||
From 85fead1b36db1707516604c7e0dfeb35b5f92f4e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Thu, 29 Oct 2015 15:41:59 +0100
|
||||
Subject: wined3d: Make surface_load_location return nothing.
|
||||
@ -11,10 +11,10 @@ FIXME: I guess Henri disagrees.
|
||||
3 files changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index d084ffe..ea3c6f0 100644
|
||||
index 8b379660028..3443d8fd996 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -3188,7 +3188,7 @@ static void surface_load_renderbuffer(struct wined3d_surface *surface, struct wi
|
||||
@@ -3008,7 +3008,7 @@ static void surface_load_renderbuffer(struct wined3d_surface *surface, struct wi
|
||||
}
|
||||
|
||||
/* Context activation is done by the caller. Context may be NULL in ddraw-only mode. */
|
||||
@ -23,7 +23,7 @@ index d084ffe..ea3c6f0 100644
|
||||
{
|
||||
unsigned int sub_resource_idx = surface_get_sub_resource_idx(surface);
|
||||
struct wined3d_texture *texture = surface->container;
|
||||
@@ -3206,7 +3206,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
@@ -3026,7 +3026,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
|| (surface->ds_current_size.cx == surface_w && surface->ds_current_size.cy == surface_h)))
|
||||
{
|
||||
TRACE("Location (%#x) is already up to date.\n", location);
|
||||
@ -32,8 +32,8 @@ index d084ffe..ea3c6f0 100644
|
||||
}
|
||||
|
||||
if (WARN_ON(d3d))
|
||||
@@ -3244,7 +3244,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
|
||||
@@ -3057,7 +3057,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
{
|
||||
FIXME("Unimplemented copy from %s to %s for depth/stencil buffers.\n",
|
||||
wined3d_debug_location(sub_resource->locations), wined3d_debug_location(location));
|
||||
- return WINED3DERR_INVALIDCALL;
|
||||
@ -41,7 +41,7 @@ index d084ffe..ea3c6f0 100644
|
||||
}
|
||||
|
||||
switch (location)
|
||||
@@ -3257,7 +3257,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
@@ -3070,7 +3070,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
|
||||
case WINED3D_LOCATION_DRAWABLE:
|
||||
if (FAILED(hr = surface_load_drawable(surface, context)))
|
||||
@ -50,7 +50,7 @@ index d084ffe..ea3c6f0 100644
|
||||
break;
|
||||
|
||||
case WINED3D_LOCATION_RB_RESOLVED:
|
||||
@@ -3269,7 +3269,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
@@ -3082,7 +3082,7 @@ HRESULT surface_load_location(struct wined3d_surface *surface, struct wined3d_co
|
||||
case WINED3D_LOCATION_TEXTURE_SRGB:
|
||||
if (FAILED(hr = surface_load_texture(surface, context,
|
||||
location == WINED3D_LOCATION_TEXTURE_SRGB)))
|
||||
@ -59,7 +59,7 @@ index d084ffe..ea3c6f0 100644
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -3286,7 +3286,7 @@ done:
|
||||
@@ -3099,7 +3099,7 @@ done:
|
||||
surface->ds_current_size.cy = surface_h;
|
||||
}
|
||||
|
||||
@ -69,10 +69,10 @@ index d084ffe..ea3c6f0 100644
|
||||
|
||||
static HRESULT ffp_blit_alloc(struct wined3d_device *device) { return WINED3D_OK; }
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 4d63568..f126d23 100644
|
||||
index b5c2d3c33b9..8569f25a5f6 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1353,7 +1353,8 @@ static void texture2d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
@@ -1854,7 +1854,8 @@ static void texture2d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
static BOOL texture2d_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
@ -83,10 +83,10 @@ index 4d63568..f126d23 100644
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index df7dfcc..19bc68e 100644
|
||||
index 2a6c27b398c..c4f7147ac75 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2710,7 +2710,7 @@ void surface_get_drawable_size(const struct wined3d_surface *surface, const stru
|
||||
@@ -2989,7 +2989,7 @@ void surface_get_drawable_size(const struct wined3d_surface *surface, const stru
|
||||
unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN;
|
||||
void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb,
|
||||
struct wined3d_context *context) DECLSPEC_HIDDEN;
|
||||
@ -96,5 +96,5 @@ index df7dfcc..19bc68e 100644
|
||||
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
|
||||
void surface_set_compatible_renderbuffer(struct wined3d_surface *surface,
|
||||
--
|
||||
2.8.0
|
||||
2.11.0
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
From 3b8bb25493ee434d987b8768a4e0187b29d9f342 Mon Sep 17 00:00:00 2001
|
||||
From 81498b8d256d1e07e297577fa358120ba4a801ac Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Wed, 18 Nov 2015 08:31:14 +0000
|
||||
Subject: wined3d: Share surface and volume system memory loading code.
|
||||
|
||||
---
|
||||
dlls/wined3d/surface.c | 110 ----------------------------
|
||||
dlls/wined3d/surface.c | 111 ----------------------------
|
||||
dlls/wined3d/texture.c | 192 +++++++++++++++++++++++++++++++------------------
|
||||
2 files changed, 124 insertions(+), 178 deletions(-)
|
||||
2 files changed, 124 insertions(+), 179 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index 5118429..59effac 100644
|
||||
index f209ecbeab6..9d48c8918e7 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -2867,67 +2867,6 @@ static void surface_load_ds_location(struct wined3d_surface *surface, struct win
|
||||
}
|
||||
@@ -2690,67 +2690,6 @@ void surface_modify_ds_location(struct wined3d_surface *surface,
|
||||
wined3d_texture_invalidate_location(texture, sub_resource_idx, ~location);
|
||||
}
|
||||
|
||||
-static DWORD resource_access_from_location(DWORD location)
|
||||
@ -80,7 +80,7 @@ index 5118429..59effac 100644
|
||||
/* Context activation is done by the caller. */
|
||||
static void surface_load_sysmem(struct wined3d_surface *surface,
|
||||
struct wined3d_context *context, DWORD dst_location)
|
||||
@@ -2940,12 +2879,6 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
|
||||
@@ -2763,12 +2702,6 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
|
||||
wined3d_texture_prepare_location(texture, sub_resource_idx, context, dst_location);
|
||||
|
||||
sub_resource = &texture->sub_resources[sub_resource_idx];
|
||||
@ -93,7 +93,7 @@ index 5118429..59effac 100644
|
||||
if (sub_resource->locations & (WINED3D_LOCATION_RB_MULTISAMPLE | WINED3D_LOCATION_RB_RESOLVED))
|
||||
wined3d_texture_load_location(texture, sub_resource_idx, context, WINED3D_LOCATION_TEXTURE_RGB);
|
||||
|
||||
@@ -3190,46 +3123,11 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte
|
||||
@@ -3013,46 +2946,11 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte
|
||||
unsigned int sub_resource_idx = surface_get_sub_resource_idx(surface);
|
||||
struct wined3d_texture *texture = surface->container;
|
||||
struct wined3d_texture_sub_resource *sub_resource;
|
||||
@ -140,10 +140,11 @@ index 5118429..59effac 100644
|
||||
|
||||
if (texture->resource.usage & WINED3DUSAGE_DEPTHSTENCIL)
|
||||
{
|
||||
@@ -3276,14 +3174,6 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte
|
||||
@@ -3091,15 +2989,6 @@ void surface_load_location(struct wined3d_surface *surface, struct wined3d_conte
|
||||
break;
|
||||
}
|
||||
|
||||
done:
|
||||
-done:
|
||||
- wined3d_texture_validate_location(texture, sub_resource_idx, location);
|
||||
-
|
||||
- if (texture->resource.usage & WINED3DUSAGE_DEPTHSTENCIL)
|
||||
@ -156,7 +157,7 @@ index 5118429..59effac 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 4ec5501..c8b181b 100644
|
||||
index 8569f25a5f6..07f2be2be02 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -80,27 +80,6 @@ GLenum wined3d_texture_get_gl_buffer(const struct wined3d_texture *texture)
|
||||
@ -324,7 +325,7 @@ index 4ec5501..c8b181b 100644
|
||||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
@@ -1610,7 +1712,6 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1632,7 +1734,6 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
struct wined3d_texture_sub_resource *sub_resource = &texture->sub_resources[sub_resource_idx];
|
||||
@ -332,7 +333,7 @@ index 4ec5501..c8b181b 100644
|
||||
unsigned int row_pitch, slice_pitch;
|
||||
|
||||
TRACE("texture %p, sub_resource_idx %u, context %p, location %s.\n",
|
||||
@@ -1618,30 +1719,9 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1640,30 +1741,9 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
|
||||
TRACE("Current resource location %s.\n", wined3d_debug_location(sub_resource->locations));
|
||||
|
||||
@ -363,7 +364,7 @@ index 4ec5501..c8b181b 100644
|
||||
switch (location)
|
||||
{
|
||||
case WINED3D_LOCATION_TEXTURE_RGB:
|
||||
@@ -1724,7 +1804,6 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1746,7 +1826,6 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -371,7 +372,7 @@ index 4ec5501..c8b181b 100644
|
||||
wined3d_texture_validate_location(texture, sub_resource_idx, location);
|
||||
|
||||
return TRUE;
|
||||
@@ -2709,7 +2788,6 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -2794,7 +2873,6 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
struct wined3d_texture_sub_resource *sub_resource = &texture->sub_resources[sub_resource_idx];
|
||||
@ -379,7 +380,7 @@ index 4ec5501..c8b181b 100644
|
||||
unsigned int row_pitch, slice_pitch;
|
||||
|
||||
TRACE("texture %p, sub_resource_idx %u, context %p, location %s.\n",
|
||||
@@ -2717,30 +2795,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -2802,30 +2880,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
|
||||
TRACE("Current resource location %s.\n", wined3d_debug_location(sub_resource->locations));
|
||||
|
||||
@ -410,7 +411,7 @@ index 4ec5501..c8b181b 100644
|
||||
switch (location)
|
||||
{
|
||||
case WINED3D_LOCATION_TEXTURE_RGB:
|
||||
@@ -2825,7 +2882,6 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -2910,7 +2967,6 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -419,5 +420,5 @@ index 4ec5501..c8b181b 100644
|
||||
|
||||
return TRUE;
|
||||
--
|
||||
2.8.1
|
||||
2.11.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a24f32505c70e8cb5a6961f69c1165d5806816ce Mon Sep 17 00:00:00 2001
|
||||
From 7cee77608af5e5da0268e202c46e211e2ec72e1f 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,10 +20,10 @@ Subject: wined3d: Move the framebuffer into wined3d_state
|
||||
13 files changed, 194 insertions(+), 135 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
|
||||
index 247bc360085..cb81f7f6ceb 100644
|
||||
index 60c15b0fdc4..b603c1b203b 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,
|
||||
@@ -701,7 +701,7 @@ static void shader_arb_load_constants_internal(struct shader_arb_priv *priv,
|
||||
{
|
||||
const struct wined3d_shader *pshader = state->shader[WINED3D_SHADER_TYPE_PIXEL];
|
||||
const struct arb_ps_compiled_shader *gl_shader = priv->compiled_fprog;
|
||||
@ -32,7 +32,7 @@ index 247bc360085..cb81f7f6ceb 100644
|
||||
|
||||
/* Load DirectX 9 float constants for pixel shader */
|
||||
priv->highest_dirty_ps_const = shader_arb_load_constants_f(pshader, gl_info, GL_FRAGMENT_PROGRAM_ARB,
|
||||
@@ -4739,7 +4739,7 @@ static void shader_arb_select(void *shader_priv, struct wined3d_context *context
|
||||
@@ -4622,7 +4622,7 @@ static void shader_arb_select(void *shader_priv, struct wined3d_context *context
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -42,7 +42,7 @@ index 247bc360085..cb81f7f6ceb 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
|
||||
index a7794fac2cb..1f991b63852 100644
|
||||
index 8ae49e83cb2..6f493e0078c 100644
|
||||
--- a/dlls/wined3d/context.c
|
||||
+++ b/dlls/wined3d/context.c
|
||||
@@ -1710,6 +1710,11 @@ struct wined3d_context *context_create(struct wined3d_swapchain *swapchain,
|
||||
@ -57,7 +57,7 @@ index a7794fac2cb..1f991b63852 100644
|
||||
/* Initialize the texture unit mapping to a 1:1 mapping */
|
||||
for (s = 0; s < MAX_COMBINED_SAMPLERS; ++s)
|
||||
{
|
||||
@@ -2031,6 +2036,7 @@ out:
|
||||
@@ -2030,6 +2035,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);
|
||||
@ -65,7 +65,7 @@ index a7794fac2cb..1f991b63852 100644
|
||||
HeapFree(GetProcessHeap(), 0, ret->free_event_queries);
|
||||
HeapFree(GetProcessHeap(), 0, ret->free_occlusion_queries);
|
||||
HeapFree(GetProcessHeap(), 0, ret->free_timestamp_queries);
|
||||
@@ -2078,6 +2084,7 @@ void context_destroy(struct wined3d_device *device, struct wined3d_context *cont
|
||||
@@ -2077,6 +2083,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);
|
||||
HeapFree(GetProcessHeap(), 0, context->fbo_key);
|
||||
@ -73,7 +73,7 @@ index a7794fac2cb..1f991b63852 100644
|
||||
HeapFree(GetProcessHeap(), 0, context->draw_buffers);
|
||||
HeapFree(GetProcessHeap(), 0, context->blit_targets);
|
||||
device_context_remove(device, context);
|
||||
@@ -2632,7 +2639,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
|
||||
@@ -2631,7 +2638,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 a7794fac2cb..1f991b63852 100644
|
||||
|| rt_count != gl_info->limits.buffers)
|
||||
{
|
||||
if (!context_validate_rt_config(rt_count, rts, dsv))
|
||||
@@ -2677,6 +2684,8 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
|
||||
@@ -2676,6 +2683,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 a7794fac2cb..1f991b63852 100644
|
||||
}
|
||||
else if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
|
||||
&& (!rt_count || wined3d_resource_is_offscreen(rts[0]->resource)))
|
||||
@@ -2734,7 +2743,7 @@ BOOL context_apply_clear_state(struct wined3d_context *context, const struct win
|
||||
@@ -2733,7 +2742,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 a7794fac2cb..1f991b63852 100644
|
||||
struct wined3d_shader *ps = state->shader[WINED3D_SHADER_TYPE_PIXEL];
|
||||
DWORD rt_mask, rt_mask_bits;
|
||||
unsigned int i;
|
||||
@@ -2764,7 +2773,7 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
|
||||
@@ -2763,7 +2772,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 a7794fac2cb..1f991b63852 100644
|
||||
DWORD *cur_mask;
|
||||
|
||||
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
|
||||
@@ -3053,6 +3062,8 @@ void context_state_drawbuf(struct wined3d_context *context, const struct wined3d
|
||||
@@ -3052,6 +3061,8 @@ void context_state_drawbuf(struct wined3d_context *context, const struct wined3d
|
||||
context_apply_draw_buffers(context, rt_mask);
|
||||
*cur_mask = rt_mask;
|
||||
}
|
||||
@ -118,7 +118,7 @@ index a7794fac2cb..1f991b63852 100644
|
||||
}
|
||||
|
||||
static BOOL fixed_get_input(BYTE usage, BYTE usage_idx, unsigned int *regnum)
|
||||
@@ -3484,7 +3495,7 @@ BOOL context_apply_draw_state(struct wined3d_context *context,
|
||||
@@ -3483,7 +3494,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;
|
||||
@ -281,7 +281,7 @@ index 1029c1a1810..3bca1bd882f 100644
|
||||
HeapFree(GetProcessHeap(), 0, cs);
|
||||
}
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 8d6cbe358ae..c5eed77293a 100644
|
||||
index fcca748dae3..97b9ed00972 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -1004,7 +1004,7 @@ static void device_init_swapchain_state(struct wined3d_device *device, struct wi
|
||||
@ -402,7 +402,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
return;
|
||||
if (src_view->resource->type == WINED3D_RTYPE_BUFFER)
|
||||
{
|
||||
@@ -3513,6 +3491,8 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device)
|
||||
@@ -3530,6 +3508,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 8d6cbe358ae..c5eed77293a 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);
|
||||
|
||||
@@ -3524,7 +3504,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
|
||||
@@ -3541,7 +3521,7 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
|
||||
|
||||
if (flags & (WINED3DCLEAR_ZBUFFER | WINED3DCLEAR_STENCIL))
|
||||
{
|
||||
@ -420,7 +420,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
if (!ds)
|
||||
{
|
||||
WARN("Clearing depth and/or stencil without a depth stencil buffer attached, returning WINED3DERR_INVALIDCALL\n");
|
||||
@@ -3533,8 +3513,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
|
||||
@@ -3550,8 +3530,8 @@ HRESULT CDECL wined3d_device_clear(struct wined3d_device *device, DWORD rect_cou
|
||||
}
|
||||
else if (flags & WINED3DCLEAR_TARGET)
|
||||
{
|
||||
@ -431,7 +431,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
{
|
||||
WARN("Silently ignoring depth and target clear with mismatching sizes\n");
|
||||
return WINED3D_OK;
|
||||
@@ -3850,8 +3830,8 @@ HRESULT CDECL wined3d_device_validate_device(const struct wined3d_device *device
|
||||
@@ -3867,8 +3847,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 8d6cbe358ae..c5eed77293a 100644
|
||||
|
||||
if (ds && rt && (ds->width < rt->width || ds->height < rt->height))
|
||||
{
|
||||
@@ -4287,20 +4267,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co
|
||||
@@ -4304,20 +4284,21 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(co
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -466,7 +466,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
|
||||
TRACE("device %p, view_idx %u, view %p, set_viewport %#x.\n",
|
||||
device, view_idx, view, set_viewport);
|
||||
@@ -4337,13 +4318,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
|
||||
@@ -4354,13 +4335,13 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
|
||||
}
|
||||
|
||||
|
||||
@ -482,7 +482,7 @@ index 8d6cbe358ae..c5eed77293a 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. */
|
||||
@@ -4355,18 +4336,19 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device
|
||||
@@ -4372,18 +4353,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 8d6cbe358ae..c5eed77293a 100644
|
||||
wined3d_rendertarget_view_incref(view);
|
||||
wined3d_cs_emit_set_depth_stencil_view(device->cs, view);
|
||||
if (prev)
|
||||
@@ -4727,10 +4709,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|
||||
@@ -4744,10 +4726,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 8d6cbe358ae..c5eed77293a 100644
|
||||
{
|
||||
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
|
||||
{
|
||||
@@ -4739,6 +4720,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|
||||
@@ -4756,6 +4737,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|
||||
}
|
||||
wined3d_device_set_depth_stencil_view(device, NULL);
|
||||
|
||||
@ -528,7 +528,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
if (device->onscreen_depth_stencil)
|
||||
{
|
||||
wined3d_texture_decref(device->onscreen_depth_stencil->container);
|
||||
@@ -4911,27 +4897,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|
||||
@@ -4928,27 +4914,28 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
|
||||
if (device->d3d_initialized)
|
||||
delete_opengl_contexts(device, swapchain);
|
||||
|
||||
@ -564,7 +564,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect);
|
||||
}
|
||||
|
||||
@@ -5023,11 +5010,11 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso
|
||||
@@ -5040,11 +5027,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 8d6cbe358ae..c5eed77293a 100644
|
||||
ERR("Resource %p is still in use as depth/stencil buffer.\n", resource);
|
||||
}
|
||||
|
||||
@@ -5153,8 +5140,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
|
||||
@@ -5170,8 +5157,12 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
|
||||
|
||||
device->blitter = adapter->blitter;
|
||||
|
||||
@ -594,7 +594,7 @@ index 8d6cbe358ae..c5eed77293a 100644
|
||||
|
||||
if (!(device->cs = wined3d_cs_create(device)))
|
||||
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
|
||||
index 06c5bc9b491..fa92f25adb0 100644
|
||||
index afaf948e009..80bc66ec7ba 100644
|
||||
--- a/dlls/wined3d/drawprim.c
|
||||
+++ b/dlls/wined3d/drawprim.c
|
||||
@@ -413,7 +413,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
@ -605,12 +605,12 @@ index 06c5bc9b491..fa92f25adb0 100644
|
||||
+ const struct wined3d_fb_state *fb = &state->fb;
|
||||
const struct wined3d_stream_info *stream_info;
|
||||
struct wined3d_event_query *ib_query = NULL;
|
||||
struct wined3d_stream_info si_emulated;
|
||||
struct wined3d_rendertarget_view *dsv, *rtv;
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index fbecd167cb0..c54c4d9c325 100644
|
||||
index 6a5850aa21e..b7ee9dd9b40 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -1561,7 +1561,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
|
||||
@@ -1559,7 +1559,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
|
||||
const struct wined3d_vec4 correction_params =
|
||||
{
|
||||
/* Position is relative to the framebuffer, not the viewport. */
|
||||
@ -620,10 +620,10 @@ index fbecd167cb0..c54c4d9c325 100644
|
||||
0.0f,
|
||||
0.0f,
|
||||
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
|
||||
index 5e9b0de9cc2..f5bbb07f14b 100644
|
||||
index 4ca82c2ed3c..da54109e039 100644
|
||||
--- a/dlls/wined3d/shader.c
|
||||
+++ b/dlls/wined3d/shader.c
|
||||
@@ -3208,7 +3208,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
|
||||
@@ -3203,7 +3203,7 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
|
||||
UINT i;
|
||||
|
||||
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
|
||||
@ -633,7 +633,7 @@ index 5e9b0de9cc2..f5bbb07f14b 100644
|
||||
static unsigned int warned = 0;
|
||||
|
||||
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
|
||||
index 6e89fbc92ac..519c084f47d 100644
|
||||
index f92aa8ff692..d62011f4e54 100644
|
||||
--- a/dlls/wined3d/state.c
|
||||
+++ b/dlls/wined3d/state.c
|
||||
@@ -152,7 +152,7 @@ static void state_zenable(struct wined3d_context *context, const struct wined3d_
|
||||
@ -660,7 +660,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
|
||||
/* Disable blending in all cases even without pixelshaders.
|
||||
* With blending on we could face a big performance penalty.
|
||||
@@ -858,7 +858,7 @@ static void state_stencil(struct wined3d_context *context, const struct wined3d_
|
||||
@@ -861,7 +861,7 @@ static void state_stencil(struct wined3d_context *context, const struct wined3d_
|
||||
GLint depthFail_back;
|
||||
|
||||
/* No stencil test without a stencil buffer. */
|
||||
@ -669,7 +669,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
{
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_STENCIL_TEST);
|
||||
checkGLcall("glDisable GL_STENCIL_TEST");
|
||||
@@ -954,7 +954,7 @@ static void state_stencil(struct wined3d_context *context, const struct wined3d_
|
||||
@@ -957,7 +957,7 @@ static void state_stencil(struct wined3d_context *context, const struct wined3d_
|
||||
|
||||
static void state_stencilwrite2s(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
|
||||
{
|
||||
@ -678,7 +678,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
|
||||
GL_EXTCALL(glActiveStencilFaceEXT(GL_BACK));
|
||||
@@ -968,7 +968,7 @@ static void state_stencilwrite2s(struct wined3d_context *context, const struct w
|
||||
@@ -971,7 +971,7 @@ static void state_stencilwrite2s(struct wined3d_context *context, const struct w
|
||||
|
||||
static void state_stencilwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
|
||||
{
|
||||
@ -687,7 +687,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
|
||||
gl_info->gl_ops.gl.p_glStencilMask(mask);
|
||||
@@ -1706,7 +1706,7 @@ static void state_depthbias(struct wined3d_context *context, const struct wined3
|
||||
@@ -1709,7 +1709,7 @@ static void state_depthbias(struct wined3d_context *context, const struct wined3
|
||||
if (state->render_states[WINED3D_RS_SLOPESCALEDEPTHBIAS]
|
||||
|| state->render_states[WINED3D_RS_DEPTHBIAS])
|
||||
{
|
||||
@ -696,7 +696,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
float scale;
|
||||
|
||||
union
|
||||
@@ -4620,8 +4620,8 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine
|
||||
@@ -4624,8 +4624,8 @@ static void vertexdeclaration(struct wined3d_context *context, const struct wine
|
||||
|
||||
static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
|
||||
{
|
||||
@ -707,7 +707,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
struct wined3d_viewport vp = state->viewport;
|
||||
unsigned int width, height;
|
||||
@@ -4660,8 +4660,8 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine
|
||||
@@ -4664,8 +4664,8 @@ static void viewport_miscpart(struct wined3d_context *context, const struct wine
|
||||
static void viewport_miscpart_cc(struct wined3d_context *context,
|
||||
const struct wined3d_state *state, DWORD state_id)
|
||||
{
|
||||
@ -718,7 +718,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
float pixel_center_offset = context->d3d_info->wined3d_creation_flags
|
||||
& WINED3D_PIXEL_CENTER_INTEGER ? 0.5f : 0.0f;
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
@@ -4856,7 +4856,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st
|
||||
@@ -4860,7 +4860,7 @@ static void scissorrect(struct wined3d_context *context, const struct wined3d_st
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -727,7 +727,7 @@ index 6e89fbc92ac..519c084f47d 100644
|
||||
UINT height;
|
||||
UINT width;
|
||||
|
||||
@@ -4932,7 +4932,7 @@ void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state
|
||||
@@ -4936,7 +4936,7 @@ void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state
|
||||
|
||||
TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id);
|
||||
|
||||
@ -837,7 +837,7 @@ index fd017524075..2fd4ef494f7 100644
|
||||
if (type == WINED3D_SBT_RECORDED)
|
||||
return WINED3D_OK;
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index 69122fbc3e5..35c5d489cc0 100644
|
||||
index bc5a7e04006..d64bfb87a17 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -2572,7 +2572,7 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE
|
||||
@ -850,7 +850,7 @@ index 69122fbc3e5..35c5d489cc0 100644
|
||||
struct wined3d_texture *src_texture;
|
||||
|
||||
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
|
||||
index c95faddb42a..34558a8a1f2 100644
|
||||
index 29dbbe87cfe..29e03a005b7 100644
|
||||
--- a/dlls/wined3d/swapchain.c
|
||||
+++ b/dlls/wined3d/swapchain.c
|
||||
@@ -488,7 +488,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
|
||||
@ -863,7 +863,7 @@ index c95faddb42a..34558a8a1f2 100644
|
||||
struct wined3d_texture *logo_texture;
|
||||
struct wined3d_context *context;
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index 715823bfd28..2442228a7d4 100644
|
||||
index 1c7608068bf..6ec10dc52ce 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -4624,7 +4624,7 @@ void get_projection_matrix(const struct wined3d_context *context, const struct w
|
||||
@ -885,10 +885,10 @@ index 715823bfd28..2442228a7d4 100644
|
||||
|| !state->render_states[WINED3D_RS_CLIPPLANEENABLE])
|
||||
{
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index f6e287b1fbd..33d18326f2f 100644
|
||||
index c4f7147ac75..2bd6edbd009 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -1508,6 +1508,36 @@ struct wined3d_timestamp_query
|
||||
@@ -1504,6 +1504,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;
|
||||
|
||||
@ -925,7 +925,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
struct wined3d_context
|
||||
{
|
||||
const struct wined3d_gl_info *gl_info;
|
||||
@@ -1522,6 +1552,7 @@ struct wined3d_context
|
||||
@@ -1518,6 +1548,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 */
|
||||
@ -933,7 +933,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
|
||||
struct wined3d_device *device;
|
||||
struct wined3d_swapchain *swapchain;
|
||||
@@ -1634,12 +1665,6 @@ struct wined3d_context
|
||||
@@ -1630,12 +1661,6 @@ struct wined3d_context
|
||||
GLuint dummy_arbfp_prog;
|
||||
};
|
||||
|
||||
@ -946,7 +946,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
|
||||
|
||||
struct StateEntry
|
||||
@@ -2446,7 +2471,7 @@ struct wined3d_stream_state
|
||||
@@ -2453,7 +2478,7 @@ struct wined3d_stream_state
|
||||
struct wined3d_state
|
||||
{
|
||||
DWORD flags;
|
||||
@ -955,7 +955,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
|
||||
struct wined3d_vertex_declaration *vertex_declaration;
|
||||
struct wined3d_stream_output stream_output[MAX_STREAM_OUT];
|
||||
@@ -2552,7 +2577,6 @@ struct wined3d_device
|
||||
@@ -2559,7 +2584,6 @@ struct wined3d_device
|
||||
struct wine_rb_tree samplers;
|
||||
|
||||
/* Render Target Support */
|
||||
@ -963,7 +963,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
struct wined3d_surface *onscreen_depth_stencil;
|
||||
struct wined3d_rendertarget_view *auto_depth_stencil_view;
|
||||
|
||||
@@ -3102,9 +3126,8 @@ struct wined3d_stateblock
|
||||
@@ -3109,9 +3133,8 @@ struct wined3d_stateblock
|
||||
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
|
||||
|
||||
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
|
||||
@ -975,7 +975,7 @@ index f6e287b1fbd..33d18326f2f 100644
|
||||
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
|
||||
|
||||
struct wined3d_cs_ops
|
||||
@@ -3117,7 +3140,6 @@ struct wined3d_cs
|
||||
@@ -3124,7 +3147,6 @@ struct wined3d_cs
|
||||
{
|
||||
const struct wined3d_cs_ops *ops;
|
||||
struct wined3d_device *device;
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1dfeb74eaa37d265531f48552a54ebc990bc9a0e Mon Sep 17 00:00:00 2001
|
||||
From cc4a1dd3cda9ae7bf3fe7c6fdd4a5a0a65768268 Mon Sep 17 00:00:00 2001
|
||||
From: Henri Verbeet <hverbeet@codeweavers.com>
|
||||
Date: Sat, 8 Dec 2012 19:28:54 +0100
|
||||
Subject: wined3d: Wait for resource updates to finish when using the
|
||||
@ -12,15 +12,15 @@ then it's probably useful for debugging.
|
||||
dlls/wined3d/buffer.c | 4 +++-
|
||||
dlls/wined3d/device.c | 9 +++++++--
|
||||
dlls/wined3d/drawprim.c | 4 +++-
|
||||
dlls/wined3d/surface.c | 32 ++++++++++++++++++++++++--------
|
||||
dlls/wined3d/surface.c | 24 ++++++++++++++++++------
|
||||
dlls/wined3d/swapchain.c | 4 +++-
|
||||
6 files changed, 45 insertions(+), 15 deletions(-)
|
||||
6 files changed, 39 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
|
||||
index c333fa3..c15857b 100644
|
||||
index b603c1b203b..122dc44d601 100644
|
||||
--- a/dlls/wined3d/arb_program_shader.c
|
||||
+++ b/dlls/wined3d/arb_program_shader.c
|
||||
@@ -7997,8 +7997,11 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
|
||||
@@ -7836,8 +7836,11 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
|
||||
/* Leave the opengl state valid for blitting */
|
||||
arbfp_blit_unset(context->gl_info);
|
||||
|
||||
@ -35,10 +35,10 @@ index c333fa3..c15857b 100644
|
||||
|
||||
context_release(context);
|
||||
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
|
||||
index f322206..e851ec9 100644
|
||||
index 9e025889e68..39664dea3cf 100644
|
||||
--- a/dlls/wined3d/buffer.c
|
||||
+++ b/dlls/wined3d/buffer.c
|
||||
@@ -1092,7 +1092,9 @@ void CDECL wined3d_buffer_unmap(struct wined3d_buffer *buffer)
|
||||
@@ -1091,7 +1091,9 @@ static void wined3d_buffer_unmap(struct wined3d_buffer *buffer)
|
||||
}
|
||||
|
||||
GL_EXTCALL(glUnmapBuffer(buffer->buffer_type_hint));
|
||||
@ -50,10 +50,10 @@ index f322206..e851ec9 100644
|
||||
context_release(context);
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index cf596a6..de07b9d 100644
|
||||
index 97b9ed00972..5b0991b7824 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -514,7 +514,9 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
|
||||
@@ -513,7 +513,9 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ index cf596a6..de07b9d 100644
|
||||
&& target->container->swapchain && target->container->swapchain->front_buffer == target->container))
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
|
||||
@@ -3406,7 +3408,10 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device)
|
||||
@@ -3496,7 +3498,10 @@ HRESULT CDECL wined3d_device_end_scene(struct wined3d_device *device)
|
||||
|
||||
context = context_acquire(device, NULL);
|
||||
/* We only have to do this if we need to read the, swapbuffers performs a flush for us */
|
||||
@ -77,10 +77,10 @@ index cf596a6..de07b9d 100644
|
||||
* fails. */
|
||||
context_release(context);
|
||||
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
|
||||
index 18c7a3e..1d98bc0 100644
|
||||
index 80bc66ec7ba..0b7792fabb9 100644
|
||||
--- a/dlls/wined3d/drawprim.c
|
||||
+++ b/dlls/wined3d/drawprim.c
|
||||
@@ -584,7 +584,9 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
@@ -592,7 +592,9 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
|
||||
for (i = 0; i < context->num_buffer_queries; ++i)
|
||||
wined3d_event_query_issue(context->buffer_queries[i], device);
|
||||
|
||||
@ -92,10 +92,10 @@ index 18c7a3e..1d98bc0 100644
|
||||
|
||||
context_release(context);
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index 7b55e25..33fcf34 100644
|
||||
index d64bfb87a17..e202ec66118 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -491,7 +491,9 @@ static void surface_depth_blt_fbo(const struct wined3d_device *device,
|
||||
@@ -488,7 +488,9 @@ static void surface_depth_blt_fbo(const struct wined3d_device *device,
|
||||
dst_rect->left, dst_rect->top, dst_rect->right, dst_rect->bottom, gl_mask, GL_NEAREST);
|
||||
checkGLcall("glBlitFramebuffer()");
|
||||
|
||||
@ -106,7 +106,7 @@ index 7b55e25..33fcf34 100644
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
|
||||
context_release(context);
|
||||
@@ -623,7 +625,10 @@ static void surface_blt_fbo(const struct wined3d_device *device,
|
||||
@@ -619,7 +621,10 @@ static void surface_blt_fbo(const struct wined3d_device *device,
|
||||
dst_rect.left, dst_rect.top, dst_rect.right, dst_rect.bottom, GL_COLOR_BUFFER_BIT, gl_filter);
|
||||
checkGLcall("glBlitFramebuffer()");
|
||||
|
||||
@ -154,33 +154,11 @@ index 7b55e25..33fcf34 100644
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
|
||||
if (restore_rt)
|
||||
@@ -2871,7 +2883,9 @@ static void surface_load_ds_location(struct wined3d_surface *surface, struct win
|
||||
|
||||
context_invalidate_state(context, STATE_FRAMEBUFFER);
|
||||
|
||||
- if (wined3d_settings.strict_draw_ordering)
|
||||
+ if (wined3d_settings.cs_multithreaded)
|
||||
+ gl_info->gl_ops.gl.p_glFinish();
|
||||
+ else if (wined3d_settings.strict_draw_ordering)
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
}
|
||||
else if (location == WINED3D_LOCATION_DRAWABLE)
|
||||
@@ -2888,7 +2902,9 @@ static void surface_load_ds_location(struct wined3d_surface *surface, struct win
|
||||
|
||||
context_invalidate_state(context, STATE_FRAMEBUFFER);
|
||||
|
||||
- if (wined3d_settings.strict_draw_ordering)
|
||||
+ if (wined3d_settings.cs_multithreaded)
|
||||
+ gl_info->gl_ops.gl.p_glFinish();
|
||||
+ else if (wined3d_settings.strict_draw_ordering)
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
}
|
||||
else
|
||||
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
|
||||
index 92abd3b..9f37e70 100644
|
||||
index 29e03a005b7..059694a0f9c 100644
|
||||
--- a/dlls/wined3d/swapchain.c
|
||||
+++ b/dlls/wined3d/swapchain.c
|
||||
@@ -577,8 +577,10 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
|
||||
@@ -581,8 +581,10 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain,
|
||||
swapchain_blit(swapchain, context, src_rect, dst_rect);
|
||||
}
|
||||
|
||||
@ -193,5 +171,5 @@ index 92abd3b..9f37e70 100644
|
||||
/* call wglSwapBuffers through the gl table to avoid confusing the Steam overlay */
|
||||
gl_info->gl_ops.wgl.p_wglSwapBuffers(context->hdc);
|
||||
--
|
||||
2.8.0
|
||||
2.11.0
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1 +1,2 @@
|
||||
Fixes: Fix crash when trying to rendering without render target
|
||||
Disabled: true
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 0a7427437a87557be853c5d27e11b62436a00848 Mon Sep 17 00:00:00 2001
|
||||
From a30764f2b6ae3311242b881ecfaf5a243e3ac387 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
|
||||
Date: Wed, 4 Mar 2015 13:16:20 -0700
|
||||
Subject: ws2_32: Add support for TF_DISCONNECT to TransmitFile.
|
||||
@ -9,10 +9,10 @@ Subject: ws2_32: Add support for TF_DISCONNECT to TransmitFile.
|
||||
2 files changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index b0cbb11..7deaeda 100644
|
||||
index 4977bbfa592..ecec3dc5314 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -2883,7 +2883,16 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
|
||||
@@ -3032,7 +3032,16 @@ static NTSTATUS WS2_transmitfile_base( int fd, struct ws2_transmitfile_async *ws
|
||||
return wsaErrStatus();
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ index b0cbb11..7deaeda 100644
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -2920,6 +2929,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
|
||||
@@ -3069,6 +3078,7 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
|
||||
LPOVERLAPPED overlapped, LPTRANSMIT_FILE_BUFFERS buffers,
|
||||
DWORD flags )
|
||||
{
|
||||
@ -38,7 +38,7 @@ index b0cbb11..7deaeda 100644
|
||||
union generic_unix_sockaddr uaddr;
|
||||
unsigned int uaddrlen = sizeof(uaddr);
|
||||
struct ws2_transmitfile_async *wsa;
|
||||
@@ -2941,8 +2951,8 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
|
||||
@@ -3090,8 +3100,8 @@ static BOOL WINAPI WS2_TransmitFile( SOCKET s, HANDLE h, DWORD file_bytes, DWORD
|
||||
WSASetLastError( WSAENOTCONN );
|
||||
return FALSE;
|
||||
}
|
||||
@ -50,11 +50,11 @@ index b0cbb11..7deaeda 100644
|
||||
if (h && GetFileType( h ) != FILE_TYPE_DISK)
|
||||
{
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index 29e20c3..d5c206c 100644
|
||||
index 720808887cf..2084dceb987 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -7663,6 +7663,17 @@ static void test_TransmitFile(void)
|
||||
ok(memcmp(buf, &footer_msg[0], sizeof(footer_msg)+1) == 0,
|
||||
@@ -8404,6 +8404,17 @@ static void test_TransmitFile(void)
|
||||
ok(memcmp(buf, &footer_msg[0], sizeof(footer_msg)) == 0,
|
||||
"TransmitFile footer buffer did not match!\n");
|
||||
|
||||
+ /* Test TransmitFile w/ TF_DISCONNECT */
|
||||
@ -72,5 +72,5 @@ index 29e20c3..d5c206c 100644
|
||||
closesocket(client);
|
||||
client = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
--
|
||||
2.6.1
|
||||
2.11.0
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Wine Staging 2.0
|
||||
Wine Staging 2.1 (unreleased)
|
||||
|
Loading…
Reference in New Issue
Block a user