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
February 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
915 discussions
Start a n
N
ew thread
Henri Verbeet : d3d10core/tests: Add a test for layered clears.
by Alexandre Julliard
25 Feb '21
25 Feb '21
Module: wine Branch: master Commit: 54b2bb52eab16f3d843f1eed50bc706f2e6a24a0 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=54b2bb52eab16f3d843f1eed…
Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Feb 24 22:57:02 2021 +0100 d3d10core/tests: Add a test for layered clears. Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/d3d10core/tests/d3d10core.c | 90 +++++++++++++++++++++++++++++++++------- 1 file changed, 75 insertions(+), 15 deletions(-) diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c index f21431b2243..e8915aea8e7 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -11104,17 +11104,19 @@ static void test_clear_render_target_view_1d(void) static void test_clear_render_target_view_2d(void) { static const DWORD expected_color = 0xbf4c7f19, expected_srgb_color = 0xbf95bc59; - static const float color[] = {0.1f, 0.5f, 0.3f, 0.75f}; + static const float clear_colour[] = {0.1f, 0.5f, 0.3f, 0.75f}; static const float green[] = {0.0f, 1.0f, 0.0f, 0.5f}; + static const float blue[] = {0.0f, 0.0f, 1.0f, 0.5f}; + ID3D10RenderTargetView *rtv[3], *srgb_rtv; struct d3d10core_test_context test_context; ID3D10Texture2D *texture, *srgb_texture; - ID3D10RenderTargetView *rtv, *srgb_rtv; D3D10_RENDER_TARGET_VIEW_DESC rtv_desc; D3D10_TEXTURE2D_DESC texture_desc; struct resource_readback rb; ID3D10Device *device; unsigned int i, j; + DWORD colour; HRESULT hr; if (!init_test_context(&test_context)) @@ -11140,16 +11142,16 @@ static void test_clear_render_target_view_2d(void) hr = ID3D10Device_CreateTexture2D(device, &texture_desc, NULL, &srgb_texture); ok(SUCCEEDED(hr), "Failed to create texture, hr %#x.\n", hr); - hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, NULL, &rtv); + hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, NULL, &rtv[0]); ok(SUCCEEDED(hr), "Failed to create render target view, hr %#x.\n", hr); hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)srgb_texture, NULL, &srgb_rtv); ok(SUCCEEDED(hr), "Failed to create render target view, hr %#x.\n", hr); - ID3D10Device_ClearRenderTargetView(device, test_context.backbuffer_rtv, color); + ID3D10Device_ClearRenderTargetView(device, test_context.backbuffer_rtv, clear_colour); check_texture_color(test_context.backbuffer, expected_color, 1); - ID3D10Device_ClearRenderTargetView(device, rtv, color); + ID3D10Device_ClearRenderTargetView(device, rtv[0], clear_colour); check_texture_color(texture, expected_color, 1); if (is_d3d11_interface_available(device) && !enable_debug_layer) @@ -11158,11 +11160,11 @@ static void test_clear_render_target_view_2d(void) check_texture_color(texture, expected_color, 1); } - ID3D10Device_ClearRenderTargetView(device, srgb_rtv, color); + ID3D10Device_ClearRenderTargetView(device, srgb_rtv, clear_colour); check_texture_color(srgb_texture, expected_srgb_color, 1); ID3D10RenderTargetView_Release(srgb_rtv); - ID3D10RenderTargetView_Release(rtv); + ID3D10RenderTargetView_Release(rtv[0]); ID3D10Texture2D_Release(srgb_texture); ID3D10Texture2D_Release(texture); @@ -11179,30 +11181,88 @@ static void test_clear_render_target_view_2d(void) rtv_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; rtv_desc.ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2D; U(rtv_desc).Texture2D.MipSlice = 0; - hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, &rtv_desc, &rtv); + hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, &rtv_desc, &rtv[0]); ok(SUCCEEDED(hr), "Failed to create render target view, hr %#x.\n", hr); - ID3D10Device_ClearRenderTargetView(device, rtv, color); + ID3D10Device_ClearRenderTargetView(device, rtv[0], clear_colour); check_texture_color(texture, expected_color, 1); - ID3D10Device_ClearRenderTargetView(device, srgb_rtv, color); + ID3D10Device_ClearRenderTargetView(device, srgb_rtv, clear_colour); get_texture_readback(texture, 0, &rb); for (i = 0; i < 4; ++i) { for (j = 0; j < 4; ++j) { BOOL broken_device = is_warp_device(device) || is_nvidia_device(device); - DWORD color = get_readback_color(&rb, 80 + i * 160, 60 + j * 120); - ok(compare_color(color, expected_srgb_color, 1) - || broken(compare_color(color, expected_color, 1) && broken_device), - "Got unexpected color 0x%08x.\n", color); + colour = get_readback_color(&rb, 80 + i * 160, 60 + j * 120); + ok(compare_color(colour, expected_srgb_color, 1) + || broken(compare_color(colour, expected_color, 1) && broken_device), + "Got unexpected colour 0x%08x.\n", colour); } } release_resource_readback(&rb); ID3D10RenderTargetView_Release(srgb_rtv); - ID3D10RenderTargetView_Release(rtv); + ID3D10RenderTargetView_Release(rtv[0]); ID3D10Texture2D_Release(texture); + + texture_desc.Width = 16; + texture_desc.Height = 16; + texture_desc.ArraySize = 5; + hr = ID3D10Device_CreateTexture2D(device, &texture_desc, NULL, &texture); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + + rtv_desc.ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2DARRAY; + U(rtv_desc).Texture2DArray.MipSlice = 0; + U(rtv_desc).Texture2DArray.FirstArraySlice = 0; + U(rtv_desc).Texture2DArray.ArraySize = 5; + hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, &rtv_desc, &rtv[0]); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + + U(rtv_desc).Texture2DArray.FirstArraySlice = 1; + U(rtv_desc).Texture2DArray.ArraySize = 3; + hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, &rtv_desc, &rtv[1]); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + + U(rtv_desc).Texture2DArray.FirstArraySlice = 2; + U(rtv_desc).Texture2DArray.ArraySize = 1; + hr = ID3D10Device_CreateRenderTargetView(device, (ID3D10Resource *)texture, &rtv_desc, &rtv[2]); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + + ID3D10Device_ClearRenderTargetView(device, rtv[0], blue); + ID3D10Device_ClearRenderTargetView(device, rtv[1], green); + ID3D10Device_ClearRenderTargetView(device, rtv[2], clear_colour); + + get_texture_readback(texture, 0, &rb); + colour = get_readback_color(&rb, 8, 8); + todo_wine ok(compare_color(colour, 0x80ff0000, 1), "Got unexpected colour 0x%08x.\n", colour); + release_resource_readback(&rb); + + get_texture_readback(texture, 1, &rb); + colour = get_readback_color(&rb, 8, 8); + todo_wine ok(compare_color(colour, 0x8000ff00, 1), "Got unexpected colour 0x%08x.\n", colour); + release_resource_readback(&rb); + + get_texture_readback(texture, 2, &rb); + colour = get_readback_color(&rb, 8, 8); + ok(compare_color(colour, 0xbf4c7f19, 1), "Got unexpected colour 0x%08x.\n", colour); + release_resource_readback(&rb); + + get_texture_readback(texture, 3, &rb); + colour = get_readback_color(&rb, 8, 8); + todo_wine ok(compare_color(colour, 0x8000ff00, 1), "Got unexpected colour 0x%08x.\n", colour); + release_resource_readback(&rb); + + get_texture_readback(texture, 4, &rb); + colour = get_readback_color(&rb, 8, 8); + todo_wine ok(compare_color(colour, 0x80ff0000, 1), "Got unexpected colour 0x%08x.\n", colour); + release_resource_readback(&rb); + + ID3D10RenderTargetView_Release(rtv[2]); + ID3D10RenderTargetView_Release(rtv[1]); + ID3D10RenderTargetView_Release(rtv[0]); + ID3D10Texture2D_Release(texture); + release_test_context(&test_context); }
1
0
0
0
Zebediah Figura : winegstreamer: Rename gst_base_src_perform_seek() to src_perform_seek().
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 1649389edca12d2998f72a159b2bbbf247176163 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=1649389edca12d2998f72a15…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 23 16:07:03 2021 -0600 winegstreamer: Rename gst_base_src_perform_seek() to src_perform_seek(). Avoid polluting the GStreamer namespace. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/wg_parser.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index a2eaf1958d6..f76ca903b80 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -1387,7 +1387,7 @@ static GstBusSyncReply bus_handler_cb(GstBus *bus, GstMessage *msg, gpointer use return GST_BUS_DROP; } -static gboolean gst_base_src_perform_seek(struct wg_parser *parser, GstEvent *event) +static gboolean src_perform_seek(struct wg_parser *parser, GstEvent *event) { BOOL thread = !!parser->push_thread; GstSeekType cur_type, stop_type; @@ -1444,7 +1444,7 @@ static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) switch (event->type) { case GST_EVENT_SEEK: - ret = gst_base_src_perform_seek(parser, event); + ret = src_perform_seek(parser, event); break; case GST_EVENT_FLUSH_START:
1
0
0
0
Zebediah Figura : winegstreamer: Don't make the pad caps writable in pad_added_cb().
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 2492bda6e1f82a170db60f25080444f36ab239dd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2492bda6e1f82a170db60f25…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 23 16:07:02 2021 -0600 winegstreamer: Don't make the pad caps writable in pad_added_cb(). There is no need. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/wg_parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 341ca182749..a2eaf1958d6 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -1000,7 +1000,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) if (gst_pad_is_linked(pad)) return; - caps = gst_caps_make_writable(gst_pad_query_caps(pad, NULL)); + caps = gst_pad_query_caps(pad, NULL); name = gst_structure_get_name(gst_caps_get_structure(caps, 0)); if (!(stream = create_stream(parser)))
1
0
0
0
Zebediah Figura : winegstreamer: Inline init_new_decoded_pad() into pad_added_cb().
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: e4922b930b10c4006a81201481ffca6c448c05b7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e4922b930b10c4006a812014…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 23 16:07:01 2021 -0600 winegstreamer: Inline init_new_decoded_pad() into pad_added_cb(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/wg_parser.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 95e8611fb57..341ca182749 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -987,13 +987,19 @@ static struct wg_parser_stream *create_stream(struct wg_parser *parser) return stream; } -static void init_new_decoded_pad(GstElement *element, GstPad *pad, struct wg_parser *parser) +static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) { + struct wg_parser *parser = user; struct wg_parser_stream *stream; const char *name; GstCaps *caps; int ret; + GST_LOG("parser %p, element %p, pad %p.", parser, element, pad); + + if (gst_pad_is_linked(pad)) + return; + caps = gst_caps_make_writable(gst_pad_query_caps(pad, NULL)); name = gst_structure_get_name(gst_caps_get_structure(caps, 0)); @@ -1115,18 +1121,6 @@ out: gst_caps_unref(caps); } -static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) -{ - struct wg_parser *parser = user; - - GST_LOG("parser %p, element %p, pad %p.", parser, element, pad); - - if (gst_pad_is_linked(pad)) - return; - - init_new_decoded_pad(element, pad, parser); -} - static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user) { struct wg_parser *parser = user;
1
0
0
0
Zebediah Figura : winegstreamer: Rename some callbacks to explicitly show they are callbacks.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 2741b6ca33262ba61d7a2d39f3325bf048f4abe9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2741b6ca33262ba61d7a2d39…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 23 16:07:00 2021 -0600 winegstreamer: Rename some callbacks to explicitly show they are callbacks. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/wg_parser.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 63ba95a78cb..95e8611fb57 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -719,7 +719,7 @@ static GstAutoplugSelectResult autoplug_select_cb(GstElement *bin, GstPad *pad, return GST_AUTOPLUG_SELECT_TRY; } -static void no_more_pads(GstElement *element, gpointer user) +static void no_more_pads_cb(GstElement *element, gpointer user) { struct wg_parser *parser = user; @@ -769,7 +769,7 @@ static GstFlowReturn queue_stream_event(struct wg_parser_stream *stream, return GST_FLOW_OK; } -static gboolean event_sink(GstPad *pad, GstObject *parent, GstEvent *event) +static gboolean sink_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) { struct wg_parser_stream *stream = gst_pad_get_element_private(pad); struct wg_parser *parser = stream->parser; @@ -897,7 +897,7 @@ static GstFlowReturn sink_chain_cb(GstPad *pad, GstObject *parent, GstBuffer *bu return ret; } -static gboolean query_sink(GstPad *pad, GstObject *parent, GstQuery *query) +static gboolean sink_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) { struct wg_parser_stream *stream = gst_pad_get_element_private(pad); @@ -980,8 +980,8 @@ static struct wg_parser_stream *create_stream(struct wg_parser *parser) stream->my_sink = gst_pad_new(pad_name, GST_PAD_SINK); gst_pad_set_element_private(stream->my_sink, stream); gst_pad_set_chain_function(stream->my_sink, sink_chain_cb); - gst_pad_set_event_function(stream->my_sink, event_sink); - gst_pad_set_query_function(stream->my_sink, query_sink); + gst_pad_set_event_function(stream->my_sink, sink_event_cb); + gst_pad_set_query_function(stream->my_sink, sink_query_cb); parser->streams[parser->stream_count++] = stream; return stream; @@ -1209,7 +1209,7 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, return ret ? GST_FLOW_OK : GST_FLOW_ERROR; } -static gboolean query_function(GstPad *pad, GstObject *parent, GstQuery *query) +static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) { struct wg_parser *parser = gst_pad_get_element_private(pad); GstFormat format; @@ -1330,7 +1330,7 @@ static gboolean activate_push(GstPad *pad, gboolean activate) return TRUE; } -static gboolean activate_mode(GstPad *pad, GstObject *parent, GstPadMode mode, gboolean activate) +static gboolean src_activate_mode_cb(GstPad *pad, GstObject *parent, GstPadMode mode, gboolean activate) { struct wg_parser *parser = gst_pad_get_element_private(pad); @@ -1440,7 +1440,7 @@ static gboolean gst_base_src_perform_seek(struct wg_parser *parser, GstEvent *ev return TRUE; } -static gboolean event_src(GstPad *pad, GstObject *parent, GstEvent *event) +static gboolean src_event_cb(GstPad *pad, GstObject *parent, GstEvent *event) { struct wg_parser *parser = gst_pad_get_element_private(pad); gboolean ret = TRUE; @@ -1508,9 +1508,9 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s parser->my_src = gst_pad_new_from_static_template(&src_template, "quartz-src"); gst_pad_set_getrange_function(parser->my_src, src_getrange_cb); - gst_pad_set_query_function(parser->my_src, query_function); - gst_pad_set_activatemode_function(parser->my_src, activate_mode); - gst_pad_set_event_function(parser->my_src, event_src); + gst_pad_set_query_function(parser->my_src, src_query_cb); + gst_pad_set_activatemode_function(parser->my_src, src_activate_mode_cb); + gst_pad_set_event_function(parser->my_src, src_event_cb); gst_pad_set_element_private(parser->my_src, parser); parser->start_offset = parser->next_offset = parser->stop_offset = 0; @@ -1619,7 +1619,7 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser) g_signal_connect(element, "pad-added", G_CALLBACK(pad_added_cb), parser); g_signal_connect(element, "pad-removed", G_CALLBACK(pad_removed_cb), parser); g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_select_cb), parser); - g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), parser); + g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads_cb), parser); parser->their_sink = gst_element_get_static_pad(element, "sink"); @@ -1670,7 +1670,7 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser) g_signal_connect(element, "pad-added", G_CALLBACK(pad_added_cb), parser); g_signal_connect(element, "pad-removed", G_CALLBACK(pad_removed_cb), parser); - g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), parser); + g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads_cb), parser); parser->their_sink = gst_element_get_static_pad(element, "sink");
1
0
0
0
Zebediah Figura : winegstreamer: Rename some callbacks to more closely match GStreamer terminology.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 39c97f4c2957868ba9de382df4fd03ff14a2c62e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=39c97f4c2957868ba9de382d…
Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 23 16:06:59 2021 -0600 winegstreamer: Rename some callbacks to more closely match GStreamer terminology. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/wg_parser.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 94f677538c7..63ba95a78cb 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -699,7 +699,8 @@ static void CDECL wg_parser_stream_notify_qos(struct wg_parser_stream *stream, gst_pad_push_event(stream->my_sink, event); } -static GstAutoplugSelectResult autoplug_blacklist(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *fact, gpointer user) +static GstAutoplugSelectResult autoplug_select_cb(GstElement *bin, GstPad *pad, + GstCaps *caps, GstElementFactory *fact, gpointer user) { const char *name = gst_element_factory_get_longname(fact); @@ -865,7 +866,7 @@ static gboolean event_sink(GstPad *pad, GstObject *parent, GstEvent *event) return TRUE; } -static GstFlowReturn got_data_sink(GstPad *pad, GstObject *parent, GstBuffer *buffer) +static GstFlowReturn sink_chain_cb(GstPad *pad, GstObject *parent, GstBuffer *buffer) { struct wg_parser_stream *stream = gst_pad_get_element_private(pad); struct wg_parser_event stream_event; @@ -978,7 +979,7 @@ static struct wg_parser_stream *create_stream(struct wg_parser *parser) sprintf(pad_name, "qz_sink_%u", parser->stream_count); stream->my_sink = gst_pad_new(pad_name, GST_PAD_SINK); gst_pad_set_element_private(stream->my_sink, stream); - gst_pad_set_chain_function(stream->my_sink, got_data_sink); + gst_pad_set_chain_function(stream->my_sink, sink_chain_cb); gst_pad_set_event_function(stream->my_sink, event_sink); gst_pad_set_query_function(stream->my_sink, query_sink); @@ -1114,7 +1115,7 @@ out: gst_caps_unref(caps); } -static void existing_new_pad(GstElement *element, GstPad *pad, gpointer user) +static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) { struct wg_parser *parser = user; @@ -1126,7 +1127,7 @@ static void existing_new_pad(GstElement *element, GstPad *pad, gpointer user) init_new_decoded_pad(element, pad, parser); } -static void removed_decoded_pad(GstElement *element, GstPad *pad, gpointer user) +static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user) { struct wg_parser *parser = user; unsigned int i; @@ -1155,7 +1156,8 @@ static void removed_decoded_pad(GstElement *element, GstPad *pad, gpointer user) g_free(name); } -static GstFlowReturn request_buffer_src(GstPad *pad, GstObject *parent, guint64 offset, guint size, GstBuffer **buffer) +static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, + guint64 offset, guint size, GstBuffer **buffer) { struct wg_parser *parser = gst_pad_get_element_private(pad); GstBuffer *new_buffer = NULL; @@ -1277,7 +1279,7 @@ static void *push_data(void *arg) break; size = min(16384, max_size - parser->next_offset); - if ((ret = request_buffer_src(parser->my_src, NULL, parser->next_offset, size, &buffer)) < 0) + if ((ret = src_getrange_cb(parser->my_src, NULL, parser->next_offset, size, &buffer)) < 0) { GST_ERROR("Failed to read data, ret %s.", gst_flow_get_name(ret)); break; @@ -1347,7 +1349,7 @@ static gboolean activate_mode(GstPad *pad, GstObject *parent, GstPadMode mode, g return FALSE; } -static GstBusSyncReply watch_bus(GstBus *bus, GstMessage *msg, gpointer user) +static GstBusSyncReply bus_handler_cb(GstBus *bus, GstMessage *msg, gpointer user) { struct wg_parser *parser = user; gchar *dbg_info = NULL; @@ -1498,14 +1500,14 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s if (!parser->bus) { parser->bus = gst_bus_new(); - gst_bus_set_sync_handler(parser->bus, watch_bus, parser, NULL); + gst_bus_set_sync_handler(parser->bus, bus_handler_cb, parser, NULL); } parser->container = gst_bin_new(NULL); gst_element_set_bus(parser->container, parser->bus); parser->my_src = gst_pad_new_from_static_template(&src_template, "quartz-src"); - gst_pad_set_getrange_function(parser->my_src, request_buffer_src); + gst_pad_set_getrange_function(parser->my_src, src_getrange_cb); gst_pad_set_query_function(parser->my_src, query_function); gst_pad_set_activatemode_function(parser->my_src, activate_mode); gst_pad_set_event_function(parser->my_src, event_src); @@ -1614,9 +1616,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser) gst_bin_add(GST_BIN(parser->container), element); parser->decodebin = element; - g_signal_connect(element, "pad-added", G_CALLBACK(existing_new_pad), parser); - g_signal_connect(element, "pad-removed", G_CALLBACK(removed_decoded_pad), parser); - g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_blacklist), parser); + g_signal_connect(element, "pad-added", G_CALLBACK(pad_added_cb), parser); + g_signal_connect(element, "pad-removed", G_CALLBACK(pad_removed_cb), parser); + g_signal_connect(element, "autoplug-select", G_CALLBACK(autoplug_select_cb), parser); g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), parser); parser->their_sink = gst_element_get_static_pad(element, "sink"); @@ -1666,8 +1668,8 @@ static BOOL avi_parser_init_gst(struct wg_parser *parser) gst_bin_add(GST_BIN(parser->container), element); - g_signal_connect(element, "pad-added", G_CALLBACK(existing_new_pad), parser); - g_signal_connect(element, "pad-removed", G_CALLBACK(removed_decoded_pad), parser); + g_signal_connect(element, "pad-added", G_CALLBACK(pad_added_cb), parser); + g_signal_connect(element, "pad-removed", G_CALLBACK(pad_removed_cb), parser); g_signal_connect(element, "no-more-pads", G_CALLBACK(no_more_pads), parser); parser->their_sink = gst_element_get_static_pad(element, "sink");
1
0
0
0
Alistair Leslie-Hughes : include: Add more SQL_ defines.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: aac82c622e296fff99ee5b54e8e3462054d75fd0 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=aac82c622e296fff99ee5b54…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Wed Feb 24 20:30:11 2021 +1100 include: Add more SQL_ defines. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/sqltypes.h | 3 --- include/sqlucode.h | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/sqltypes.h b/include/sqltypes.h index 4c45de7e989..70315c271c4 100644 --- a/include/sqltypes.h +++ b/include/sqltypes.h @@ -241,9 +241,6 @@ typedef struct tagSQLGUID typedef SQLULEN BOOKMARK; -#define SQL_WCHAR (-8) -#define SQL_C_WCHAR SQL_WCHAR - #ifdef __cplusplus } #endif diff --git a/include/sqlucode.h b/include/sqlucode.h index c87348cd8b5..7e1fb677cce 100644 --- a/include/sqlucode.h +++ b/include/sqlucode.h @@ -27,6 +27,11 @@ extern "C" { #endif +#define SQL_WCHAR (-8) +#define SQL_C_WCHAR SQL_WCHAR +#define SQL_WVARCHAR (-9) +#define SQL_WLONGVARCHAR (-10) + SQLRETURN WINAPI SQLConnectW(SQLHDBC ConnectionHandle, SQLWCHAR *ServerName, SQLSMALLINT NameLength1, SQLWCHAR *UserName, SQLSMALLINT NameLength2,
1
0
0
0
Jacek Caban : ntdll: Fix compacted legacy xsave area handling.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: aae2e2adf0ab171fb11d1c559e278734e5736783 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=aae2e2adf0ab171fb11d1c55…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Feb 24 18:27:41 2021 +0100 ntdll: Fix compacted legacy xsave area handling. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/signal_x86_64.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 509ff6d460f..22a5d34e06c 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -1848,6 +1848,7 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context ) if (flags & CONTEXT_FLOATING_POINT) { xsave->xsave = context->u.FltSave; + xsave->xstate.Mask |= XSTATE_MASK_LEGACY; } if (user_shared_data->XState.EnabledFeatures && (xs = xstate_from_context( context ))) { @@ -1941,8 +1942,39 @@ NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context ) } if (needed_flags & CONTEXT_FLOATING_POINT) { - context->u.FltSave = get_syscall_xsave(frame)->xsave; - context->MxCsr = context->u.FltSave.MxCsr; + struct syscall_xsave *xsave = get_syscall_xsave( frame ); + + if (!xstate_compaction_enabled || + (xsave->xstate.Mask & XSTATE_MASK_LEGACY_FLOATING_POINT)) + { + memcpy( &context->u.FltSave, &xsave->xsave, FIELD_OFFSET( XSAVE_FORMAT, MxCsr )); + memcpy( context->u.FltSave.FloatRegisters, xsave->xsave.FloatRegisters, + sizeof( context->u.FltSave.FloatRegisters )); + } + else + { + memset( &context->u.FltSave, 0, FIELD_OFFSET( XSAVE_FORMAT, MxCsr )); + memset( context->u.FltSave.FloatRegisters, 0, + sizeof( context->u.FltSave.FloatRegisters )); + context->u.FltSave.ControlWord = 0x37f; + } + + if (!xstate_compaction_enabled || (xsave->xstate.Mask & XSTATE_MASK_LEGACY_SSE)) + { + memcpy( context->u.FltSave.XmmRegisters, xsave->xsave.XmmRegisters, + sizeof( context->u.FltSave.XmmRegisters )); + context->u.FltSave.MxCsr = xsave->xsave.MxCsr; + context->u.FltSave.MxCsr_Mask = xsave->xsave.MxCsr_Mask; + } + else + { + memset( context->u.FltSave.XmmRegisters, 0, + sizeof( context->u.FltSave.XmmRegisters )); + context->u.FltSave.MxCsr = 0x1f80; + context->u.FltSave.MxCsr_Mask = 0x2ffff; + } + + context->MxCsr = context->u.FltSave.MxCsr; context->ContextFlags |= CONTEXT_FLOATING_POINT; } /* update the cached version of the debug registers */
1
0
0
0
Jacek Caban : ntdll: Use the right cpuid for XSAVEC detection.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 7b95cdffa6b12eca9c10a6ab45b50fcf1f9fa3a4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7b95cdffa6b12eca9c10a6ab…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Feb 24 18:27:32 2021 +0100 ntdll: Use the right cpuid for XSAVEC detection. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=50713
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/system.c | 50 ++++++++++++------------------------------------ 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index 00fca0fd1f0..56bdd63c89b 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -188,36 +188,10 @@ BOOL xstate_compaction_enabled = FALSE; #define INEI 0x49656e69 /* "ineI" */ #define NTEL 0x6c65746e /* "ntel" */ -extern void do_cpuid(unsigned int ax, unsigned int *p); - -#ifdef __i386__ -__ASM_GLOBAL_FUNC( do_cpuid, - "pushl %esi\n\t" - "pushl %ebx\n\t" - "movl 12(%esp),%eax\n\t" - "movl 16(%esp),%esi\n\t" - "xorl %ecx,%ecx\n\t" - "cpuid\n\t" - "movl %eax,(%esi)\n\t" - "movl %ebx,4(%esi)\n\t" - "movl %ecx,8(%esi)\n\t" - "movl %edx,12(%esi)\n\t" - "popl %ebx\n\t" - "popl %esi\n\t" - "ret" ) -#else -__ASM_GLOBAL_FUNC( do_cpuid, - "pushq %rbx\n\t" - "movl %edi,%eax\n\t" - "xorl %ecx,%ecx\n\t" - "cpuid\n\t" - "movl %eax,(%rsi)\n\t" - "movl %ebx,4(%rsi)\n\t" - "movl %ecx,8(%rsi)\n\t" - "movl %edx,12(%rsi)\n\t" - "popq %rbx\n\t" - "ret" ) -#endif +static inline void do_cpuid(unsigned int ax, unsigned int cx, unsigned int *p) +{ + __asm__ ("cpuid" : "=a"(p[0]), "=b" (p[1]), "=c"(p[2]), "=d"(p[3]) : "a"(ax), "c"(cx)); +} #ifdef __i386__ extern int have_cpuid(void); @@ -275,10 +249,10 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info ) if (!have_cpuid()) return; - do_cpuid( 0x00000000, regs ); /* get standard cpuid level and vendor name */ + do_cpuid( 0x00000000, 0, regs ); /* get standard cpuid level and vendor name */ if (regs[0]>=0x00000001) /* Check for supported cpuid version */ { - do_cpuid( 0x00000001, regs2 ); /* get cpu features */ + do_cpuid( 0x00000001, 0, regs2 ); /* get cpu features */ if (regs2[3] & (1 << 3 )) info->FeatureSet |= CPU_FEATURE_PSE; if (regs2[3] & (1 << 4 )) info->FeatureSet |= CPU_FEATURE_TSC; if (regs2[3] & (1 << 6 )) info->FeatureSet |= CPU_FEATURE_PAE; @@ -303,13 +277,13 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info ) if (regs[0] >= 0x00000007) { - do_cpuid( 0x00000007, regs3 ); /* get extended features */ + do_cpuid( 0x00000007, 0, regs3 ); /* get extended features */ if (regs3[1] & (1 << 5)) info->FeatureSet |= CPU_FEATURE_AVX2; } if (info->FeatureSet & CPU_FEATURE_XSAVE) { - do_cpuid( 0x0000000d, regs3 ); /* get XSAVE details */ + do_cpuid( 0x0000000d, 1, regs3 ); /* get XSAVE details */ if (regs3[0] & 2) xstate_compaction_enabled = TRUE; } @@ -324,10 +298,10 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info ) info->Revision |= ((regs2[0] >> 4 ) & 0xf) << 8; /* model */ info->Revision |= regs2[0] & 0xf; /* stepping */ - do_cpuid( 0x80000000, regs ); /* get vendor cpuid level */ + do_cpuid( 0x80000000, 0, regs ); /* get vendor cpuid level */ if (regs[0] >= 0x80000001) { - do_cpuid( 0x80000001, regs2 ); /* get vendor features */ + do_cpuid( 0x80000001, 0, regs2 ); /* get vendor features */ if (regs2[2] & (1 << 2)) info->FeatureSet |= CPU_FEATURE_VIRT; if (regs2[3] & (1 << 20)) info->FeatureSet |= CPU_FEATURE_NX; if (regs2[3] & (1 << 27)) info->FeatureSet |= CPU_FEATURE_TSC; @@ -347,10 +321,10 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info ) if(regs2[2] & (1 << 5)) info->FeatureSet |= CPU_FEATURE_VIRT; if(regs2[3] & (1 << 21)) info->FeatureSet |= CPU_FEATURE_DS; - do_cpuid( 0x80000000, regs ); /* get vendor cpuid level */ + do_cpuid( 0x80000000, 0, regs ); /* get vendor cpuid level */ if (regs[0] >= 0x80000001) { - do_cpuid( 0x80000001, regs2 ); /* get vendor features */ + do_cpuid( 0x80000001, 0, regs2 ); /* get vendor features */ if (regs2[3] & (1 << 20)) info->FeatureSet |= CPU_FEATURE_NX; if (regs2[3] & (1 << 27)) info->FeatureSet |= CPU_FEATURE_TSC; }
1
0
0
0
Jacek Caban : ntdll: Don't use FeatureSet for XSAVE compaction support flag.
by Alexandre Julliard
24 Feb '21
24 Feb '21
Module: wine Branch: master Commit: 014f249aea46694a89e6b7b507ddac1ff561d241 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=014f249aea46694a89e6b7b5…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Feb 24 18:27:16 2021 +0100 ntdll: Don't use FeatureSet for XSAVE compaction support flag. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/unix/signal_i386.c | 4 ++-- dlls/ntdll/unix/signal_x86_64.c | 9 ++++----- dlls/ntdll/unix/system.c | 4 +++- dlls/ntdll/unix/unix_private.h | 2 ++ include/winternl.h | 3 +-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index 4d03153bd1f..6cc80809316 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -716,7 +716,7 @@ static inline NTSTATUS save_xstate( CONTEXT *context ) || context_ex->XState.Length > sizeof(XSTATE)) return STATUS_INVALID_PARAMETER; - if (user_shared_data->XState.CompactionEnabled) + if (xstate_compaction_enabled) { /* xsavec doesn't use anything from the save area. */ __asm__ volatile( "xsavec %0" : "=m"(xsave_area) @@ -1650,7 +1650,7 @@ C_ASSERT( (offsetof(struct stack_layout, xstate) == sizeof(struct stack_layout)) assert(!((ULONG_PTR)dst_xs & 63)); context_init_xstate( &stack->context, stack->xstate ); memset( dst_xs, 0, offsetof(XSTATE, YmmContext) ); - dst_xs->CompactionMask = user_shared_data->XState.CompactionEnabled ? 0x8000000000000004 : 0; + dst_xs->CompactionMask = xstate_compaction_enabled ? 0x8000000000000004 : 0; if (src_xs->Mask & 4) { dst_xs->Mask = 4; diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index cd0d0a2c1b0..509ff6d460f 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -1959,16 +1959,15 @@ NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context ) { struct syscall_xsave *xsave = get_syscall_xsave( frame ); CONTEXT_EX *context_ex = (CONTEXT_EX *)(context + 1); - const BOOL compaction_enabled = user_shared_data->XState.CompactionEnabled; unsigned int mask; if (context_ex->XState.Length < offsetof(XSTATE, YmmContext) || context_ex->XState.Length > sizeof(XSTATE)) return STATUS_INVALID_PARAMETER; - mask = (compaction_enabled ? xstate->CompactionMask : xstate->Mask) & XSTATE_MASK_GSSE; + mask = (xstate_compaction_enabled ? xstate->CompactionMask : xstate->Mask) & XSTATE_MASK_GSSE; xstate->Mask = xsave->xstate.Mask & mask; - xstate->CompactionMask = compaction_enabled ? (0x8000000000000000 | mask) : 0; + xstate->CompactionMask = xstate_compaction_enabled ? (0x8000000000000000 | mask) : 0; memset( xstate->Reserved, 0, sizeof(xstate->Reserved) ); if (xstate->Mask) { @@ -2044,7 +2043,7 @@ static void setup_raise_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec assert( !((ULONG_PTR)dst_xs & 63) ); context_init_xstate( &stack->context, stack->xstate ); memset( dst_xs, 0, offsetof(XSTATE, YmmContext) ); - dst_xs->CompactionMask = user_shared_data->XState.CompactionEnabled ? 0x8000000000000004 : 0; + dst_xs->CompactionMask = xstate_compaction_enabled ? 0x8000000000000004 : 0; if (src_xs->Mask & 4) { dst_xs->Mask = 4; @@ -2807,7 +2806,7 @@ void *signal_init_syscalls(void) extern void __wine_syscall_dispatcher_xsavec(void) DECLSPEC_HIDDEN; NtQuerySystemInformation( SystemCpuInformation, &cpu_info, sizeof(cpu_info), NULL ); - if (cpu_info.FeatureSet & CPU_FEATURE_XSAVEC) + if (xstate_compaction_enabled) syscall_dispatcher = __wine_syscall_dispatcher_xsavec; else if (cpu_info.FeatureSet & CPU_FEATURE_XSAVE) syscall_dispatcher = __wine_syscall_dispatcher_xsave; diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index 27ecfae365f..00fca0fd1f0 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -178,6 +178,8 @@ static SYSTEM_CPU_INFORMATION cpu_info; */ #if defined(__i386__) || defined(__x86_64__) +BOOL xstate_compaction_enabled = FALSE; + #define AUTH 0x68747541 /* "Auth" */ #define ENTI 0x69746e65 /* "enti" */ #define CAMD 0x444d4163 /* "cAMD" */ @@ -308,7 +310,7 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info ) if (info->FeatureSet & CPU_FEATURE_XSAVE) { do_cpuid( 0x0000000d, regs3 ); /* get XSAVE details */ - if (regs3[0] & 2) info->FeatureSet |= CPU_FEATURE_XSAVEC; + if (regs3[0] & 2) xstate_compaction_enabled = TRUE; } if (regs[1] == AUTH && regs[3] == ENTI && regs[2] == CAMD) diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h index cf680218849..cd11ba1c46b 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -307,6 +307,8 @@ struct xcontext }; #if defined(__i386__) || defined(__x86_64__) +extern BOOL xstate_compaction_enabled DECLSPEC_HIDDEN; + static inline XSTATE *xstate_from_context( const CONTEXT *context ) { CONTEXT_EX *xctx = (CONTEXT_EX *)(context + 1); diff --git a/include/winternl.h b/include/winternl.h index 3beecf10ff6..f0ab223ef2e 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1754,14 +1754,13 @@ typedef struct _SYSTEM_CPU_INFORMATION { /* FIXME: following values are made up, actual flags are unknown */ #define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */ -#define CPU_FEATURE_XSAVEC 0x00400000 /* XSAVEC instructions */ #define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */ #define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */ #define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */ #define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */ - #define CPU_FEATURE_PAE 0x00200000 #define CPU_FEATURE_DAZ 0x00400000 + #define CPU_FEATURE_ARM_VFP_32 0x00000001 #define CPU_FEATURE_ARM_NEON 0x00000002 #define CPU_FEATURE_ARM_V8_CRC32 0x00000004
1
0
0
0
← Newer
1
...
8
9
10
11
12
13
14
...
92
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
Results per page:
10
25
50
100
200