[PATCH v2 2/6] wined3d: Introduce wined3d_device_context_set_constant_buffer().

Zebediah Figura z.figura12 at gmail.com
Tue Mar 9 20:08:57 CST 2021


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/wined3d/device.c     | 46 +++++++++++++++++++++++----------------
 dlls/wined3d/wined3d.spec |  1 +
 include/wine/wined3d.h    |  2 ++
 3 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 1edbd23e7e4..338b489c9b9 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2107,27 +2107,13 @@ void CDECL wined3d_device_context_set_shader(struct wined3d_device_context *cont
         wined3d_shader_decref(prev);
 }
 
-void CDECL wined3d_device_set_vertex_shader(struct wined3d_device *device, struct wined3d_shader *shader)
-{
-    TRACE("device %p, shader %p.\n", device, shader);
-
-    return wined3d_device_context_set_shader(&device->cs->c, WINED3D_SHADER_TYPE_VERTEX, shader);
-}
-
-struct wined3d_shader * CDECL wined3d_device_get_vertex_shader(const struct wined3d_device *device)
-{
-    TRACE("device %p.\n", device);
-
-    return device->cs->c.state->shader[WINED3D_SHADER_TYPE_VERTEX];
-}
-
-void CDECL wined3d_device_set_constant_buffer(struct wined3d_device *device,
-        enum wined3d_shader_type type, UINT idx, struct wined3d_buffer *buffer)
+void CDECL wined3d_device_context_set_constant_buffer(struct wined3d_device_context *context,
+        enum wined3d_shader_type type, unsigned int idx, struct wined3d_buffer *buffer)
 {
-    struct wined3d_state *state = device->cs->c.state;
+    struct wined3d_state *state = context->state;
     struct wined3d_buffer *prev;
 
-    TRACE("device %p, type %#x, idx %u, buffer %p.\n", device, type, idx, buffer);
+    TRACE("context %p, type %#x, idx %u, buffer %p.\n", context, type, idx, buffer);
 
     if (idx >= MAX_CONSTANT_BUFFERS)
     {
@@ -2142,11 +2128,33 @@ void CDECL wined3d_device_set_constant_buffer(struct wined3d_device *device,
     if (buffer)
         wined3d_buffer_incref(buffer);
     state->cb[type][idx] = buffer;
-    wined3d_device_context_emit_set_constant_buffer(&device->cs->c, type, idx, buffer);
+    wined3d_device_context_emit_set_constant_buffer(context, type, idx, buffer);
     if (prev)
         wined3d_buffer_decref(prev);
 }
 
+void CDECL wined3d_device_set_vertex_shader(struct wined3d_device *device, struct wined3d_shader *shader)
+{
+    TRACE("device %p, shader %p.\n", device, shader);
+
+    return wined3d_device_context_set_shader(&device->cs->c, WINED3D_SHADER_TYPE_VERTEX, shader);
+}
+
+struct wined3d_shader * CDECL wined3d_device_get_vertex_shader(const struct wined3d_device *device)
+{
+    TRACE("device %p.\n", device);
+
+    return device->cs->c.state->shader[WINED3D_SHADER_TYPE_VERTEX];
+}
+
+void CDECL wined3d_device_set_constant_buffer(struct wined3d_device *device,
+        enum wined3d_shader_type type, UINT idx, struct wined3d_buffer *buffer)
+{
+    TRACE("device %p, type %#x, idx %u, buffer %p.\n", device, type, idx, buffer);
+
+    return wined3d_device_context_set_constant_buffer(&device->cs->c, type, idx, buffer);
+}
+
 struct wined3d_buffer * CDECL wined3d_device_get_constant_buffer(const struct wined3d_device *device,
         enum wined3d_shader_type shader_type, unsigned int idx)
 {
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index f5fa1d3d7e5..d88817d6551 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -167,6 +167,7 @@
 @ cdecl wined3d_device_update_texture(ptr ptr ptr)
 @ cdecl wined3d_device_validate_device(ptr ptr)
 
+@ cdecl wined3d_device_context_set_constant_buffer(ptr long long ptr)
 @ cdecl wined3d_device_context_set_shader(ptr long ptr)
 
 @ cdecl wined3d_output_find_closest_matching_mode(ptr ptr)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index ba9e8642ea2..0bdf53c651e 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2549,6 +2549,8 @@ HRESULT __cdecl wined3d_device_update_texture(struct wined3d_device *device,
         struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture);
 HRESULT __cdecl wined3d_device_validate_device(const struct wined3d_device *device, DWORD *num_passes);
 
+void __cdecl wined3d_device_context_set_constant_buffer(struct wined3d_device_context *context,
+        enum wined3d_shader_type type, unsigned int idx, struct wined3d_buffer *buffer);
 void __cdecl wined3d_device_context_set_shader(struct wined3d_device_context *context,
         enum wined3d_shader_type type, struct wined3d_shader *shader);
 
-- 
2.20.1




More information about the wine-devel mailing list