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
September 2019
----- 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
629 discussions
Start a n
N
ew thread
Nikolay Sivov : wined3d: Fail SRV creation for resources without corresponding bind flag.
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 76d3f0431af819d322dfe93dd3809eed6523dc6e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=76d3f0431af819d322dfe93d…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Thu Sep 26 10:02:35 2019 +0300 wined3d: Fail SRV creation for resources without corresponding bind flag. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d10_1/tests/d3d10_1.c | 3 --- dlls/d3d10core/tests/d3d10core.c | 3 --- dlls/d3d11/tests/d3d11.c | 3 --- dlls/wined3d/view.c | 2 ++ 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/dlls/d3d10_1/tests/d3d10_1.c b/dlls/d3d10_1/tests/d3d10_1.c index 9c468c13a2..51da614d9d 100644 --- a/dlls/d3d10_1/tests/d3d10_1.c +++ b/dlls/d3d10_1/tests/d3d10_1.c @@ -410,10 +410,7 @@ static void test_create_shader_resource_view(void) ok(SUCCEEDED(hr), "Failed to create a buffer, hr %#x\n", hr); hr = ID3D10Device1_CreateShaderResourceView1(device, (ID3D10Resource *)buffer, &srv_desc, &srview); -todo_wine ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); - if (SUCCEEDED(hr)) - ID3D10ShaderResourceView1_Release(srview); ID3D10Buffer_Release(buffer); diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c index cc6b39ccd1..d291c881e3 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -3582,10 +3582,7 @@ static void test_create_shader_resource_view(void) buffer = create_buffer(device, 0, 1024, NULL); hr = ID3D10Device_CreateShaderResourceView(device, (ID3D10Resource *)buffer, &srv_desc, &srview); -todo_wine ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); - if (SUCCEEDED(hr)) - ID3D10ShaderResourceView_Release(srview); ID3D10Buffer_Release(buffer); diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 97ab9b4487..d58319df58 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -4260,10 +4260,7 @@ static void test_create_shader_resource_view(void) buffer = create_buffer(device, 0, 1024, NULL); hr = ID3D11Device_CreateShaderResourceView(device, (ID3D11Resource *)buffer, &srv_desc, &srview); -todo_wine ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr); - if (SUCCEEDED(hr)) - ID3D11ShaderResourceView_Release(srview); ID3D11Buffer_Release(buffer); diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index f7bb18934f..f1c99a3b6a 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -767,6 +767,8 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_ view->parent = parent; view->parent_ops = parent_ops; + if (!(resource->bind_flags & WINED3D_BIND_SHADER_RESOURCE)) + return E_INVALIDARG; if (!(view->format = validate_resource_view(desc, resource, FALSE, FALSE))) return E_INVALIDARG; view->desc = *desc;
1
0
0
0
Zebediah Figura : d3d8: Handle stateblocks in d3d8_device_SetVertexShaderConstant().
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 79cf8dfcfd156003c8d03c485ca27ebfef86ea73 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=79cf8dfcfd156003c8d03c48…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:44 2019 -0500 d3d8: Handle stateblocks in d3d8_device_SetVertexShaderConstant(). 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/d3d8/device.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index aac6c9e2f6..be43314d3c 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -2910,7 +2910,9 @@ static HRESULT WINAPI d3d8_device_SetVertexShaderConstant(IDirect3DDevice8 *ifac } wined3d_mutex_lock(); - hr = wined3d_device_set_vs_consts_f(device->wined3d_device, start_register, count, data); + hr = wined3d_stateblock_set_vs_consts_f(device->update_state, start_register, count, data); + if (SUCCEEDED(hr) && !device->recording) + hr = wined3d_device_set_vs_consts_f(device->wined3d_device, start_register, count, data); wined3d_mutex_unlock(); return hr;
1
0
0
0
Zebediah Figura : d3d9: Handle stateblocks in d3d9_device_SetVertexShaderConstantF().
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 7033bca45c474d81d3e0e4cd4d7894e5cafd39cb URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7033bca45c474d81d3e0e4cd…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:43 2019 -0500 d3d9: Handle stateblocks in d3d9_device_SetVertexShaderConstantF(). 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/d3d9/device.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 3e3d5c7050..8436967ddd 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -3471,8 +3471,13 @@ static HRESULT WINAPI d3d9_device_SetVertexShaderConstantF(IDirect3DDevice9Ex *i } wined3d_mutex_lock(); - hr = wined3d_device_set_vs_consts_f(device->wined3d_device, - reg_idx, count, (const struct wined3d_vec4 *)data); + hr = wined3d_stateblock_set_vs_consts_f(device->update_state, reg_idx, + count, (const struct wined3d_vec4 *)data); + if (SUCCEEDED(hr) && !device->recording) + { + hr = wined3d_device_set_vs_consts_f(device->wined3d_device, + reg_idx, count, (const struct wined3d_vec4 *)data); + } wined3d_mutex_unlock(); return hr;
1
0
0
0
Zebediah Figura : wined3d: Introduce wined3d_stateblock_set_vs_consts_f().
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: c1eafc9931d0d8944e09f6b08cb6da905d05d0ec URL:
https://source.winehq.org/git/wine.git/?a=commit;h=c1eafc9931d0d8944e09f6b0…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:42 2019 -0500 wined3d: Introduce wined3d_stateblock_set_vs_consts_f(). 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/stateblock.c | 14 ++++++++++++++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 1a20e86d3f..97ef422f5a 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1274,6 +1274,20 @@ void CDECL wined3d_stateblock_apply(const struct wined3d_stateblock *stateblock) TRACE("Applied stateblock %p.\n", stateblock); } +HRESULT CDECL wined3d_stateblock_set_vs_consts_f(struct wined3d_stateblock *stateblock, + unsigned int start_idx, unsigned int count, const struct wined3d_vec4 *constants) +{ + TRACE("stateblock %p, start_idx %u, count %u, constants %p.\n", + stateblock, start_idx, count, constants); + + if (!constants || start_idx >= WINED3D_MAX_VS_CONSTS_F || count > WINED3D_MAX_VS_CONSTS_F - start_idx) + return WINED3DERR_INVALIDCALL; + + memcpy(&stateblock->stateblock_state.vs_consts_f[start_idx], constants, count * sizeof(*constants)); + memset(&stateblock->changed.vs_consts_f[start_idx], 1, count * sizeof(*stateblock->changed.vs_consts_f)); + return WINED3D_OK; +} + static void init_default_render_states(DWORD rs[WINEHIGHEST_RENDER_STATE + 1], const struct wined3d_d3d_info *d3d_info) { union diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 947bff7cb0..a0d9864018 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -258,6 +258,7 @@ @ cdecl wined3d_stateblock_create(ptr long ptr) @ cdecl wined3d_stateblock_decref(ptr) @ cdecl wined3d_stateblock_incref(ptr) +@ cdecl wined3d_stateblock_set_vs_consts_f(ptr long long ptr) @ cdecl wined3d_swapchain_create(ptr ptr ptr ptr ptr) @ cdecl wined3d_swapchain_decref(ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index dcf622ea4f..4543b882ac 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2660,6 +2660,8 @@ HRESULT __cdecl wined3d_stateblock_create(struct wined3d_device *device, enum wined3d_stateblock_type type, struct wined3d_stateblock **stateblock); ULONG __cdecl wined3d_stateblock_decref(struct wined3d_stateblock *stateblock); ULONG __cdecl wined3d_stateblock_incref(struct wined3d_stateblock *stateblock); +HRESULT __cdecl wined3d_stateblock_set_vs_consts_f(struct wined3d_stateblock *stateblock, + unsigned int start_idx, unsigned int count, const struct wined3d_vec4 *constants); HRESULT __cdecl wined3d_swapchain_create(struct wined3d_device *device, struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
1
0
0
0
Zebediah Figura : d3d8: Track the primary stateblock state locally.
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 3a61f3cf17286304dc98c8310da3cbda0adf2699 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3a61f3cf17286304dc98c831…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:41 2019 -0500 d3d8: Track the primary stateblock state locally. 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/d3d8/d3d8_private.h | 2 +- dlls/d3d8/device.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h index 0d4d4faf89..f262d12fc7 100644 --- a/dlls/d3d8/d3d8_private.h +++ b/dlls/d3d8/d3d8_private.h @@ -132,7 +132,7 @@ struct d3d8_device * no GetSwapchain, GetBackBuffer doesn't accept a swapchain number). */ struct wined3d_swapchain *implicit_swapchain; - struct wined3d_stateblock *recording; + struct wined3d_stateblock *recording, *state, *update_state; }; HRESULT device_init(struct d3d8_device *device, struct d3d8 *parent, struct wined3d *wined3d, UINT adapter, diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 741218c951..aac6c9e2f6 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -595,6 +595,7 @@ static ULONG WINAPI d3d8_device_Release(IDirect3DDevice8 *iface) if (device->recording) wined3d_stateblock_decref(device->recording); + wined3d_stateblock_decref(device->state); wined3d_swapchain_decref(device->implicit_swapchain); wined3d_device_release_focus_window(device->wined3d_device); @@ -914,6 +915,7 @@ static HRESULT WINAPI d3d8_device_Reset(IDirect3DDevice8 *iface, if (device->recording) wined3d_stateblock_decref(device->recording); device->recording = NULL; + device->update_state = device->state; present_parameters->BackBufferCount = swapchain_desc.backbuffer_count; implicit_swapchain = wined3d_swapchain_get_parent(device->implicit_swapchain); implicit_swapchain->swap_interval @@ -1871,7 +1873,7 @@ static HRESULT WINAPI d3d8_device_BeginStateBlock(IDirect3DDevice8 *iface) wined3d_mutex_lock(); if (SUCCEEDED(hr = wined3d_device_begin_stateblock(device->wined3d_device, &stateblock))) - device->recording = stateblock; + device->update_state = device->recording = stateblock; wined3d_mutex_unlock(); return hr; @@ -1898,6 +1900,7 @@ static HRESULT WINAPI d3d8_device_EndStateBlock(IDirect3DDevice8 *iface, DWORD * } stateblock = device->recording; device->recording = NULL; + device->update_state = device->state; *token = d3d8_allocate_handle(&device->handle_table, stateblock, D3D8_HANDLE_SB); wined3d_mutex_unlock(); @@ -3607,6 +3610,15 @@ HRESULT device_init(struct d3d8_device *device, struct d3d8 *parent, struct wine return hr; } + if (FAILED(hr = wined3d_stateblock_create(device->wined3d_device, WINED3D_SBT_PRIMARY, &device->state))) + { + ERR("Failed to create primary stateblock, hr %#x.\n", hr); + wined3d_device_decref(device->wined3d_device); + wined3d_mutex_unlock(); + return hr; + } + device->update_state = device->state; + if (!parameters->Windowed) { if (!focus_window)
1
0
0
0
Zebediah Figura : d3d9: Track the primary stateblock state locally.
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 40dad5a0ec34aad8dab759200c96a95d200bcd52 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=40dad5a0ec34aad8dab75920…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:40 2019 -0500 d3d9: Track the primary stateblock state locally. In preparation for moving the primary stateblock to the client D3D device. 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/d3d9/d3d9_private.h | 2 +- dlls/d3d9/device.c | 14 +++++++++++++- dlls/wined3d/stateblock.c | 5 +++-- include/wine/wined3d.h | 1 + 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h index 7c3d77c8a2..03e2aa7f8a 100644 --- a/dlls/d3d9/d3d9_private.h +++ b/dlls/d3d9/d3d9_private.h @@ -116,7 +116,7 @@ struct d3d9_device UINT implicit_swapchain_count; struct wined3d_swapchain **implicit_swapchains; - struct wined3d_stateblock *recording; + struct wined3d_stateblock *recording, *state, *update_state; }; HRESULT device_init(struct d3d9_device *device, struct d3d9 *parent, struct wined3d *wined3d, diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 953bf4c541..3e3d5c7050 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -605,6 +605,7 @@ static ULONG WINAPI DECLSPEC_HOTPATCH d3d9_device_Release(IDirect3DDevice9Ex *if if (device->recording) wined3d_stateblock_decref(device->recording); + wined3d_stateblock_decref(device->state); wined3d_device_release_focus_window(device->wined3d_device); wined3d_device_decref(device->wined3d_device); @@ -999,6 +1000,7 @@ static HRESULT d3d9_device_reset(struct d3d9_device *device, if (device->recording) wined3d_stateblock_decref(device->recording); device->recording = NULL; + device->update_state = device->state; device->auto_mipmaps = 0; wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ZENABLE, !!swapchain_desc.enable_auto_depth_stencil); @@ -2360,7 +2362,7 @@ static HRESULT WINAPI d3d9_device_BeginStateBlock(IDirect3DDevice9Ex *iface) wined3d_mutex_lock(); if (SUCCEEDED(hr = wined3d_device_begin_stateblock(device->wined3d_device, &stateblock))) - device->recording = stateblock; + device->update_state = device->recording = stateblock; wined3d_mutex_unlock(); return hr; @@ -2385,6 +2387,7 @@ static HRESULT WINAPI d3d9_device_EndStateBlock(IDirect3DDevice9Ex *iface, IDire } wined3d_stateblock = device->recording; device->recording = NULL; + device->update_state = device->state; wined3d_mutex_unlock(); if (!(object = heap_alloc_zero(sizeof(*object)))) @@ -4497,6 +4500,15 @@ HRESULT device_init(struct d3d9_device *device, struct d3d9 *parent, struct wine if (flags & D3DCREATE_ADAPTERGROUP_DEVICE) count = caps.NumberOfAdaptersInGroup; + if (FAILED(hr = wined3d_stateblock_create(device->wined3d_device, WINED3D_SBT_PRIMARY, &device->state))) + { + ERR("Failed to create the primary stateblock, hr %#x.\n", hr); + wined3d_device_decref(device->wined3d_device); + wined3d_mutex_unlock(); + return hr; + } + device->update_state = device->state; + if (flags & D3DCREATE_MULTITHREADED) wined3d_device_set_multithreaded(device->wined3d_device); diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 80e58114c1..1a20e86d3f 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -1573,11 +1573,12 @@ static HRESULT stateblock_init(struct wined3d_stateblock *stateblock, stateblock->ref = 1; stateblock->device = device; - wined3d_stateblock_state_init(&stateblock->stateblock_state, device, 0); + wined3d_stateblock_state_init(&stateblock->stateblock_state, device, + type == WINED3D_SBT_PRIMARY ? WINED3D_STATE_INIT_DEFAULT : 0); stateblock->changed.store_stream_offset = 1; - if (type == WINED3D_SBT_RECORDED) + if (type == WINED3D_SBT_RECORDED || type == WINED3D_SBT_PRIMARY) return WINED3D_OK; TRACE("Updating changed flags appropriate for type %#x.\n", type); diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index ee28ab1bb9..dcf622ea4f 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -774,6 +774,7 @@ enum wined3d_stateblock_type WINED3D_SBT_PIXEL_STATE = 2, WINED3D_SBT_VERTEX_STATE = 3, WINED3D_SBT_RECORDED = 4, /* WineD3D private */ + WINED3D_SBT_PRIMARY = 5, /* WineD3D private */ }; enum wined3d_decl_method
1
0
0
0
Zebediah Figura : wined3d: Return a wined3d_stateblock from wined3d_device_begin_stateblock().
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 7360e7d488b13f06b4c650ad66e9d2d0356fd875 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7360e7d488b13f06b4c650ad…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed Sep 25 23:05:39 2019 -0500 wined3d: Return a wined3d_stateblock from wined3d_device_begin_stateblock(). And hold it locally in d3d[789]. 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/d3d8/d3d8_private.h | 5 +++-- dlls/d3d8/device.c | 17 ++++++++++++----- dlls/d3d9/d3d9_private.h | 5 +++-- dlls/d3d9/device.c | 24 ++++++++++++++++-------- dlls/ddraw/ddraw_private.h | 2 +- dlls/ddraw/device.c | 13 +++++++++---- dlls/ddraw/surface.c | 7 +++++++ dlls/wined3d/device.c | 32 ++++++++++++++++++-------------- dlls/wined3d/wined3d.spec | 4 ++-- include/wine/wined3d.h | 4 ++-- 10 files changed, 73 insertions(+), 40 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=7360e7d488b13f06b4c6…
1
0
0
0
Alexandre Julliard : oleaut32: Implement DispCallFunc() for ARM64.
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 71ab74a11fc847850eed5c898b916cf3736ffa10 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=71ab74a11fc847850eed5c89…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Sep 26 19:25:33 2019 +0200 oleaut32: Implement DispCallFunc() for ARM64. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/oleaut32/typelib.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 1 deletion(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 374eb5a38b..d40c0efb0f 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -6809,7 +6809,165 @@ HRESULT WINAPI DispCallFunc( void* pvInstance, ULONG_PTR oVft, CALLCONV cc, VART return S_OK; } -#else /* __arm__ */ +#elif defined(__aarch64__) + +extern DWORD_PTR CDECL call_method( void *func, int nb_stk_args, const DWORD_PTR *stk_args, const DWORD_PTR *reg_args ); +extern float CDECL call_float_method( void *func, int nb_stk_args, const DWORD_PTR *stk_args, const DWORD_PTR *reg_args ); +extern double CDECL call_double_method( void *func, int nb_stk_args, const DWORD_PTR *stk_args, const DWORD_PTR *reg_args ); +__ASM_GLOBAL_FUNC( call_method, + "stp x29, x30, [sp, #-16]!\n\t" + "mov x29, sp\n\t" + "sub sp, sp, x1, lsl #3\n\t" + "cbz x1, 2f\n" + "1:\tsub x1, x1, #1\n\t" + "ldr x4, [x2, x1, lsl #3]\n\t" + "str x4, [sp, x1, lsl #3]\n\t" + "cbnz x1, 1b\n" + "2:\tmov x8, x0\n\t" + "mov x9, x3\n\t" + "ldp d0, d1, [x9]\n\t" + "ldp d2, d3, [x9, #0x10]\n\t" + "ldp d4, d5, [x9, #0x20]\n\t" + "ldp d6, d7, [x9, #0x30]\n\t" + "ldp x0, x1, [x9, #0x40]\n\t" + "ldp x2, x3, [x9, #0x50]\n\t" + "ldp x4, x5, [x9, #0x60]\n\t" + "ldp x6, x7, [x9, #0x70]\n\t" + "blr x8\n\t" + "mov sp, x29\n\t" + "ldp x29, x30, [sp], #16\n\t" + "ret" ) +__ASM_GLOBAL_FUNC( call_float_method, + "b " __ASM_NAME("call_method") ) +__ASM_GLOBAL_FUNC( call_double_method, + "b " __ASM_NAME("call_method") ) + +HRESULT WINAPI DispCallFunc( void *instance, ULONG_PTR offset, CALLCONV cc, VARTYPE ret_type, UINT count, + VARTYPE *types, VARIANTARG **vargs, VARIANT *result ) +{ + int argspos; + void *func; + UINT i; + DWORD_PTR *args; + struct + { + union + { + float f; + double d; + } fp[8]; + DWORD_PTR x[8]; + } regs; + int rcount; /* 64-bit register index count */ + int fpcount = 0; /* float register index count */ + + TRACE("(%p, %ld, %d, %d, %d, %p, %p, %p (vt=%d))\n", + instance, offset, cc, ret_type, count, types, vargs, result, V_VT(result)); + + if (cc != CC_STDCALL && cc != CC_CDECL) + { + FIXME("unsupported calling convention %d\n",cc); + return E_INVALIDARG; + } + + argspos = 0; + rcount = 0; + + if (instance) + { + const FARPROC *vtable = *(FARPROC **)instance; + func = vtable[offset/sizeof(void *)]; + regs.x[rcount++] = (DWORD_PTR)instance; /* the This pointer is always the first parameter */ + } + else func = (void *)offset; + + /* Determine if we need to pass a pointer for the return value as arg 0. If so, do that */ + /* first as it will need to be in the 'x' registers: */ + switch (ret_type) + { + case VT_DECIMAL: + case VT_VARIANT: + regs.x[rcount++] = (DWORD_PTR)result; /* arg 0 is a pointer to the result */ + break; + case VT_HRESULT: + WARN("invalid return type %u\n", ret_type); + return E_INVALIDARG; + default: + break; + } + + /* maximum size for an argument is sizeof(VARIANT). Also allow for return pointer and stack alignment. */ + args = heap_alloc( sizeof(VARIANT) * count + sizeof(DWORD_PTR) * 4 ); + + for (i = 0; i < count; i++) + { + VARIANT *arg = vargs[i]; + + switch (types[i]) + { + case VT_EMPTY: + break; + case VT_R4: + if (fpcount < 8) regs.fp[fpcount++].f = V_R4(arg); + else *(float *)&args[argspos++] = V_R4(arg); + break; + case VT_R8: + case VT_DATE: + if (fpcount < 8) regs.fp[fpcount++].d = V_R8(arg); + else *(double *)&args[argspos++] = V_R8(arg); + break; + case VT_DECIMAL: + case VT_VARIANT: + if (rcount < 7) + { + memcpy( ®s.x[rcount], arg, sizeof(*arg) ); + rcount += 2; + } + else + { + memcpy( &args[argspos], arg, sizeof(*arg) ); + argspos += 2; + } + break; + case VT_BOOL: /* VT_BOOL is 16-bit but BOOL is 32-bit, needs to be extended */ + if (rcount < 8) regs.x[rcount++] = V_BOOL(arg); + else args[argspos++] = V_BOOL(arg); + break; + default: + if (rcount < 8) regs.x[rcount++] = V_UI8(arg); + else args[argspos++] = V_UI8(arg); + break; + } + TRACE("arg %u: type %s %s\n", i, debugstr_vt(types[i]), debugstr_variant(arg)); + } + + argspos += (argspos % 2); /* Make sure stack function alignment is 16-byte */ + + switch (ret_type) + { + case VT_EMPTY: /* EMPTY = no return value */ + case VT_DECIMAL: /* DECIMAL and VARIANT already have a pointer argument passed (see above) */ + case VT_VARIANT: + call_method( func, argspos, args, (DWORD_PTR *)®s ); + break; + case VT_R4: + V_R4(result) = call_float_method( func, argspos, args, (DWORD_PTR *)®s ); + break; + case VT_R8: + case VT_DATE: + V_R8(result) = call_double_method( func, argspos, args, (DWORD_PTR *)®s ); + break; + default: + V_UI8(result) = call_method( func, argspos, args, (DWORD_PTR *)®s ); + break; + } + heap_free( args ); + if (ret_type != VT_VARIANT) V_VT(result) = ret_type; + TRACE("retval: %s\n", debugstr_variant(result)); + return S_OK; +} + +#else /* __aarch64__ */ HRESULT WINAPI DispCallFunc( void* pvInstance, ULONG_PTR oVft, CALLCONV cc, VARTYPE vtReturn, UINT cActuals, VARTYPE* prgvt, VARIANTARG** prgpvarg, VARIANT* pvargResult )
1
0
0
0
Alexandre Julliard : oleaut32: Split DispCallFunc() into platform-specific functions.
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 25d0c6623849794b64e2e279dc1c39c46c188469 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=25d0c6623849794b64e2e279…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Sep 26 19:19:58 2019 +0200 oleaut32: Split DispCallFunc() into platform-specific functions. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/oleaut32/typelib.c | 619 +++++++++++++++++++++++------------------------- 1 file changed, 294 insertions(+), 325 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=25d0c6623849794b64e2…
1
0
0
0
Alex Henrie : ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState).
by Alexandre Julliard
26 Sep '19
26 Sep '19
Module: wine Branch: master Commit: 34e15e5a1d8d7101423a35d27aa1de68e5570aa4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=34e15e5a1d8d7101423a35d2…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Wed Sep 25 00:45:56 2019 -0600 ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState). Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/tests/info.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c index 25c379929b..93920714f2 100644 --- a/dlls/ntdll/tests/info.c +++ b/dlls/ntdll/tests/info.c @@ -888,6 +888,48 @@ static void test_query_firmware(void) HeapFree(GetProcessHeap(), 0, sfti); } +static void test_query_battery(void) +{ + SYSTEM_BATTERY_STATE bs; + NTSTATUS status; + DWORD time_left; + + memset(&bs, 0x23, sizeof(bs)); + status = NtPowerInformation(SystemBatteryState, NULL, 0, &bs, sizeof(bs)); + if (status == STATUS_NOT_IMPLEMENTED) + { + skip("SystemBatteryState not implemented\n"); + return; + } + ok(status == STATUS_SUCCESS, "expected success\n"); + + trace("Battery state:\n"); + trace("AcOnLine : %u\n", bs.AcOnLine); + trace("BatteryPresent : %u\n", bs.BatteryPresent); + trace("Charging : %u\n", bs.Charging); + trace("Discharging : %u\n", bs.Discharging); + trace("Tag : %u\n", bs.Tag); + trace("MaxCapacity : %u\n", bs.MaxCapacity); + trace("RemainingCapacity : %u\n", bs.RemainingCapacity); + trace("Rate : %d\n", (LONG)bs.Rate); + trace("EstimatedTime : %u\n", bs.EstimatedTime); + trace("DefaultAlert1 : %u\n", bs.DefaultAlert1); + trace("DefaultAlert2 : %u\n", bs.DefaultAlert2); + + ok(bs.MaxCapacity >= bs.RemainingCapacity, + "expected MaxCapacity %u to be greater than or equal to RemainingCapacity %u\n", + bs.MaxCapacity, bs.RemainingCapacity); + + if (!bs.BatteryPresent) + time_left = 0; + else if (!bs.Charging && (LONG)bs.Rate < 0) + time_left = 3600 * bs.RemainingCapacity / -(LONG)bs.Rate; + else + time_left = ~0u; + ok(bs.EstimatedTime == time_left, + "expected %u minutes remaining got %u minutes\n", time_left, bs.EstimatedTime); +} + static void test_query_processor_power_info(void) { NTSTATUS status; @@ -2374,6 +2416,10 @@ START_TEST(info) /* NtPowerInformation */ + /* 0x5 SystemBatteryState */ + trace("Starting test_query_battery()\n"); + test_query_battery(); + /* 0xb ProcessorInformation */ trace("Starting test_query_processor_power_info()\n"); test_query_processor_power_info();
1
0
0
0
← Newer
1
...
8
9
10
11
12
13
14
...
63
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
Results per page:
10
25
50
100
200