Module: wine Branch: master Commit: 69d771618c23c88ed094712dcf0125e52b31f777 URL: http://source.winehq.org/git/wine.git/?a=commit;h=69d771618c23c88ed094712dcf...
Author: Józef Kucia jkucia@codeweavers.com Date: Thu Apr 20 11:04:15 2017 +0200
wined3d: Introduce wined3d_device_set_domain_shader().
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/device.c | 17 +++++++++++++++++ dlls/wined3d/state.c | 2 ++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 1 + 4 files changed, 21 insertions(+)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 154197c..a3924c0 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2671,6 +2671,23 @@ void CDECL wined3d_device_set_hull_shader(struct wined3d_device *device, struct wined3d_shader_decref(prev); }
+void CDECL wined3d_device_set_domain_shader(struct wined3d_device *device, struct wined3d_shader *shader) +{ + struct wined3d_shader *prev; + + TRACE("device %p, shader %p.\n", device, shader); + + prev = device->update_state->shader[WINED3D_SHADER_TYPE_DOMAIN]; + if (shader == prev) + return; + if (shader) + wined3d_shader_incref(shader); + device->update_state->shader[WINED3D_SHADER_TYPE_DOMAIN] = shader; + wined3d_cs_emit_set_shader(device->cs, WINED3D_SHADER_TYPE_DOMAIN, shader); + if (prev) + wined3d_shader_decref(prev); +} + void CDECL wined3d_device_set_geometry_shader(struct wined3d_device *device, struct wined3d_shader *shader) { struct wined3d_shader *prev = device->update_state->shader[WINED3D_SHADER_TYPE_GEOMETRY]; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 5c22a04..06e2fbb 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -5208,6 +5208,7 @@ const struct StateEntryTemplate misc_state_template[] = { STATE_FRAMEBUFFER, { STATE_FRAMEBUFFER, context_state_fb }, WINED3D_GL_EXT_NONE }, { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), { STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), context_state_drawbuf},WINED3D_GL_EXT_NONE }, { STATE_SHADER(WINED3D_SHADER_TYPE_HULL), { STATE_SHADER(WINED3D_SHADER_TYPE_HULL), state_shader }, WINED3D_GL_EXT_NONE }, + { STATE_SHADER(WINED3D_SHADER_TYPE_DOMAIN), { STATE_SHADER(WINED3D_SHADER_TYPE_DOMAIN), state_shader }, WINED3D_GL_EXT_NONE }, { STATE_SHADER(WINED3D_SHADER_TYPE_GEOMETRY), { STATE_SHADER(WINED3D_SHADER_TYPE_GEOMETRY), state_shader }, WINED3D_GL_EXT_NONE }, { STATE_SHADER(WINED3D_SHADER_TYPE_COMPUTE), { STATE_SHADER(WINED3D_SHADER_TYPE_COMPUTE), state_compute_shader}, WINED3D_GL_EXT_NONE }, {0 /* Terminate */, { 0, 0 }, WINED3D_GL_EXT_NONE }, @@ -5990,6 +5991,7 @@ static void validate_state_table(struct StateEntry *state_table) STATE_INDEXBUFFER, STATE_SHADER(WINED3D_SHADER_TYPE_VERTEX), STATE_SHADER(WINED3D_SHADER_TYPE_HULL), + STATE_SHADER(WINED3D_SHADER_TYPE_DOMAIN), STATE_SHADER(WINED3D_SHADER_TYPE_GEOMETRY), STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL), STATE_SHADER(WINED3D_SHADER_TYPE_COMPUTE), diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index dd8b743..3331066 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -123,6 +123,7 @@ @ cdecl wined3d_device_set_cursor_properties(ptr long long ptr long) @ cdecl wined3d_device_set_depth_stencil_view(ptr ptr) @ cdecl wined3d_device_set_dialog_box_mode(ptr long) +@ cdecl wined3d_device_set_domain_shader(ptr ptr) @ cdecl wined3d_device_set_gamma_ramp(ptr long long ptr) @ cdecl wined3d_device_set_geometry_shader(ptr ptr) @ cdecl wined3d_device_set_gs_cb(ptr long ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index bbcea55..c2729fb 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2296,6 +2296,7 @@ HRESULT __cdecl wined3d_device_set_cursor_properties(struct wined3d_device *devi void __cdecl wined3d_device_set_depth_stencil_view(struct wined3d_device *device, struct wined3d_rendertarget_view *view); HRESULT __cdecl wined3d_device_set_dialog_box_mode(struct wined3d_device *device, BOOL enable_dialogs); +void __cdecl wined3d_device_set_domain_shader(struct wined3d_device *device, struct wined3d_shader *shader); void __cdecl wined3d_device_set_gamma_ramp(const struct wined3d_device *device, UINT swapchain_idx, DWORD flags, const struct wined3d_gamma_ramp *ramp); void __cdecl wined3d_device_set_geometry_shader(struct wined3d_device *device, struct wined3d_shader *shader);