Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/wined3d/cs.c | 6 +++--- dlls/wined3d/device.c | 4 ++-- dlls/wined3d/wined3d_private.h | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 4d50ecba23b..4efbe61b3fb 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1679,17 +1679,17 @@ static void wined3d_cs_exec_set_depth_stencil_state(struct wined3d_cs *cs, const device_invalidate_state(cs->c.device, STATE_STENCIL_REF); }
-void wined3d_cs_emit_set_depth_stencil_state(struct wined3d_cs *cs, +void wined3d_device_context_emit_set_depth_stencil_state(struct wined3d_device_context *context, struct wined3d_depth_stencil_state *state, unsigned int stencil_ref) { struct wined3d_cs_set_depth_stencil_state *op;
- op = wined3d_device_context_require_space(&cs->c, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT); + op = wined3d_device_context_require_space(context, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT); op->opcode = WINED3D_CS_OP_SET_DEPTH_STENCIL_STATE; op->state = state; op->stencil_ref = stencil_ref;
- wined3d_device_context_submit(&cs->c, WINED3D_CS_QUEUE_DEFAULT); + wined3d_device_context_submit(context, WINED3D_CS_QUEUE_DEFAULT); }
static void wined3d_cs_exec_set_rasterizer_state(struct wined3d_cs *cs, const void *data) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index d5179f68cd6..0b24342d2f3 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1774,7 +1774,7 @@ void CDECL wined3d_device_set_depth_stencil_state(struct wined3d_device *device, wined3d_depth_stencil_state_incref(depth_stencil_state); state->depth_stencil_state = depth_stencil_state; state->stencil_ref = stencil_ref; - wined3d_cs_emit_set_depth_stencil_state(device->cs, depth_stencil_state, stencil_ref); + wined3d_device_context_emit_set_depth_stencil_state(&device->cs->c, depth_stencil_state, stencil_ref); if (prev) wined3d_depth_stencil_state_decref(prev); } @@ -2027,7 +2027,7 @@ void CDECL wined3d_device_set_state(struct wined3d_device *device, struct wined3 }
wined3d_device_context_emit_set_blend_state(context, state->blend_state, &state->blend_factor, state->sample_mask); - wined3d_cs_emit_set_depth_stencil_state(device->cs, state->depth_stencil_state, state->stencil_ref); + wined3d_device_context_emit_set_depth_stencil_state(context, state->depth_stencil_state, state->stencil_ref); wined3d_cs_emit_set_rasterizer_state(device->cs, state->rasterizer_state); }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 7dfa7d2211b..fa8a425334f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4745,8 +4745,6 @@ void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx, const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_color_key(struct wined3d_cs *cs, struct wined3d_texture *texture, WORD flags, const struct wined3d_color_key *color_key) DECLSPEC_HIDDEN; -void wined3d_cs_emit_set_depth_stencil_state(struct wined3d_cs *cs, - struct wined3d_depth_stencil_state *state, unsigned int stencil_ref) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_depth_stencil_view(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_index_buffer(struct wined3d_cs *cs, struct wined3d_buffer *buffer, @@ -4813,6 +4811,8 @@ void wined3d_device_context_emit_set_blend_state(struct wined3d_device_context * unsigned int sample_mask) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_constant_buffer(struct wined3d_device_context *context, enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN; +void wined3d_device_context_emit_set_depth_stencil_state(struct wined3d_device_context *context, + struct wined3d_depth_stencil_state *state, unsigned int stencil_ref) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_shader(struct wined3d_device_context *context, enum wined3d_shader_type type, struct wined3d_shader *shader) DECLSPEC_HIDDEN;
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/wined3d/device.c | 36 ++++++++++++++++++++++-------------- dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 2 ++ 3 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 0b24342d2f3..3864bcfbb81 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1761,22 +1761,9 @@ struct wined3d_blend_state * CDECL wined3d_device_get_blend_state(const struct w void CDECL wined3d_device_set_depth_stencil_state(struct wined3d_device *device, struct wined3d_depth_stencil_state *depth_stencil_state, unsigned int stencil_ref) { - struct wined3d_state *state = device->cs->c.state; - struct wined3d_depth_stencil_state *prev; - TRACE("device %p, depth_stencil_state %p, stencil_ref %u.\n", device, depth_stencil_state, stencil_ref);
- prev = state->depth_stencil_state; - if (prev == depth_stencil_state && state->stencil_ref == stencil_ref) - return; - - if (depth_stencil_state) - wined3d_depth_stencil_state_incref(depth_stencil_state); - state->depth_stencil_state = depth_stencil_state; - state->stencil_ref = stencil_ref; - wined3d_device_context_emit_set_depth_stencil_state(&device->cs->c, depth_stencil_state, stencil_ref); - if (prev) - wined3d_depth_stencil_state_decref(prev); + wined3d_device_context_set_depth_stencil_state(&device->cs->c, depth_stencil_state, stencil_ref); }
struct wined3d_depth_stencil_state * CDECL wined3d_device_get_depth_stencil_state(const struct wined3d_device *device, @@ -2142,6 +2129,27 @@ void CDECL wined3d_device_context_set_blend_state(struct wined3d_device_context wined3d_blend_state_decref(prev); }
+void CDECL wined3d_device_context_set_depth_stencil_state(struct wined3d_device_context *context, + struct wined3d_depth_stencil_state *depth_stencil_state, unsigned int stencil_ref) +{ + struct wined3d_state *state = context->state; + struct wined3d_depth_stencil_state *prev; + + TRACE("context %p, depth_stencil_state %p, stencil_ref %u.\n", context, depth_stencil_state, stencil_ref); + + prev = state->depth_stencil_state; + if (prev == depth_stencil_state && state->stencil_ref == stencil_ref) + return; + + if (depth_stencil_state) + wined3d_depth_stencil_state_incref(depth_stencil_state); + state->depth_stencil_state = depth_stencil_state; + state->stencil_ref = stencil_ref; + wined3d_device_context_emit_set_depth_stencil_state(context, depth_stencil_state, stencil_ref); + if (prev) + wined3d_depth_stencil_state_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); diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 17cff7ffb9f..04bb975da73 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -169,6 +169,7 @@
@ cdecl wined3d_device_context_set_blend_state(ptr ptr ptr long) @ cdecl wined3d_device_context_set_constant_buffer(ptr long long ptr) +@ cdecl wined3d_device_context_set_depth_stencil_state(ptr ptr long) @ 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 ead427a13f6..c52f328c277 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2553,6 +2553,8 @@ void __cdecl wined3d_device_context_set_blend_state(struct wined3d_device_contex struct wined3d_blend_state *state, const struct wined3d_color *blend_factor, unsigned int sample_mask); 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_depth_stencil_state(struct wined3d_device_context *context, + struct wined3d_depth_stencil_state *depth_stencil_state, unsigned int stencil_ref); void __cdecl wined3d_device_context_set_shader(struct wined3d_device_context *context, enum wined3d_shader_type type, struct wined3d_shader *shader);
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/d3d11/device.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 6f98227bef3..664abd1eaef 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -1023,7 +1023,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetDepthStencilState(ID3D11DeviceContext1 *iface, ID3D11DepthStencilState *depth_stencil_state, UINT stencil_ref) { - struct d3d_device *device = device_from_immediate_ID3D11DeviceContext1(iface); + struct d3d11_immediate_context *context = impl_from_ID3D11DeviceContext1(iface); struct d3d_depthstencil_state *state_impl;
TRACE("iface %p, depth_stencil_state %p, stencil_ref %u.\n", @@ -1032,12 +1032,12 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetDepthStencilState(ID3 wined3d_mutex_lock(); if (!(state_impl = unsafe_impl_from_ID3D11DepthStencilState(depth_stencil_state))) { - wined3d_device_set_depth_stencil_state(device->wined3d_device, NULL, stencil_ref); + wined3d_device_context_set_depth_stencil_state(context->wined3d_context, NULL, stencil_ref); wined3d_mutex_unlock(); return; }
- wined3d_device_set_depth_stencil_state(device->wined3d_device, state_impl->wined3d_state, stencil_ref); + wined3d_device_context_set_depth_stencil_state(context->wined3d_context, state_impl->wined3d_state, stencil_ref); wined3d_mutex_unlock(); }
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/wined3d/cs.c | 6 +++--- dlls/wined3d/device.c | 4 ++-- dlls/wined3d/wined3d_private.h | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 4efbe61b3fb..2aaeeab95a6 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1700,16 +1700,16 @@ static void wined3d_cs_exec_set_rasterizer_state(struct wined3d_cs *cs, const vo device_invalidate_state(cs->c.device, STATE_RASTERIZER); }
-void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs, +void wined3d_device_context_emit_set_rasterizer_state(struct wined3d_device_context *context, struct wined3d_rasterizer_state *rasterizer_state) { struct wined3d_cs_set_rasterizer_state *op;
- op = wined3d_device_context_require_space(&cs->c, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT); + op = wined3d_device_context_require_space(context, sizeof(*op), WINED3D_CS_QUEUE_DEFAULT); op->opcode = WINED3D_CS_OP_SET_RASTERIZER_STATE; op->state = rasterizer_state;
- wined3d_device_context_submit(&cs->c, WINED3D_CS_QUEUE_DEFAULT); + wined3d_device_context_submit(context, WINED3D_CS_QUEUE_DEFAULT); }
static void wined3d_cs_exec_set_render_state(struct wined3d_cs *cs, const void *data) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 3864bcfbb81..e0b26270ada 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1792,7 +1792,7 @@ void CDECL wined3d_device_set_rasterizer_state(struct wined3d_device *device, if (rasterizer_state) wined3d_rasterizer_state_incref(rasterizer_state); state->rasterizer_state = rasterizer_state; - wined3d_cs_emit_set_rasterizer_state(device->cs, rasterizer_state); + wined3d_device_context_emit_set_rasterizer_state(&device->cs->c, rasterizer_state); if (prev) wined3d_rasterizer_state_decref(prev); } @@ -2015,7 +2015,7 @@ void CDECL wined3d_device_set_state(struct wined3d_device *device, struct wined3
wined3d_device_context_emit_set_blend_state(context, state->blend_state, &state->blend_factor, state->sample_mask); wined3d_device_context_emit_set_depth_stencil_state(context, state->depth_stencil_state, state->stencil_ref); - wined3d_cs_emit_set_rasterizer_state(device->cs, state->rasterizer_state); + wined3d_device_context_emit_set_rasterizer_state(context, state->rasterizer_state); }
struct wined3d_state * CDECL wined3d_device_get_state(struct wined3d_device *device) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index fa8a425334f..63d4b9feb00 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4754,8 +4754,6 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, unsigned int idx, B void wined3d_cs_emit_set_material(struct wined3d_cs *cs, const struct wined3d_material *material) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query *predicate, BOOL value) DECLSPEC_HIDDEN; -void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs, - struct wined3d_rasterizer_state *rasterizer_state) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs, enum wined3d_render_state state, DWORD value) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int view_idx, @@ -4813,6 +4811,8 @@ void wined3d_device_context_emit_set_constant_buffer(struct wined3d_device_conte enum wined3d_shader_type type, UINT cb_idx, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_depth_stencil_state(struct wined3d_device_context *context, struct wined3d_depth_stencil_state *state, unsigned int stencil_ref) DECLSPEC_HIDDEN; +void wined3d_device_context_emit_set_rasterizer_state(struct wined3d_device_context *context, + struct wined3d_rasterizer_state *rasterizer_state) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_shader(struct wined3d_device_context *context, enum wined3d_shader_type type, struct wined3d_shader *shader) DECLSPEC_HIDDEN;
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/wined3d/device.c | 34 +++++++++++++++++++++------------- dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 2 ++ 3 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index e0b26270ada..ad24805b5ef 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1780,21 +1780,9 @@ struct wined3d_depth_stencil_state * CDECL wined3d_device_get_depth_stencil_stat void CDECL wined3d_device_set_rasterizer_state(struct wined3d_device *device, struct wined3d_rasterizer_state *rasterizer_state) { - struct wined3d_state *state = device->cs->c.state; - struct wined3d_rasterizer_state *prev; - TRACE("device %p, rasterizer_state %p.\n", device, rasterizer_state);
- prev = state->rasterizer_state; - if (prev == rasterizer_state) - return; - - if (rasterizer_state) - wined3d_rasterizer_state_incref(rasterizer_state); - state->rasterizer_state = rasterizer_state; - wined3d_device_context_emit_set_rasterizer_state(&device->cs->c, rasterizer_state); - if (prev) - wined3d_rasterizer_state_decref(prev); + wined3d_device_context_set_rasterizer_state(&device->cs->c, rasterizer_state); }
struct wined3d_rasterizer_state * CDECL wined3d_device_get_rasterizer_state(struct wined3d_device *device) @@ -2150,6 +2138,26 @@ void CDECL wined3d_device_context_set_depth_stencil_state(struct wined3d_device_ wined3d_depth_stencil_state_decref(prev); }
+void CDECL wined3d_device_context_set_rasterizer_state(struct wined3d_device_context *context, + struct wined3d_rasterizer_state *rasterizer_state) +{ + struct wined3d_state *state = context->state; + struct wined3d_rasterizer_state *prev; + + TRACE("context %p, rasterizer_state %p.\n", context, rasterizer_state); + + prev = state->rasterizer_state; + if (prev == rasterizer_state) + return; + + if (rasterizer_state) + wined3d_rasterizer_state_incref(rasterizer_state); + state->rasterizer_state = rasterizer_state; + wined3d_device_context_emit_set_rasterizer_state(context, rasterizer_state); + if (prev) + wined3d_rasterizer_state_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); diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 04bb975da73..afa945eeb92 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -170,6 +170,7 @@ @ cdecl wined3d_device_context_set_blend_state(ptr ptr ptr long) @ cdecl wined3d_device_context_set_constant_buffer(ptr long long ptr) @ cdecl wined3d_device_context_set_depth_stencil_state(ptr ptr long) +@ cdecl wined3d_device_context_set_rasterizer_state(ptr 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 c52f328c277..87ffe04f40f 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2555,6 +2555,8 @@ void __cdecl wined3d_device_context_set_constant_buffer(struct wined3d_device_co enum wined3d_shader_type type, unsigned int idx, struct wined3d_buffer *buffer); void __cdecl wined3d_device_context_set_depth_stencil_state(struct wined3d_device_context *context, struct wined3d_depth_stencil_state *depth_stencil_state, unsigned int stencil_ref); +void __cdecl wined3d_device_context_set_rasterizer_state(struct wined3d_device_context *context, + struct wined3d_rasterizer_state *rasterizer_state); void __cdecl wined3d_device_context_set_shader(struct wined3d_device_context *context, enum wined3d_shader_type type, struct wined3d_shader *shader);
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/d3d11/device.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 664abd1eaef..4ae146b11a6 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -1135,6 +1135,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_DispatchIndirect(ID3D11Dev static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceContext1 *iface, ID3D11RasterizerState *rasterizer_state) { + struct d3d11_immediate_context *context = impl_from_ID3D11DeviceContext1(iface); struct d3d_device *device = device_from_immediate_ID3D11DeviceContext1(iface); struct d3d_rasterizer_state *rasterizer_state_impl; const D3D11_RASTERIZER_DESC *desc; @@ -1144,13 +1145,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon wined3d_mutex_lock(); if (!(rasterizer_state_impl = unsafe_impl_from_ID3D11RasterizerState(rasterizer_state))) { - wined3d_device_set_rasterizer_state(device->wined3d_device, NULL); + wined3d_device_context_set_rasterizer_state(context->wined3d_context, NULL); wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, FALSE); wined3d_mutex_unlock(); return; }
- wined3d_device_set_rasterizer_state(device->wined3d_device, rasterizer_state_impl->wined3d_state); + wined3d_device_context_set_rasterizer_state(context->wined3d_context, rasterizer_state_impl->wined3d_state);
desc = &rasterizer_state_impl->desc; wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, desc->MultisampleEnable);
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com