winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
March 2021
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
1163 discussions
Start a n
N
ew thread
Zebediah Figura : wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_rendertarget_view().
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: cdb8fff3597f8b40ccd7e4ea4f2de4b4377e916e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cdb8fff3597f8b40ccd7e4ea…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Mar 17 19:45:16 2021 -0500 wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_rendertarget_view(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- 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 dbc242f1ba0..4dbf95cc9f7 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1203,17 +1203,17 @@ static void wined3d_cs_exec_set_rendertarget_view(struct wined3d_cs *cs, const v device_invalidate_state(cs->c.device, STATE_SHADER(WINED3D_SHADER_TYPE_PIXEL)); } -void wined3d_cs_emit_set_rendertarget_view(struct wined3d_cs *cs, unsigned int view_idx, +void wined3d_device_context_emit_set_rendertarget_view(struct wined3d_device_context *context, unsigned int view_idx, struct wined3d_rendertarget_view *view) { struct wined3d_cs_set_rendertarget_view *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_RENDERTARGET_VIEW; op->view_idx = view_idx; op->view = view; - 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_depth_stencil_view(struct wined3d_cs *cs, const void *data) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index d8073ef52f0..382e72055a4 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1874,7 +1874,7 @@ void CDECL wined3d_device_set_state(struct wined3d_device *device, struct wined3 for (i = 0; i < WINED3D_MAX_RENDER_TARGETS; ++i) { - wined3d_cs_emit_set_rendertarget_view(device->cs, i, state->fb.render_targets[i]); + wined3d_device_context_emit_set_rendertarget_view(context, i, state->fb.render_targets[i]); } wined3d_cs_emit_set_depth_stencil_view(device->cs, state->fb.depth_stencil); @@ -5246,7 +5246,7 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device wined3d_rtv_bind_count_inc(view); } state->fb.render_targets[view_idx] = view; - wined3d_cs_emit_set_rendertarget_view(device->cs, view_idx, view); + wined3d_device_context_emit_set_rendertarget_view(&device->cs->c, view_idx, view); /* Release after the assignment, to prevent device_resource_released() * from seeing the surface as still in use. */ if (prev) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index d797b53a5ac..34fcf8f9fac 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4761,8 +4761,6 @@ void wined3d_cs_emit_set_predication(struct wined3d_cs *cs, struct wined3d_query *predicate, BOOL value) 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, - struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_sampler_state(struct wined3d_cs *cs, UINT sampler_idx, enum wined3d_sampler_state state, DWORD value) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_stream_output(struct wined3d_cs *cs, UINT stream_idx, @@ -4809,6 +4807,8 @@ void wined3d_device_context_emit_set_depth_stencil_state(struct wined3d_device_c 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_rendertarget_view(struct wined3d_device_context *context, unsigned int view_idx, + struct wined3d_rendertarget_view *view) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_sampler(struct wined3d_device_context *context, enum wined3d_shader_type type, unsigned int sampler_idx, struct wined3d_sampler *sampler) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_scissor_rects(struct wined3d_device_context *context,
1
0
0
0
Zebediah Figura : d3d11: Use wined3d_device_context_set_unordered_access_view().
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: f4eb08e8583af649eeaacc629fe8e849f71cf73d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f4eb08e8583af649eeaacc62…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Mar 17 19:45:15 2021 -0500 d3d11: Use wined3d_device_context_set_unordered_access_view(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d11/device.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 7dc6f441185..0ceae50ce4c 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -963,7 +963,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetRenderTargetsAndUnord UINT unordered_access_view_start_slot, UINT unordered_access_view_count, ID3D11UnorderedAccessView *const *unordered_access_views, const UINT *initial_counts) { - struct d3d_device *device = device_from_immediate_ID3D11DeviceContext1(iface); + struct d3d11_immediate_context *context = impl_from_ID3D11DeviceContext1(iface); unsigned int i; TRACE("iface %p, render_target_view_count %u, render_target_views %p, depth_stencil_view %p, " @@ -984,21 +984,22 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetRenderTargetsAndUnord wined3d_mutex_lock(); for (i = 0; i < unordered_access_view_start_slot; ++i) { - wined3d_device_set_unordered_access_view(device->wined3d_device, i, NULL, ~0u); + wined3d_device_context_set_unordered_access_view(context->wined3d_context, + WINED3D_PIPELINE_GRAPHICS, i, NULL, ~0u); } for (i = 0; i < unordered_access_view_count; ++i) { struct d3d11_unordered_access_view *view = unsafe_impl_from_ID3D11UnorderedAccessView(unordered_access_views[i]); - wined3d_device_set_unordered_access_view(device->wined3d_device, - unordered_access_view_start_slot + i, + wined3d_device_context_set_unordered_access_view(context->wined3d_context, + WINED3D_PIPELINE_GRAPHICS, unordered_access_view_start_slot + i, view ? view->wined3d_view : NULL, initial_counts ? initial_counts[i] : ~0u); } for (; unordered_access_view_start_slot + i < D3D11_PS_CS_UAV_REGISTER_COUNT; ++i) { - wined3d_device_set_unordered_access_view(device->wined3d_device, - unordered_access_view_start_slot + i, NULL, ~0u); + wined3d_device_context_set_unordered_access_view(context->wined3d_context, + WINED3D_PIPELINE_GRAPHICS, unordered_access_view_start_slot + i, NULL, ~0u); } wined3d_mutex_unlock(); } @@ -2621,10 +2622,10 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_ClearState(ID3D11DeviceCon wined3d_device_set_rendertarget_view(device->wined3d_device, i, NULL, FALSE); } wined3d_device_set_depth_stencil_view(device->wined3d_device, NULL); - for (i = 0; i < D3D11_PS_CS_UAV_REGISTER_COUNT; ++i) + for (i = 0; i < WINED3D_PIPELINE_COUNT; ++i) { - wined3d_device_set_unordered_access_view(device->wined3d_device, i, NULL, ~0u); - wined3d_device_set_cs_uav(device->wined3d_device, i, NULL, ~0u); + for (j = 0; j < D3D11_PS_CS_UAV_REGISTER_COUNT; ++j) + wined3d_device_context_set_unordered_access_view(context->wined3d_context, i, j, NULL, ~0u); } ID3D11DeviceContext1_OMSetDepthStencilState(iface, NULL, 0); ID3D11DeviceContext1_OMSetBlendState(iface, NULL, blend_factor, D3D11_DEFAULT_SAMPLE_MASK);
1
0
0
0
Zebediah Figura : wined3d: Introduce wined3d_device_context_set_unordered_access_view().
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: beab8a643eea1ac20eed0026d80dea003fcbe401 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=beab8a643eea1ac20eed0026…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Mar 17 19:45:14 2021 -0500 wined3d: Introduce wined3d_device_context_set_unordered_access_view(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wined3d/device.c | 56 ++++++++++++++++++++++-------------------- dlls/wined3d/wined3d.spec | 1 + dlls/wined3d/wined3d_private.h | 7 ------ include/wine/wined3d.h | 10 ++++++++ 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 14a68b4f3b1..d8073ef52f0 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2257,6 +2257,33 @@ void CDECL wined3d_device_context_set_sampler(struct wined3d_device_context *con wined3d_sampler_decref(prev); } +void CDECL wined3d_device_context_set_unordered_access_view(struct wined3d_device_context *context, + enum wined3d_pipeline pipeline, unsigned int idx, struct wined3d_unordered_access_view *uav, + unsigned int initial_count) +{ + struct wined3d_state *state = context->state; + struct wined3d_unordered_access_view *prev; + + TRACE("context %p, pipeline %#x, idx %u, uav %p, initial_count %u.\n", context, pipeline, idx, uav, initial_count); + + if (idx >= MAX_UNORDERED_ACCESS_VIEWS) + { + WARN("Invalid UAV index %u.\n", idx); + return; + } + + prev = state->unordered_access_view[pipeline][idx]; + if (uav == prev && initial_count == ~0u) + return; + + if (uav) + wined3d_unordered_access_view_incref(uav); + state->unordered_access_view[pipeline][idx] = uav; + wined3d_device_context_emit_set_unordered_access_view(context, pipeline, idx, uav, initial_count); + if (prev) + wined3d_unordered_access_view_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); @@ -2678,31 +2705,6 @@ struct wined3d_sampler * CDECL wined3d_device_get_cs_sampler(const struct wined3 return wined3d_device_get_sampler(device, WINED3D_SHADER_TYPE_COMPUTE, idx); } -static void wined3d_device_set_pipeline_unordered_access_view(struct wined3d_device *device, - enum wined3d_pipeline pipeline, unsigned int idx, struct wined3d_unordered_access_view *uav, - unsigned int initial_count) -{ - struct wined3d_state *state = device->cs->c.state; - struct wined3d_unordered_access_view *prev; - - if (idx >= MAX_UNORDERED_ACCESS_VIEWS) - { - WARN("Invalid UAV index %u.\n", idx); - return; - } - - prev = state->unordered_access_view[pipeline][idx]; - if (uav == prev && initial_count == ~0u) - return; - - if (uav) - wined3d_unordered_access_view_incref(uav); - state->unordered_access_view[pipeline][idx] = uav; - wined3d_device_context_emit_set_unordered_access_view(&device->cs->c, pipeline, idx, uav, initial_count); - if (prev) - wined3d_unordered_access_view_decref(prev); -} - static struct wined3d_unordered_access_view *wined3d_device_get_pipeline_unordered_access_view( const struct wined3d_device *device, enum wined3d_pipeline pipeline, unsigned int idx) { @@ -2720,7 +2722,7 @@ void CDECL wined3d_device_set_cs_uav(struct wined3d_device *device, unsigned int { TRACE("device %p, idx %u, uav %p, initial_count %#x.\n", device, idx, uav, initial_count); - wined3d_device_set_pipeline_unordered_access_view(device, WINED3D_PIPELINE_COMPUTE, idx, uav, initial_count); + wined3d_device_context_set_unordered_access_view(&device->cs->c, WINED3D_PIPELINE_COMPUTE, idx, uav, initial_count); } struct wined3d_unordered_access_view * CDECL wined3d_device_get_cs_uav(const struct wined3d_device *device, @@ -2736,7 +2738,7 @@ void CDECL wined3d_device_set_unordered_access_view(struct wined3d_device *devic { TRACE("device %p, idx %u, uav %p, initial_count %#x.\n", device, idx, uav, initial_count); - wined3d_device_set_pipeline_unordered_access_view(device, WINED3D_PIPELINE_GRAPHICS, idx, uav, initial_count); + wined3d_device_context_set_unordered_access_view(&device->cs->c, WINED3D_PIPELINE_GRAPHICS, idx, uav, initial_count); } struct wined3d_unordered_access_view * CDECL wined3d_device_get_unordered_access_view( diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 7c39295c256..9655c1a65f2 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -174,6 +174,7 @@ @ cdecl wined3d_device_context_set_scissor_rects(ptr long ptr) @ cdecl wined3d_device_context_set_shader(ptr long ptr) @ cdecl wined3d_device_context_set_shader_resource_view(ptr long long ptr) +@ cdecl wined3d_device_context_set_unordered_access_view(ptr long long ptr long) @ cdecl wined3d_device_context_set_viewports(ptr long ptr) @ cdecl wined3d_output_find_closest_matching_mode(ptr ptr) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 0b71da8982c..d797b53a5ac 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1730,13 +1730,6 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state #define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num) \ (((((d3dvtVertexType) >> (16 + (2 * (tex_num)))) + 1) & 0x03) + 1) -enum wined3d_pipeline -{ - WINED3D_PIPELINE_GRAPHICS, - WINED3D_PIPELINE_COMPUTE, - WINED3D_PIPELINE_COUNT, -}; - /* Routines and structures related to state management */ #define STATE_RENDER(a) (a) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 760e1ebcc80..38b4d8d792d 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -868,6 +868,13 @@ enum wined3d_shader_type WINED3D_SHADER_TYPE_INVALID = WINED3D_SHADER_TYPE_COUNT, }; +enum wined3d_pipeline +{ + WINED3D_PIPELINE_GRAPHICS, + WINED3D_PIPELINE_COMPUTE, + WINED3D_PIPELINE_COUNT, +}; + #define WINED3DCOLORWRITEENABLE_RED (1u << 0) #define WINED3DCOLORWRITEENABLE_GREEN (1u << 1) #define WINED3DCOLORWRITEENABLE_BLUE (1u << 2) @@ -2564,6 +2571,9 @@ void __cdecl wined3d_device_context_set_shader(struct wined3d_device_context *co enum wined3d_shader_type type, struct wined3d_shader *shader); void __cdecl wined3d_device_context_set_shader_resource_view(struct wined3d_device_context *context, enum wined3d_shader_type type, unsigned int idx, struct wined3d_shader_resource_view *view); +void __cdecl wined3d_device_context_set_unordered_access_view(struct wined3d_device_context *context, + enum wined3d_pipeline pipeline, unsigned int idx, struct wined3d_unordered_access_view *uav, + unsigned int initial_count); void __cdecl wined3d_device_context_set_viewports(struct wined3d_device_context *context, unsigned int viewport_count, const struct wined3d_viewport *viewports);
1
0
0
0
Zebediah Figura : wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_unordered_access_view().
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 77d6549f55b2a0f9e98aa68210167022453f39b8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=77d6549f55b2a0f9e98aa682…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Mar 17 19:45:13 2021 -0500 wined3d: Pass a wined3d_device_context to wined3d_cs_emit_set_unordered_access_view(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wined3d/cs.c | 9 +++++---- dlls/wined3d/device.c | 5 +++-- dlls/wined3d/wined3d_private.h | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 8afa298b905..dbc242f1ba0 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1579,19 +1579,20 @@ static void wined3d_cs_exec_set_unordered_access_view(struct wined3d_cs *cs, con device_invalidate_state(cs->c.device, STATE_UNORDERED_ACCESS_VIEW_BINDING(op->pipeline)); } -void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined3d_pipeline pipeline, - unsigned int view_idx, struct wined3d_unordered_access_view *view, unsigned int initial_count) +void wined3d_device_context_emit_set_unordered_access_view(struct wined3d_device_context *context, + enum wined3d_pipeline pipeline, unsigned int view_idx, struct wined3d_unordered_access_view *view, + unsigned int initial_count) { struct wined3d_cs_set_unordered_access_view *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_UNORDERED_ACCESS_VIEW; op->pipeline = pipeline; op->view_idx = view_idx; op->view = view; op->initial_count = initial_count; - 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_sampler(struct wined3d_cs *cs, const void *data) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index c4700d2dc65..14a68b4f3b1 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1915,7 +1915,8 @@ void CDECL wined3d_device_set_state(struct wined3d_device *device, struct wined3 { for (j = 0; j < MAX_UNORDERED_ACCESS_VIEWS; ++j) { - wined3d_cs_emit_set_unordered_access_view(device->cs, i, j, state->unordered_access_view[i][j], ~0); + wined3d_device_context_emit_set_unordered_access_view(context, i, j, + state->unordered_access_view[i][j], ~0); } } @@ -2697,7 +2698,7 @@ static void wined3d_device_set_pipeline_unordered_access_view(struct wined3d_dev if (uav) wined3d_unordered_access_view_incref(uav); state->unordered_access_view[pipeline][idx] = uav; - wined3d_cs_emit_set_unordered_access_view(device->cs, pipeline, idx, uav, initial_count); + wined3d_device_context_emit_set_unordered_access_view(&device->cs->c, pipeline, idx, uav, initial_count); if (prev) wined3d_unordered_access_view_decref(prev); } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 877308e543b..0b71da8982c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4783,9 +4783,6 @@ void wined3d_cs_emit_set_texture_state(struct wined3d_cs *cs, UINT stage, enum wined3d_texture_stage_state state, DWORD value) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform_state state, const struct wined3d_matrix *matrix) DECLSPEC_HIDDEN; -void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined3d_pipeline pipeline, - unsigned int view_idx, struct wined3d_unordered_access_view *view, - unsigned int initial_count) DECLSPEC_HIDDEN; void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs, struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN; void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN; @@ -4828,6 +4825,9 @@ void wined3d_device_context_emit_set_shader(struct wined3d_device_context *conte void wined3d_device_context_emit_set_shader_resource_view(struct wined3d_device_context *context, enum wined3d_shader_type type, unsigned int view_idx, struct wined3d_shader_resource_view *view) DECLSPEC_HIDDEN; +void wined3d_device_context_emit_set_unordered_access_view(struct wined3d_device_context *context, + enum wined3d_pipeline pipeline, unsigned int view_idx, struct wined3d_unordered_access_view *view, + unsigned int initial_count) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_viewports(struct wined3d_device_context *context, unsigned int viewport_count, const struct wined3d_viewport *viewports) DECLSPEC_HIDDEN;
1
0
0
0
Zebediah Figura : wined3d: Check whether a register is a UAV before recording UAV reads.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 854b925d31a0938622dffbcc7c3fc6a923be884e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=854b925d31a0938622dffbcc…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Mar 17 16:11:20 2021 -0500 wined3d: Check whether a register is a UAV before recording UAV reads. "Discovery Tour by Assassin's Creed: Ancient Egypt" uses atomic RMW instructions with TGSM. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wined3d/shader.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index ff44969d022..42a3c108860 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1649,23 +1649,28 @@ static HRESULT shader_get_registers_used(struct wined3d_shader *shader, DWORD co || (ins.handler_idx == WINED3DSIH_LD_RAW && ins.src[1].reg.type == WINED3DSPR_UAV) || (ins.handler_idx == WINED3DSIH_LD_STRUCTURED && ins.src[2].reg.type == WINED3DSPR_UAV)) { - unsigned int reg_idx; + const struct wined3d_shader_register *reg; + if (ins.handler_idx == WINED3DSIH_LD_UAV_TYPED || ins.handler_idx == WINED3DSIH_LD_RAW) - reg_idx = ins.src[1].reg.idx[0].offset; + reg = &ins.src[1].reg; else if (ins.handler_idx == WINED3DSIH_LD_STRUCTURED) - reg_idx = ins.src[2].reg.idx[0].offset; + reg = &ins.src[2].reg; else if (WINED3DSIH_ATOMIC_AND <= ins.handler_idx && ins.handler_idx <= WINED3DSIH_ATOMIC_XOR) - reg_idx = ins.dst[0].reg.idx[0].offset; + reg = &ins.dst[0].reg; else if (ins.handler_idx == WINED3DSIH_BUFINFO) - reg_idx = ins.src[0].reg.idx[0].offset; + reg = &ins.src[0].reg; else - reg_idx = ins.dst[1].reg.idx[0].offset; - if (reg_idx >= MAX_UNORDERED_ACCESS_VIEWS) + reg = &ins.dst[1].reg; + + if (reg->type == WINED3DSPR_UAV) { - ERR("Invalid UAV index %u.\n", reg_idx); - break; + if (reg->idx[0].offset >= MAX_UNORDERED_ACCESS_VIEWS) + { + ERR("Invalid UAV index %u.\n", reg->idx[0].offset); + break; + } + reg_maps->uav_read_mask |= (1u << reg->idx[0].offset); } - reg_maps->uav_read_mask |= (1u << reg_idx); } else if (ins.handler_idx == WINED3DSIH_NRM) {
1
0
0
0
Matteo Bruni : wined3d: Advertise multisampling only when supported.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 2683c34c90c7a83f6e7e87932c5caab1fa518603 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2683c34c90c7a83f6e7e8793…
Author: Matteo Bruni <mbruni(a)codeweavers.com> Date: Wed Mar 17 13:35:21 2021 +0100 wined3d: Advertise multisampling only when supported. Signed-off-by: Matteo Bruni <mbruni(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wined3d/utils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 11284d19811..dc7823b9534 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -3071,7 +3071,9 @@ static void query_internal_format(struct wined3d_adapter *adapter, query_view_class(format); if (format->internal && format->f.flags[WINED3D_GL_RES_TYPE_RB] - & (WINED3DFMT_FLAG_RENDERTARGET | WINED3DFMT_FLAG_DEPTH_STENCIL)) + & (WINED3DFMT_FLAG_RENDERTARGET | WINED3DFMT_FLAG_DEPTH_STENCIL) + && (gl_info->supported[ARB_FRAMEBUFFER_OBJECT] || gl_info->supported[EXT_FRAMEBUFFER_MULTISAMPLE]) + && wined3d_settings.offscreen_rendering_mode == ORM_FBO) { if (gl_info->supported[ARB_INTERNALFORMAT_QUERY]) {
1
0
0
0
Matteo Bruni : wined3d: Handle blits to Vulkan swapchains not matching the D3D swapchain.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: cb45e91b24b923f589af00a551a58569f9cfb636 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=cb45e91b24b923f589af00a5…
Author: Matteo Bruni <mbruni(a)codeweavers.com> Date: Wed Mar 17 13:35:19 2021 +0100 wined3d: Handle blits to Vulkan swapchains not matching the D3D swapchain. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=50119
Signed-off-by: Matteo Bruni <mbruni(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wined3d/swapchain.c | 72 ++++++++++++++++++++++++++++-------------- dlls/wined3d/wined3d_private.h | 1 + 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 0683ffef6fe..7210d5352dd 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -998,6 +998,9 @@ static HRESULT wined3d_swapchain_vk_create_vulkan_swapchain(struct wined3d_swapc goto fail; } + swapchain_vk->width = width; + swapchain_vk->height = height; + return WINED3D_OK; fail: @@ -1031,7 +1034,7 @@ static void wined3d_swapchain_vk_set_swap_interval(struct wined3d_swapchain_vk * wined3d_swapchain_vk_recreate(swapchain_vk); } -static void wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, +static VkResult wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, struct wined3d_context_vk *context_vk, const RECT *src_rect, const RECT *dst_rect, unsigned int swap_interval) { struct wined3d_texture_vk *back_buffer_vk = wined3d_texture_vk(swapchain_vk->s.back_buffers[0]); @@ -1044,34 +1047,36 @@ static void wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, unsigned int present_idx; VkImageLayout vk_layout; uint32_t image_idx; + RECT dst_rect_tmp; VkImageBlit blit; + VkFilter filter; VkResult vr; - HRESULT hr; static const VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; + TRACE("swapchain_vk %p, context_vk %p, src_rect %s, dst_rect %s, swap_interval %u.\n", + swapchain_vk, context_vk, wine_dbgstr_rect(src_rect), wine_dbgstr_rect(dst_rect), swap_interval); + wined3d_swapchain_vk_set_swap_interval(swapchain_vk, swap_interval); present_idx = swapchain_vk->current++ % swapchain_vk->image_count; wined3d_context_vk_wait_command_buffer(context_vk, swapchain_vk->vk_semaphores[present_idx].command_buffer_id); - vr = VK_CALL(vkAcquireNextImageKHR(device_vk->vk_device, swapchain_vk->vk_swapchain, UINT64_MAX, - swapchain_vk->vk_semaphores[present_idx].available, VK_NULL_HANDLE, &image_idx)); - if (vr == VK_ERROR_OUT_OF_DATE_KHR) - { - if (FAILED(hr = wined3d_swapchain_vk_recreate(swapchain_vk))) - { - ERR("Failed to recreate swapchain, hr %#x.\n", hr); - return; - } - vr = VK_CALL(vkAcquireNextImageKHR(device_vk->vk_device, swapchain_vk->vk_swapchain, UINT64_MAX, - swapchain_vk->vk_semaphores[present_idx].available, VK_NULL_HANDLE, &image_idx)); - } - if (vr < 0) - { - ERR("Failed to acquire next Vulkan image, vr %s.\n", wined3d_debug_vkresult(vr)); - return; - } - + if ((vr = VK_CALL(vkAcquireNextImageKHR(device_vk->vk_device, swapchain_vk->vk_swapchain, UINT64_MAX, + swapchain_vk->vk_semaphores[present_idx].available, VK_NULL_HANDLE, &image_idx))) < 0) + return vr; + + if (dst_rect->right > swapchain_vk->width || dst_rect->bottom > swapchain_vk->height) + { + dst_rect_tmp = *dst_rect; + if (dst_rect->right > swapchain_vk->width) + dst_rect_tmp.right = swapchain_vk->width; + if (dst_rect->bottom > swapchain_vk->height) + dst_rect_tmp.bottom = swapchain_vk->height; + dst_rect = &dst_rect_tmp; + } + filter = src_rect->right - src_rect->left != dst_rect->right - dst_rect->left + || src_rect->bottom - src_rect->top != dst_rect->bottom - dst_rect->top + ? VK_FILTER_LINEAR : VK_FILTER_NEAREST; vk_command_buffer = wined3d_context_vk_get_command_buffer(context_vk); wined3d_context_vk_end_current_render_pass(context_vk); @@ -1115,7 +1120,7 @@ static void wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, VK_CALL(vkCmdBlitImage(vk_command_buffer, back_buffer_vk->vk_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, swapchain_vk->vk_images[image_idx], VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - 1, &blit, VK_FILTER_NEAREST)); + 1, &blit, filter)); wined3d_context_vk_reference_texture(context_vk, back_buffer_vk); wined3d_context_vk_image_barrier(context_vk, vk_command_buffer, @@ -1149,8 +1154,7 @@ static void wined3d_swapchain_vk_blit(struct wined3d_swapchain_vk *swapchain_vk, present_desc.pSwapchains = &swapchain_vk->vk_swapchain; present_desc.pImageIndices = &image_idx; present_desc.pResults = NULL; - if ((vr = VK_CALL(vkQueuePresentKHR(device_vk->vk_queue, &present_desc)))) - ERR("Present returned vr %s.\n", wined3d_debug_vkresult(vr)); + return VK_CALL(vkQueuePresentKHR(device_vk->vk_queue, &present_desc)); } static void wined3d_swapchain_vk_rotate(struct wined3d_swapchain *swapchain, struct wined3d_context_vk *context_vk) @@ -1222,15 +1226,35 @@ static void swapchain_vk_present(struct wined3d_swapchain *swapchain, const RECT struct wined3d_swapchain_vk *swapchain_vk = wined3d_swapchain_vk(swapchain); struct wined3d_texture *back_buffer = swapchain->back_buffers[0]; struct wined3d_context_vk *context_vk; + VkResult vr; + HRESULT hr; context_vk = wined3d_context_vk(context_acquire(swapchain->device, back_buffer, 0)); wined3d_texture_load_location(back_buffer, 0, &context_vk->c, back_buffer->resource.draw_binding); if (swapchain_vk->vk_swapchain) - wined3d_swapchain_vk_blit(swapchain_vk, context_vk, src_rect, dst_rect, swap_interval); + { + if ((vr = wined3d_swapchain_vk_blit(swapchain_vk, context_vk, src_rect, dst_rect, swap_interval))) + { + if (vr == VK_ERROR_OUT_OF_DATE_KHR || vr == VK_SUBOPTIMAL_KHR) + { + if (FAILED(hr = wined3d_swapchain_vk_recreate(swapchain_vk))) + ERR("Failed to recreate swapchain, hr %#x.\n", hr); + else if (vr == VK_ERROR_OUT_OF_DATE_KHR && (vr = wined3d_swapchain_vk_blit( + swapchain_vk, context_vk, src_rect, dst_rect, swap_interval))) + ERR("Failed to blit image, vr %s.\n", wined3d_debug_vkresult(vr)); + } + else + { + ERR("Failed to blit image, vr %s.\n", wined3d_debug_vkresult(vr)); + } + } + } else + { swapchain_blit_gdi(swapchain, &context_vk->c, src_rect, dst_rect); + } wined3d_swapchain_vk_rotate(swapchain, context_vk); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 19ef894021b..877308e543b 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -5305,6 +5305,7 @@ struct wined3d_swapchain_vk uint64_t command_buffer_id; } *vk_semaphores; unsigned int current, image_count; + unsigned int width, height; }; static inline struct wined3d_swapchain_vk *wined3d_swapchain_vk(struct wined3d_swapchain *swapchain)
1
0
0
0
Hugh McMaster : reg: 'export' sorts before 'import'.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 42420f4d6c13cc4818e10c9b0cd9ee64c3715db3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=42420f4d6c13cc4818e10c9b…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Thu Mar 18 22:36:53 2021 +1100 reg: 'export' sorts before 'import'. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/reg/reg.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/reg/reg.c b/programs/reg/reg.c index daeec5f5718..309d855e996 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -306,8 +306,8 @@ static BOOL is_help_switch(const WCHAR *s) enum operations { REG_ADD, REG_DELETE, - REG_IMPORT, REG_EXPORT, + REG_IMPORT, REG_QUERY, REG_INVALID }; @@ -318,16 +318,16 @@ static enum operations get_operation(const WCHAR *str, int *op_help) static const WCHAR add[] = {'a','d','d',0}; static const WCHAR delete[] = {'d','e','l','e','t','e',0}; - static const WCHAR import[] = {'i','m','p','o','r','t',0}; static const WCHAR export[] = {'e','x','p','o','r','t',0}; + static const WCHAR import[] = {'i','m','p','o','r','t',0}; static const WCHAR query[] = {'q','u','e','r','y',0}; static const struct op_info op_array[] = { { add, REG_ADD, STRING_ADD_USAGE }, { delete, REG_DELETE, STRING_DELETE_USAGE }, - { import, REG_IMPORT, STRING_IMPORT_USAGE }, { export, REG_EXPORT, STRING_EXPORT_USAGE }, + { import, REG_IMPORT, STRING_IMPORT_USAGE }, { query, REG_QUERY, STRING_QUERY_USAGE }, { NULL, -1, 0 } }; @@ -389,12 +389,12 @@ int __cdecl wmain(int argc, WCHAR *argvW[]) return 0; } - if (op == REG_IMPORT) - return reg_import(argc, argvW); - if (op == REG_EXPORT) return reg_export(argc, argvW); + if (op == REG_IMPORT) + return reg_import(argc, argvW); + if (!parse_registry_key(argvW[2], &root, &path, &key_name)) return 1;
1
0
0
0
Hugh McMaster : reg: Use 'argvW' array naming in export.c.
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: d37375e47033f92375ec4a431b5c3c2f28dd5829 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d37375e47033f92375ec4a43…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Thu Mar 18 22:36:52 2021 +1100 reg: Use 'argvW' array naming in export.c. Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/reg/export.c | 10 +++++----- programs/reg/reg.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/reg/export.c b/programs/reg/export.c index 214c94b1368..8ce1945a693 100644 --- a/programs/reg/export.c +++ b/programs/reg/export.c @@ -360,7 +360,7 @@ static BOOL is_overwrite_switch(const WCHAR *s) return is_switch(s, 'y'); } -int reg_export(int argc, WCHAR *argv[]) +int reg_export(int argc, WCHAR *argvW[]) { HKEY root, hkey; WCHAR *path, *long_key; @@ -371,10 +371,10 @@ int reg_export(int argc, WCHAR *argv[]) if (argc == 3 || argc > 5) goto error; - if (!parse_registry_key(argv[2], &root, &path, &long_key)) + if (!parse_registry_key(argvW[2], &root, &path, &long_key)) return 1; - if (argc == 5 && !(overwrite_file = is_overwrite_switch(argv[4]))) + if (argc == 5 && !(overwrite_file = is_overwrite_switch(argvW[4]))) goto error; if (RegOpenKeyExW(root, path, 0, KEY_READ, &hkey)) @@ -383,7 +383,7 @@ int reg_export(int argc, WCHAR *argv[]) return 1; } - hFile = get_file_handle(argv[3], overwrite_file); + hFile = get_file_handle(argvW[3], overwrite_file); export_file_header(hFile); ret = export_registry_data(hFile, hkey, long_key); export_newline(hFile); @@ -395,6 +395,6 @@ int reg_export(int argc, WCHAR *argv[]) error: output_message(STRING_INVALID_SYNTAX); - output_message(STRING_FUNC_HELP, wcsupr(argv[1])); + output_message(STRING_FUNC_HELP, wcsupr(argvW[1])); return 1; } diff --git a/programs/reg/reg.h b/programs/reg/reg.h index 703dd0d37af..83bcf516297 100644 --- a/programs/reg/reg.h +++ b/programs/reg/reg.h @@ -53,7 +53,7 @@ int reg_delete(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, BOOL value_empty, BOOL value_all, BOOL force); /* export.c */ -int reg_export(int argc, WCHAR *argv[]); +int reg_export(int argc, WCHAR *argvW[]); /* import.c */ int reg_import(int argc, WCHAR *argvW[]);
1
0
0
0
Hugh McMaster : reg: Move 'import' syntax checks to reg_import().
by Alexandre Julliard
18 Mar '21
18 Mar '21
Module: wine Branch: master Commit: 4cbf47054fc7d95bcbab368fa53fc71908472309 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4cbf47054fc7d95bcbab368f…
Author: Hugh McMaster <hugh.mcmaster(a)outlook.com> Date: Thu Mar 18 22:36:51 2021 +1100 reg: Move 'import' syntax checks to reg_import(). Signed-off-by: Hugh McMaster <hugh.mcmaster(a)outlook.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/reg/import.c | 13 +++++++++++-- programs/reg/reg.c | 9 +-------- programs/reg/reg.h | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/programs/reg/import.c b/programs/reg/import.c index 9e21bcc6a7e..13e54e6a69a 100644 --- a/programs/reg/import.c +++ b/programs/reg/import.c @@ -983,13 +983,22 @@ cleanup: return NULL; } -int reg_import(const WCHAR *filename) +int reg_import(int argc, WCHAR *argvW[]) { + WCHAR *filename, *pos; FILE *fp; static const WCHAR rb_mode[] = {'r','b',0}; BYTE s[2]; struct parser parser; - WCHAR *pos; + + if (argc > 3) + { + output_message(STRING_INVALID_SYNTAX); + output_message(STRING_FUNC_HELP, wcsupr(argvW[1])); + return 1; + } + + filename = argvW[2]; fp = _wfopen(filename, rb_mode); if (!fp) diff --git a/programs/reg/reg.c b/programs/reg/reg.c index 533a9378f92..daeec5f5718 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -389,15 +389,8 @@ int __cdecl wmain(int argc, WCHAR *argvW[]) return 0; } - if (op == REG_IMPORT && argc > 3) - { - output_message(STRING_INVALID_SYNTAX); - output_message(STRING_FUNC_HELP, wcsupr(argvW[1])); - return 1; - } - if (op == REG_IMPORT) - return reg_import(argvW[2]); + return reg_import(argc, argvW); if (op == REG_EXPORT) return reg_export(argc, argvW); diff --git a/programs/reg/reg.h b/programs/reg/reg.h index b29c2c21a1f..703dd0d37af 100644 --- a/programs/reg/reg.h +++ b/programs/reg/reg.h @@ -56,7 +56,7 @@ int reg_delete(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name, int reg_export(int argc, WCHAR *argv[]); /* import.c */ -int reg_import(const WCHAR *filename); +int reg_import(int argc, WCHAR *argvW[]); /* query.c */ int reg_query(HKEY root, WCHAR *path, WCHAR *key_name, WCHAR *value_name,
1
0
0
0
← Newer
1
...
51
52
53
54
55
56
57
...
117
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Results per page:
10
25
50
100
200