Henri Verbeet : wined3d: Make the adapter responsible for draws.

Alexandre Julliard julliard at winehq.org
Tue Apr 28 16:32:20 CDT 2020


Module: wine
Branch: master
Commit: 95b66030bbf044f0b1d4efb71e645580957b3244
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=95b66030bbf044f0b1d4efb71e645580957b3244

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue Apr 28 02:46:25 2020 +0430

wined3d: Make the adapter responsible for draws.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/adapter_gl.c      | 1 +
 dlls/wined3d/adapter_vk.c      | 7 +++++++
 dlls/wined3d/cs.c              | 2 +-
 dlls/wined3d/directx.c         | 7 +++++++
 dlls/wined3d/wined3d_private.h | 2 ++
 5 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 343dfff0ee..29496f2556 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -5101,6 +5101,7 @@ static const struct wined3d_adapter_ops wined3d_adapter_gl_ops =
     .adapter_create_query = adapter_gl_create_query,
     .adapter_destroy_query = adapter_gl_destroy_query,
     .adapter_flush_context = adapter_gl_flush_context,
+    .adapter_draw_primitive = draw_primitive,
     .adapter_dispatch_compute = dispatch_compute,
     .adapter_clear_uav = adapter_gl_clear_uav,
 };
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index 7c63562086..b6a0eea785 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -1414,6 +1414,12 @@ static void adapter_vk_flush_context(struct wined3d_context *context)
     TRACE("context %p.\n", context);
 }
 
+static void adapter_vk_draw_primitive(struct wined3d_device *device,
+        const struct wined3d_state *state, const struct wined3d_draw_parameters *parameters)
+{
+    FIXME("device %p, state %p, parameters %p.\n", device, state, parameters);
+}
+
 static void adapter_vk_dispatch_compute(struct wined3d_device *device,
         const struct wined3d_state *state, const struct wined3d_dispatch_parameters *parameters)
 {
@@ -1457,6 +1463,7 @@ static const struct wined3d_adapter_ops wined3d_adapter_vk_ops =
     .adapter_create_query = adapter_vk_create_query,
     .adapter_destroy_query = adapter_vk_destroy_query,
     .adapter_flush_context = adapter_vk_flush_context,
+    .adapter_draw_primitive = adapter_vk_draw_primitive,
     .adapter_dispatch_compute = adapter_vk_dispatch_compute,
     .adapter_clear_uav = adapter_vk_clear_uav,
 };
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 930351d092..85e696d4d1 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -888,7 +888,7 @@ static void wined3d_cs_exec_draw(struct wined3d_cs *cs, const void *data)
     }
     state->gl_patch_vertices = op->patch_vertex_count;
 
-    draw_primitive(cs->device, state, &op->parameters);
+    cs->device->adapter->adapter_ops->adapter_draw_primitive(cs->device, state, &op->parameters);
 
     if (op->parameters.indirect)
     {
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 40221ab7de..b6a9b502d8 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2843,6 +2843,12 @@ static void adapter_no3d_flush_context(struct wined3d_context *context)
     TRACE("context %p.\n", context);
 }
 
+static void adapter_no3d_draw_primitive(struct wined3d_device *device,
+        const struct wined3d_state *state, const struct wined3d_draw_parameters *parameters)
+{
+    ERR("device %p, state %p, parameters %p.\n", device, state, parameters);
+}
+
 static void adapter_no3d_dispatch_compute(struct wined3d_device *device,
         const struct wined3d_state *state, const struct wined3d_dispatch_parameters *parameters)
 {
@@ -2886,6 +2892,7 @@ static const struct wined3d_adapter_ops wined3d_adapter_no3d_ops =
     .adapter_create_query = adapter_no3d_create_query,
     .adapter_destroy_query = adapter_no3d_destroy_query,
     .adapter_flush_context = adapter_no3d_flush_context,
+    .adapter_draw_primitive = adapter_no3d_draw_primitive,
     .adapter_dispatch_compute = adapter_no3d_dispatch_compute,
     .adapter_clear_uav = adapter_no3d_clear_uav,
 };
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index a5d2260001..a7983b31b7 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3031,6 +3031,8 @@ struct wined3d_adapter_ops
             void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query);
     void (*adapter_destroy_query)(struct wined3d_query *query);
     void (*adapter_flush_context)(struct wined3d_context *context);
+    void (*adapter_draw_primitive)(struct wined3d_device *device, const struct wined3d_state *state,
+            const struct wined3d_draw_parameters *parameters);
     void (*adapter_dispatch_compute)(struct wined3d_device *device, const struct wined3d_state *state,
             const struct wined3d_dispatch_parameters *parameters);
     void (*adapter_clear_uav)(struct wined3d_context *context,




More information about the wine-cvs mailing list