Rebase against 52fbaeb2c44e585cacd7f0b57e902dfbcf54d09b.

This commit is contained in:
Sebastian Lackner
2017-08-09 08:45:29 +02:00
parent 51d419bbeb
commit 6edf4d136c
11 changed files with 197 additions and 704 deletions

View File

@@ -1,4 +1,4 @@
From ed7b6749de73056ab073634b6f561f2138e24f00 Mon Sep 17 00:00:00 2001
From 654103d744671c2d55ad72aaae6a1107d665c9e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B3zef=20Kucia?= <jkucia@codeweavers.com>
Date: Sun, 23 Jul 2017 23:19:51 +0200
Subject: wined3d: Implement indirect compute dispatch.
@@ -14,10 +14,10 @@ Subject: wined3d: Implement indirect compute dispatch.
7 files changed, 95 insertions(+), 13 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index f25ff8b3700..9cffa8a9961 100644
index 3c1cefb14aa..4cfa3b5a396 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -1812,7 +1812,17 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_Dispatch(ID3D11DeviceConte
@@ -1808,7 +1808,17 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_Dispatch(ID3D11DeviceConte
static void STDMETHODCALLTYPE d3d11_immediate_context_DispatchIndirect(ID3D11DeviceContext *iface,
ID3D11Buffer *buffer, UINT offset)
{
@@ -37,7 +37,7 @@ index f25ff8b3700..9cffa8a9961 100644
static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceContext *iface,
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 4314a4807a8..171287dc99c 100644
index 4bdab37068c..55aa49785bd 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -113,9 +113,7 @@ struct wined3d_cs_clear
@@ -100,10 +100,10 @@ index 4314a4807a8..171287dc99c 100644
acquire_shader_resources(state, 1u << WINED3D_SHADER_TYPE_COMPUTE);
acquire_unordered_access_resources(state->shader[WINED3D_SHADER_TYPE_COMPUTE],
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4839f09aee3..54a058ae1ed 100644
index 3b6a335efc1..dfd2da6ceac 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3701,6 +3701,14 @@ void CDECL wined3d_device_dispatch_compute(struct wined3d_device *device,
@@ -3703,6 +3703,14 @@ void CDECL wined3d_device_dispatch_compute(struct wined3d_device *device,
wined3d_cs_emit_dispatch(device->cs, group_count_x, group_count_y, group_count_z);
}
@@ -119,7 +119,7 @@ index 4839f09aee3..54a058ae1ed 100644
enum wined3d_primitive_type primitive_type, unsigned int patch_vertex_count)
{
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 353e9aac5f9..6de0d613d2d 100644
index ad1e587cca7..2f7ed9205ad 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -683,7 +683,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@@ -157,7 +157,7 @@ index 353e9aac5f9..6de0d613d2d 100644
GL_EXTCALL(glMemoryBarrier(GL_ALL_BARRIER_BITS));
checkGLcall("glMemoryBarrier");
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index f0f6871a8a2..122e39ba8ee 100644
index d17e2c9eb6d..09d1d644f4b 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -42,6 +42,7 @@
@@ -169,10 +169,10 @@ index f0f6871a8a2..122e39ba8ee 100644
@ cdecl wined3d_device_draw_indexed_primitive_instanced(ptr long long long long)
@ cdecl wined3d_device_draw_primitive(ptr long long)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3eeb3aef55e..e2461100a5a 100644
index a487ee25bc9..9425f197c2b 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1481,11 +1481,34 @@ void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_inf
@@ -1479,11 +1479,34 @@ void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_inf
const struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
const struct wined3d_d3d_info *d3d_info) DECLSPEC_HIDDEN;
@@ -208,8 +208,8 @@ index 3eeb3aef55e..e2461100a5a 100644
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN;
#define eps 1e-8f
@@ -3432,6 +3455,8 @@ void wined3d_cs_emit_clear_unordered_access_view_uint(struct wined3d_cs *cs,
struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value) DECLSPEC_HIDDEN;
@@ -3434,6 +3457,8 @@ void wined3d_cs_emit_copy_uav_counter(struct wined3d_cs *cs, struct wined3d_buff
unsigned int offset, struct wined3d_unordered_access_view *uav) DECLSPEC_HIDDEN;
void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_dispatch_indirect(struct wined3d_cs *cs,
@@ -218,10 +218,10 @@ index 3eeb3aef55e..e2461100a5a 100644
int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 4a85aac2cae..a99dbf64686 100644
index 06772fd645e..a6091a65c86 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2240,6 +2240,8 @@ HRESULT __cdecl wined3d_device_create(struct wined3d *wined3d, UINT adapter_idx,
@@ -2230,6 +2230,8 @@ HRESULT __cdecl wined3d_device_create(struct wined3d *wined3d, UINT adapter_idx,
ULONG __cdecl wined3d_device_decref(struct wined3d_device *device);
void __cdecl wined3d_device_dispatch_compute(struct wined3d_device *device,
unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z);