[PATCH 5/6] wined3d: Introduce wined3d_device_context_set_constant_buffer().
Zebediah Figura
z.figura12 at gmail.com
Sun Mar 7 16:19:23 CST 2021
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/wined3d/device.c | 44 +++++++++++++++++++++++----------------
dlls/wined3d/wined3d.spec | 1 +
include/wine/wined3d.h | 2 ++
3 files changed, 29 insertions(+), 18 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index ea18dd703a2..d780ac92f1f 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2132,27 +2132,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,
+void CDECL wined3d_device_context_set_constant_buffer(struct wined3d_device_context *context,
enum wined3d_shader_type type, UINT 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)
{
@@ -2167,11 +2153,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 72f12243add..f8a490f6c02 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -169,6 +169,7 @@
@ cdecl wined3d_device_context_decref(ptr)
@ cdecl wined3d_device_context_incref(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 424ee8e75a5..51528ef6513 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2551,6 +2551,8 @@ HRESULT __cdecl wined3d_device_validate_device(const struct wined3d_device *devi
ULONG __cdecl wined3d_device_context_decref(struct wined3d_device_context *context);
ULONG __cdecl wined3d_device_context_incref(struct wined3d_device_context *context);
+void __cdecl wined3d_device_context_set_constant_buffer(struct wined3d_device_context *context,
+ enum wined3d_shader_type type, UINT 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