From 5e8fbbf2008e5a9282b45ea329b9de9327a58172 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 20 Jul 2021 11:04:44 +1000 Subject: [PATCH] Rebase against d60c450c7be196c2072f74e34f7760d39e3bad32. --- ...tated-Arc-ArcTo-Chord-and-Pie-drawin.patch | 12 +-- ...er-Introduce-H.264-decoder-transform.patch | 12 +-- ...plement-SetInputType-for-decode-tran.patch | 4 +- ...mer-Add-push-mode-path-for-wg_parser.patch | 82 +++++++++---------- ...amer-Introduce-AAC-decoder-transform.patch | 2 +- ...plement-Process-Input-Output-for-aud.patch | 12 +-- ...ly-require-videobox-element-for-pars.patch | 18 ++-- ...epth-bounds-test-into-a-proper-state.patch | 44 +++++----- ...ement-NvAPI_D3D11_SetDepthBoundsTest.patch | 14 ++-- patches/patchinstall.sh | 2 +- ...ctual-vertex-shader-float-constants-.patch | 26 +++--- staging/upstream-commit | 2 +- 12 files changed, 114 insertions(+), 116 deletions(-) diff --git a/patches/gdi32-rotation/0001-gdi32-fix-for-rotated-Arc-ArcTo-Chord-and-Pie-drawin.patch b/patches/gdi32-rotation/0001-gdi32-fix-for-rotated-Arc-ArcTo-Chord-and-Pie-drawin.patch index bddd4101..0f3c5d71 100644 --- a/patches/gdi32-rotation/0001-gdi32-fix-for-rotated-Arc-ArcTo-Chord-and-Pie-drawin.patch +++ b/patches/gdi32-rotation/0001-gdi32-fix-for-rotated-Arc-ArcTo-Chord-and-Pie-drawin.patch @@ -1,4 +1,4 @@ -From a0a3c410b4917a8e5dcab1a2060ccae7c3f8c1e8 Mon Sep 17 00:00:00 2001 +From 164e5f77ce0f956834cf7bbf8fbc893cd32c52de Mon Sep 17 00:00:00 2001 From: Daniel Wendt Date: Fri, 15 Nov 2013 12:52:37 +0100 Subject: [PATCH] gdi32: fix for rotated Arc, ArcTo, Chord and Pie drawing @@ -11,7 +11,7 @@ Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=34579 2 files changed, 83 insertions(+) diff --git a/dlls/gdi32/dibdrv/graphics.c b/dlls/gdi32/dibdrv/graphics.c -index 62906dcfaf0..4792b3018aa 100644 +index a875ae113cd..1a37fdb5fca 100644 --- a/dlls/gdi32/dibdrv/graphics.c +++ b/dlls/gdi32/dibdrv/graphics.c @@ -312,6 +312,60 @@ static int get_arc_points( int arc_dir, const RECT *rect, POINT start, POINT end @@ -116,12 +116,12 @@ index 62906dcfaf0..4792b3018aa 100644 { HeapFree( GetProcessHeap(), 0, points ); diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h -index db33f33110f..dd14a665bcc 100644 +index 436846c5bd5..030dd4a3768 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h -@@ -25,4 +25,7 @@ - void set_gdi_client_ptr( HGDIOBJ handle, void *ptr ) DECLSPEC_HIDDEN; - void *get_gdi_client_ptr( HGDIOBJ handle, WORD type ) DECLSPEC_HIDDEN; +@@ -46,4 +46,7 @@ extern BOOL METADC_MoveTo( HDC hdc, INT x, INT y ) DECLSPEC_HIDDEN; + extern BOOL METADC_Pie( HDC hdc, INT left, INT top, INT right, INT bottom, + INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN; +BOOL xform_has_rotate_and_uniform_scale_and_shear( const XFORM *xform ) DECLSPEC_HIDDEN; +BOOL xform_decompose_rotation_and_translation( XFORM *xform, XFORM *rotation_and_translation ) DECLSPEC_HIDDEN; diff --git a/patches/mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch b/patches/mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch index caa6c8ad..f43ae670 100644 --- a/patches/mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch +++ b/patches/mfplat-streaming-support/0003-winegstreamer-Introduce-H.264-decoder-transform.patch @@ -1,7 +1,7 @@ -From 95db72178f4906d02785c707a46c8298f4c008d0 Mon Sep 17 00:00:00 2001 +From 83a951e062135cb433d23b7af56c2541b504c1a5 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Wed, 10 Mar 2021 13:09:51 -0500 -Subject: [PATCH 03/39] winegstreamer: Introduce H.264 decoder transform. +Subject: [PATCH] winegstreamer: Introduce H.264 decoder transform. Signed-off-by: Derek Lesho --- @@ -345,7 +345,7 @@ index 55a62361966..cdf90d52025 100644 + #endif /* __GST_PRIVATE_INCLUDED__ */ diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c -index dfa448afcfe..de679a62023 100644 +index dcbd03137ba..4bff7ee9241 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c @@ -412,6 +412,7 @@ class_objects[] = @@ -371,11 +371,11 @@ index 072ec90eea4..064a6872c79 100644 +] +coclass CMSH264DecoderMFT { } diff --git a/include/mfidl.idl b/include/mfidl.idl -index 76e0d0dfeb4..616271861aa 100644 +index 5b16c08bb90..f28a0669804 100644 --- a/include/mfidl.idl +++ b/include/mfidl.idl -@@ -1574,3 +1574,4 @@ cpp_quote("EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_ACTIVATE, 0xba491365, - cpp_quote("EXTERN_GUID(MF_ACTIVATE_CUSTOM_VIDEO_PRESENTER_FLAGS, 0xba491366, 0xbe50, 0x451e, 0x95, 0xab, 0x6d, 0x4a, 0xcc, 0xc7, 0xda, 0xd8);") +@@ -1579,3 +1579,4 @@ cpp_quote("EXTERN_GUID(MF_XVP_CALLER_ALLOCATES_OUTPUT, 0x4a2cabc, 0x0cab, 0x40b1 + cpp_quote("EXTERN_GUID(MF_XVP_SAMPLE_LOCK_TIMEOUT, 0xaa4ddb29, 0x5134, 0x4363, 0xac, 0x72, 0x83, 0xec, 0x4b, 0xc1, 0x04, 0x26);") cpp_quote("EXTERN_GUID(CLSID_VideoProcessorMFT, 0x88753b26, 0x5b24, 0x49bd, 0xb2, 0xe7, 0xc, 0x44, 0x5c, 0x78, 0xc9, 0x82);") +cpp_quote("EXTERN_GUID(CLSID_CMSH264DecoderMFT, 0x62ce7e72, 0x4c71, 0x4d20, 0xb1, 0x5d, 0x45, 0x28, 0x31, 0xa8, 0x7d, 0x9d);") diff --git a/patches/mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch b/patches/mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch index 41a29cd8..ea175614 100644 --- a/patches/mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch +++ b/patches/mfplat-streaming-support/0006-winegstreamer-Implement-SetInputType-for-decode-tran.patch @@ -249,7 +249,7 @@ index c83afe4e195..e9689c01085 100644 + case /* eAVEncH264VProfile_High */ 100: profile = "high"; break; + case /* eAVEncH264VProfile_444 */ 244: profile = "high-4:4:4"; break; + default: -+ ERR("Unrecognized H.264 profile attribute %u\n", format->u.video.compressed.h264.profile); ++ GST_ERROR("Unrecognized H.264 profile attribute %u\n", format->u.video.compressed.h264.profile); + /* fallthrough */ + case 0: profile = NULL; + } @@ -273,7 +273,7 @@ index c83afe4e195..e9689c01085 100644 + case /* eAVEncH264VLevel5_1 */ 51: level = "5.1"; break; + case /* eAVEncH264VLevel5_2 */ 52: level = "5.2"; break; + default: -+ ERR("Unrecognized H.264 level attribute %u\n", format->u.video.compressed.h264.level); ++ GST_ERROR("Unrecognized H.264 level attribute %u\n", format->u.video.compressed.h264.level); + /* fallthrough */ + case 0: level = NULL; + } diff --git a/patches/mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch b/patches/mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch index d2cdfcf4..f1f5eeab 100644 --- a/patches/mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch +++ b/patches/mfplat-streaming-support/0009-winegstreamer-Add-push-mode-path-for-wg_parser.patch @@ -1,7 +1,7 @@ -From 431374b54bf2c58515c9bd56acf45d15f2fdf42d Mon Sep 17 00:00:00 2001 +From 04332336184dfd88cde06e790c35e5fcff71e583 Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Fri, 19 Mar 2021 16:40:46 -0400 -Subject: [PATCH 09/39] winegstreamer: Add push-mode path for wg_parser. +Subject: [PATCH] winegstreamer: Add push-mode path for wg_parser. Signed-off-by: Derek Lesho --- @@ -86,7 +86,7 @@ index 215cf4577d4..25694aae84d 100644 extern const struct unix_funcs *unix_funcs; diff --git a/dlls/winegstreamer/media_source.c b/dlls/winegstreamer/media_source.c -index 9c554c7c415..f658cc0a5fc 100644 +index 05544ef7abe..054e87edb7b 100644 --- a/dlls/winegstreamer/media_source.c +++ b/dlls/winegstreamer/media_source.c @@ -305,7 +305,7 @@ static void start_pipeline(struct media_source *source, struct source_async_comm @@ -108,7 +108,7 @@ index 9c554c7c415..f658cc0a5fc 100644 TRACE("Media source is shutting down; exiting.\n"); diff --git a/dlls/winegstreamer/quartz_parser.c b/dlls/winegstreamer/quartz_parser.c -index 4eceeae0757..1c68eba1872 100644 +index fc1b72cd958..4b0f2c215d1 100644 --- a/dlls/winegstreamer/quartz_parser.c +++ b/dlls/winegstreamer/quartz_parser.c @@ -799,7 +799,7 @@ static DWORD CALLBACK read_thread(void *arg) @@ -130,10 +130,10 @@ index 4eceeae0757..1c68eba1872 100644 /* We do need to drop any buffers that might have been sent with the old * caps, but this will be handled in parser_init_stream(). */ diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c -index e9689c01085..9ca5abebfaf 100644 +index 8f472e6650d..d01da49dbef 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c -@@ -44,7 +44,7 @@ struct wg_parser +@@ -47,7 +47,7 @@ struct wg_parser BOOL (*init_gst)(struct wg_parser *parser); struct wg_parser_stream **streams; @@ -142,7 +142,7 @@ index e9689c01085..9ca5abebfaf 100644 GstElement *container, *decodebin; GstBus *bus; -@@ -58,7 +58,7 @@ struct wg_parser +@@ -61,7 +61,7 @@ struct wg_parser pthread_mutex_t mutex; pthread_cond_t init_cond; @@ -151,7 +151,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_cond_t read_cond, read_done_cond; struct -@@ -67,10 +67,12 @@ struct wg_parser +@@ -70,10 +70,12 @@ struct wg_parser uint64_t offset; uint32_t size; bool done; @@ -166,7 +166,7 @@ index e9689c01085..9ca5abebfaf 100644 }; struct wg_parser_stream -@@ -78,9 +80,10 @@ struct wg_parser_stream +@@ -81,9 +83,10 @@ struct wg_parser_stream struct wg_parser *parser; GstPad *their_src, *post_sink, *post_src, *my_sink; @@ -178,7 +178,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_cond_t event_cond, event_empty_cond; struct wg_parser_event event; -@@ -571,6 +574,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser) +@@ -574,6 +577,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser) { unsigned int i; @@ -188,7 +188,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_mutex_lock(&parser->mutex); parser->flushing = true; pthread_mutex_unlock(&parser->mutex); -@@ -584,6 +590,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser) +@@ -587,6 +593,9 @@ static void CDECL wg_parser_begin_flush(struct wg_parser *parser) static void CDECL wg_parser_end_flush(struct wg_parser *parser) { @@ -198,7 +198,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_mutex_lock(&parser->mutex); parser->flushing = false; pthread_mutex_unlock(&parser->mutex); -@@ -594,7 +603,7 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser, +@@ -597,7 +606,7 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser, { pthread_mutex_lock(&parser->mutex); @@ -207,7 +207,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_cond_wait(&parser->read_cond, &parser->mutex); if (!parser->sink_connected) -@@ -611,14 +620,25 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser, +@@ -614,14 +623,25 @@ static bool CDECL wg_parser_get_read_request(struct wg_parser *parser, return true; } @@ -237,7 +237,7 @@ index e9689c01085..9ca5abebfaf 100644 } static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser) -@@ -630,11 +650,15 @@ static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser) +@@ -633,11 +653,15 @@ static void CDECL wg_parser_set_unlimited_buffering(struct wg_parser *parser) static void CDECL wg_parser_stream_get_preferred_format(struct wg_parser_stream *stream, struct wg_format *format) { @@ -255,7 +255,7 @@ index e9689c01085..9ca5abebfaf 100644 stream->current_format = *format; stream->enabled = true; -@@ -663,6 +687,18 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const +@@ -666,6 +690,18 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const gst_util_set_object_arg(G_OBJECT(stream->flip), "method", "none"); break; } @@ -274,7 +274,7 @@ index e9689c01085..9ca5abebfaf 100644 } gst_pad_push_event(stream->my_sink, gst_event_new_reconfigure()); -@@ -691,6 +727,11 @@ static bool CDECL wg_parser_stream_get_event(struct wg_parser_stream *stream, st +@@ -694,6 +730,11 @@ static bool CDECL wg_parser_stream_get_event(struct wg_parser_stream *stream, st *event = stream->event; @@ -286,7 +286,7 @@ index e9689c01085..9ca5abebfaf 100644 if (stream->event.type != WG_PARSER_EVENT_BUFFER) { stream->event.type = WG_PARSER_EVENT_NONE; -@@ -751,6 +792,9 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double +@@ -754,6 +795,9 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double GstSeekType start_type = GST_SEEK_TYPE_SET, stop_type = GST_SEEK_TYPE_SET; GstSeekFlags flags = 0; @@ -296,7 +296,7 @@ index e9689c01085..9ca5abebfaf 100644 if (start_flags & AM_SEEKING_SeekToKeyFrame) flags |= GST_SEEK_FLAG_KEY_UNIT; if (start_flags & AM_SEEKING_Segment) -@@ -767,6 +811,43 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double +@@ -770,6 +814,43 @@ static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double GST_FORMAT_TIME, flags, start_type, start_pos * 100, stop_type, stop_pos * 100)); } @@ -340,7 +340,7 @@ index e9689c01085..9ca5abebfaf 100644 static void CDECL wg_parser_stream_notify_qos(struct wg_parser_stream *stream, bool underflow, double proportion, int64_t diff, uint64_t timestamp) { -@@ -1071,14 +1152,27 @@ static gboolean sink_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) +@@ -1084,14 +1165,27 @@ static GstElement *create_element(const char *name, const char *plugin_set) static struct wg_parser_stream *create_stream(struct wg_parser *parser) { struct wg_parser_stream *stream, **new_array; @@ -373,7 +373,7 @@ index e9689c01085..9ca5abebfaf 100644 gst_segment_init(&stream->segment, GST_FORMAT_UNDEFINED); -@@ -1118,7 +1212,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1131,7 +1225,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) if (!strcmp(name, "video/x-raw")) { @@ -382,9 +382,9 @@ index e9689c01085..9ca5abebfaf 100644 /* DirectShow can express interlaced video, but downstream filters can't * necessarily consume it. In particular, the video renderer can't. */ -@@ -1147,6 +1241,13 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1148,11 +1242,30 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) + if (!(flip = create_element("videoflip", "good"))) goto out; - } + if (!(videobox = gst_element_factory_make("videobox", NULL))) + { @@ -395,10 +395,8 @@ index e9689c01085..9ca5abebfaf 100644 + /* videoflip does not support 15 and 16-bit RGB so add a second videoconvert * to do the final conversion. */ - if (!(vconv2 = gst_element_factory_make("videoconvert", NULL))) -@@ -1156,6 +1257,18 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) + if (!(vconv2 = create_element("videoconvert", "base"))) goto out; - } + if (!parser->seekable) + { @@ -415,7 +413,7 @@ index e9689c01085..9ca5abebfaf 100644 /* The bin takes ownership of these elements. */ gst_bin_add(GST_BIN(parser->container), deinterlace); gst_element_sync_state_with_parent(deinterlace); -@@ -1163,16 +1276,20 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1160,16 +1273,20 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) gst_element_sync_state_with_parent(vconv); gst_bin_add(GST_BIN(parser->container), flip); gst_element_sync_state_with_parent(flip); @@ -437,7 +435,7 @@ index e9689c01085..9ca5abebfaf 100644 } else if (!strcmp(name, "audio/x-raw")) { -@@ -1260,23 +1377,25 @@ static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1253,23 +1370,25 @@ static void pad_removed_cb(GstElement *element, GstPad *pad, gpointer user) g_free(name); } @@ -472,7 +470,7 @@ index e9689c01085..9ca5abebfaf 100644 if (!*buffer) *buffer = new_buffer = gst_buffer_new_and_alloc(size); -@@ -1285,6 +1404,14 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, +@@ -1278,6 +1397,14 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, pthread_mutex_lock(&parser->mutex); @@ -487,7 +485,7 @@ index e9689c01085..9ca5abebfaf 100644 assert(!parser->read_request.data); parser->read_request.data = map_info.data; parser->read_request.offset = offset; -@@ -1296,8 +1423,36 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, +@@ -1289,8 +1416,36 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, * the upstream pin to flush if necessary. We should never be blocked on * read_thread() not running. */ @@ -525,7 +523,7 @@ index e9689c01085..9ca5abebfaf 100644 ret = parser->read_request.ret; -@@ -1305,12 +1460,29 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, +@@ -1298,12 +1453,29 @@ static GstFlowReturn src_getrange_cb(GstPad *pad, GstObject *parent, gst_buffer_unmap(*buffer, &map_info); @@ -557,7 +555,7 @@ index e9689c01085..9ca5abebfaf 100644 } static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) -@@ -1329,7 +1501,7 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) +@@ -1322,7 +1494,7 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) gst_query_set_duration(query, GST_FORMAT_PERCENT, GST_FORMAT_PERCENT_MAX); return TRUE; } @@ -566,7 +564,7 @@ index e9689c01085..9ca5abebfaf 100644 { gst_query_set_duration(query, GST_FORMAT_BYTES, parser->file_size); return TRUE; -@@ -1343,15 +1515,42 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) +@@ -1336,15 +1508,42 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) GST_WARNING("Cannot seek using format \"%s\".", gst_format_get_name(format)); return FALSE; } @@ -610,7 +608,7 @@ index e9689c01085..9ca5abebfaf 100644 default: GST_WARNING("Unhandled query type %s.", GST_QUERY_TYPE_NAME(query)); return FALSE; -@@ -1361,42 +1560,115 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) +@@ -1354,42 +1553,115 @@ static gboolean src_query_cb(GstPad *pad, GstObject *parent, GstQuery *query) static void *push_data(void *arg) { struct wg_parser *parser = arg; @@ -736,7 +734,7 @@ index e9689c01085..9ca5abebfaf 100644 buffer->duration = buffer->pts = -1; if ((ret = gst_pad_push(parser->my_src, buffer)) < 0) -@@ -1406,8 +1678,6 @@ static void *push_data(void *arg) +@@ -1399,8 +1671,6 @@ static void *push_data(void *arg) } } @@ -745,7 +743,7 @@ index e9689c01085..9ca5abebfaf 100644 gst_pad_push_event(parser->my_src, gst_event_new_eos()); GST_DEBUG("Stopping push thread."); -@@ -1423,6 +1693,12 @@ static gboolean activate_push(GstPad *pad, gboolean activate) +@@ -1416,6 +1686,12 @@ static gboolean activate_push(GstPad *pad, gboolean activate) { if (parser->push_thread) { @@ -758,7 +756,7 @@ index e9689c01085..9ca5abebfaf 100644 pthread_join(parser->push_thread, NULL); parser->push_thread = 0; } -@@ -1608,13 +1884,11 @@ static LONGLONG query_duration(GstPad *pad) +@@ -1601,13 +1877,11 @@ static LONGLONG query_duration(GstPad *pad) return 0; } @@ -773,7 +771,7 @@ index e9689c01085..9ca5abebfaf 100644 parser->sink_connected = true; if (!parser->bus) -@@ -1636,6 +1910,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s +@@ -1629,6 +1903,20 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s parser->start_offset = parser->next_offset = parser->stop_offset = 0; parser->next_pull_offset = 0; @@ -794,7 +792,7 @@ index e9689c01085..9ca5abebfaf 100644 if (!parser->init_gst(parser)) return E_FAIL; -@@ -1666,6 +1954,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s +@@ -1659,6 +1947,43 @@ static HRESULT CDECL wg_parser_connect(struct wg_parser *parser, uint64_t file_s return S_OK; } @@ -838,9 +836,9 @@ index e9689c01085..9ca5abebfaf 100644 static void free_stream(struct wg_parser_stream *stream) { if (stream->their_src) -@@ -1740,6 +2065,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser) +@@ -1729,6 +2054,9 @@ static BOOL decodebin_parser_init_gst(struct wg_parser *parser) + if (!(element = create_element("decodebin", "base"))) return FALSE; - } + if (parser->input_format.major_type) + g_object_set(G_OBJECT(element), "sink-caps", wg_format_to_caps(&parser->input_format), NULL); @@ -848,7 +846,7 @@ index e9689c01085..9ca5abebfaf 100644 gst_bin_add(GST_BIN(parser->container), element); parser->decodebin = element; -@@ -2016,6 +2344,7 @@ static const struct unix_funcs funcs = +@@ -1993,6 +2321,7 @@ static const struct unix_funcs funcs = wg_parser_destroy, wg_parser_connect, @@ -856,7 +854,7 @@ index e9689c01085..9ca5abebfaf 100644 wg_parser_disconnect, wg_parser_begin_flush, -@@ -2040,6 +2369,7 @@ static const struct unix_funcs funcs = +@@ -2017,6 +2346,7 @@ static const struct unix_funcs funcs = wg_parser_stream_get_duration, wg_parser_stream_seek, diff --git a/patches/mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch b/patches/mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch index bdf055c6..69b84d85 100644 --- a/patches/mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch +++ b/patches/mfplat-streaming-support/0014-winegstreamer-Introduce-AAC-decoder-transform.patch @@ -253,7 +253,7 @@ index 6c8cf1f85b1..7f06fd886d6 100644 + case 0x2A: profile = "lc"; level = "4"; break; + case 0x2B: profile = "lc"; level = "5"; break; + default: -+ FIXME("Unrecognized profile-level-indication %u\n", format->u.audio.compressed.aac.indication); ++ GST_DEBUG("Unrecognized profile-level-indication %u\n", format->u.audio.compressed.aac.indication); + /* fallthrough */ + case 0x00: case 0xFE: profile = level = NULL; break; /* unspecified */ + } diff --git a/patches/mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch b/patches/mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch index afe3bc04..edc66bce 100644 --- a/patches/mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch +++ b/patches/mfplat-streaming-support/0018-winegstreamer-Implement-Process-Input-Output-for-aud.patch @@ -431,7 +431,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + { + if (!(convert = gst_element_factory_make("videoconvert", NULL))) + { -+ ERR("Failed to create videoconvert; are %u-bit GStreamer \"base\" plugins installed?\n", ++ GST_ERROR("Failed to create videoconvert; are %u-bit GStreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void*)); + return FALSE; + } @@ -445,7 +445,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + { + if (!(convert = gst_element_factory_make("audioconvert", NULL))) + { -+ ERR("Failed to create audioconvert; are %u-bit GStreamer \"base\" plugins installed?\n", ++ GST_ERROR("Failed to create audioconvert; are %u-bit GStreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void*)); + return FALSE; + } @@ -454,7 +454,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + + if (!(resampler = gst_element_factory_make("audioresample", NULL))) + { -+ ERR("Failed to create audioresample; are %u-bit GStreamer \"base\" plugins installed?\n", ++ GST_ERROR("Failed to create audioresample; are %u-bit GStreamer \"base\" plugins installed?\n", + 8 * (int)sizeof(void*)); + return FALSE; + } @@ -468,7 +468,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + + if ((ret = gst_pad_link(parser->my_src, parser->their_sink)) < 0) + { -+ ERR("Failed to link sink pads, error %d.\n", ret); ++ GST_ERROR("Failed to link sink pads, error %d.\n", ret); + return FALSE; + } + @@ -479,7 +479,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + gst_object_ref(stream->their_src); + if ((ret = gst_pad_link(stream->their_src, stream->my_sink)) < 0) + { -+ ERR("Failed to link source pads, error %d.\n", ret); ++ GST_ERROR("Failed to link source pads, error %d.\n", ret); + return FALSE; + } + @@ -489,7 +489,7 @@ index 44d0c9b71f3..6f4dd28082b 100644 + ret = gst_element_get_state(parser->container, NULL, NULL, -1); + if (ret == GST_STATE_CHANGE_FAILURE) + { -+ ERR("Failed to play stream.\n"); ++ GST_ERROR("Failed to play stream.\n"); + return FALSE; + } + diff --git a/patches/mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch b/patches/mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch index 3466ef72..b0a00d9d 100644 --- a/patches/mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch +++ b/patches/mfplat-streaming-support/0034-winegstreamer-Only-require-videobox-element-for-pars.patch @@ -1,8 +1,8 @@ -From 97f4a9b38ee49706edb3c52b93dd86509665361c Mon Sep 17 00:00:00 2001 +From 7be3ecb31b7beb25a0a66d11d9f36a5192a9653c Mon Sep 17 00:00:00 2001 From: Derek Lesho Date: Thu, 18 Mar 2021 16:20:50 -0400 -Subject: [PATCH 34/39] winegstreamer: Only require videobox element for parser - when needed. +Subject: [PATCH] winegstreamer: Only require videobox element for parser when + needed. Signed-off-by: Derek Lesho --- @@ -10,10 +10,10 @@ Signed-off-by: Derek Lesho 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c -index 534db931d8b..afd69ea6891 100644 +index 863870f966d..1d659fcc8d0 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c -@@ -753,6 +753,15 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const +@@ -756,6 +756,15 @@ static void CDECL wg_parser_stream_enable(struct wg_parser_stream *stream, const if (aperture) { @@ -29,9 +29,9 @@ index 534db931d8b..afd69ea6891 100644 if (aperture->left) g_object_set(G_OBJECT(stream->box), "left", -aperture->left, NULL); if (aperture->top) -@@ -1309,12 +1318,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1310,12 +1319,7 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) + if (!(flip = create_element("videoflip", "good"))) goto out; - } - if (!(videobox = gst_element_factory_make("videobox", NULL))) - { @@ -43,7 +43,7 @@ index 534db931d8b..afd69ea6891 100644 /* videoflip does not support 15 and 16-bit RGB so add a second videoconvert * to do the final conversion. */ -@@ -1327,6 +1331,14 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1324,6 +1328,14 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) if (!parser->seekable) { @@ -58,7 +58,7 @@ index 534db931d8b..afd69ea6891 100644 if (stream->aperture.left) g_object_set(G_OBJECT(videobox), "left", -stream->aperture.left, NULL); if (stream->aperture.bottom) -@@ -1344,15 +1356,25 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) +@@ -1341,15 +1353,25 @@ static void pad_added_cb(GstElement *element, GstPad *pad, gpointer user) gst_element_sync_state_with_parent(vconv); gst_bin_add(GST_BIN(parser->container), flip); gst_element_sync_state_with_parent(flip); diff --git a/patches/nvapi-Stub_DLL/0019-wined3d-Make-depth-bounds-test-into-a-proper-state.patch b/patches/nvapi-Stub_DLL/0019-wined3d-Make-depth-bounds-test-into-a-proper-state.patch index 5cb68549..4aa4c8a1 100644 --- a/patches/nvapi-Stub_DLL/0019-wined3d-Make-depth-bounds-test-into-a-proper-state.patch +++ b/patches/nvapi-Stub_DLL/0019-wined3d-Make-depth-bounds-test-into-a-proper-state.patch @@ -1,4 +1,4 @@ -From cd91540817d4ead5855a3c21c54e6fd9d07af68a Mon Sep 17 00:00:00 2001 +From 673e8c2b688451f8bfa7fc1c45ba2f7c8be19614 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Sat, 22 May 2021 17:38:50 -0500 Subject: [PATCH] wined3d: Make depth bounds test into a proper state. @@ -12,10 +12,10 @@ Subject: [PATCH] wined3d: Make depth bounds test into a proper state. 5 files changed, 98 insertions(+), 31 deletions(-) diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c -index 1deafc2d4c3..2b765df30d8 100644 +index 13c0fce5bb1..fb3e7db991f 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c -@@ -132,6 +132,7 @@ enum wined3d_cs_op +@@ -135,6 +135,7 @@ enum wined3d_cs_op WINED3D_CS_OP_SET_RENDER_STATE, WINED3D_CS_OP_SET_TEXTURE_STATE, WINED3D_CS_OP_SET_SAMPLER_STATE, @@ -23,7 +23,7 @@ index 1deafc2d4c3..2b765df30d8 100644 WINED3D_CS_OP_SET_TRANSFORM, WINED3D_CS_OP_SET_CLIP_PLANE, WINED3D_CS_OP_SET_COLOR_KEY, -@@ -388,6 +389,12 @@ struct wined3d_cs_set_sampler_state +@@ -385,6 +386,12 @@ struct wined3d_cs_set_sampler_state DWORD value; }; @@ -36,7 +36,7 @@ index 1deafc2d4c3..2b765df30d8 100644 struct wined3d_cs_set_transform { enum wined3d_cs_op opcode; -@@ -613,6 +620,7 @@ static const char *debug_cs_op(enum wined3d_cs_op op) +@@ -609,6 +616,7 @@ static const char *debug_cs_op(enum wined3d_cs_op op) WINED3D_TO_STR(WINED3D_CS_OP_SET_RENDER_STATE); WINED3D_TO_STR(WINED3D_CS_OP_SET_TEXTURE_STATE); WINED3D_TO_STR(WINED3D_CS_OP_SET_SAMPLER_STATE); @@ -44,7 +44,7 @@ index 1deafc2d4c3..2b765df30d8 100644 WINED3D_TO_STR(WINED3D_CS_OP_SET_TRANSFORM); WINED3D_TO_STR(WINED3D_CS_OP_SET_CLIP_PLANE); WINED3D_TO_STR(WINED3D_CS_OP_SET_COLOR_KEY); -@@ -1934,6 +1942,28 @@ void wined3d_device_context_emit_set_sampler_state(struct wined3d_device_context +@@ -1923,6 +1931,28 @@ void wined3d_device_context_emit_set_sampler_state(struct wined3d_device_context wined3d_device_context_submit(context, WINED3D_CS_QUEUE_DEFAULT); } @@ -73,7 +73,7 @@ index 1deafc2d4c3..2b765df30d8 100644 static void wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *data) { const struct wined3d_cs_set_transform *op = data; -@@ -2926,6 +2956,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void +@@ -2917,6 +2947,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void /* WINED3D_CS_OP_SET_RENDER_STATE */ wined3d_cs_exec_set_render_state, /* WINED3D_CS_OP_SET_TEXTURE_STATE */ wined3d_cs_exec_set_texture_state, /* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state, @@ -82,10 +82,10 @@ index 1deafc2d4c3..2b765df30d8 100644 /* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane, /* WINED3D_CS_OP_SET_COLOR_KEY */ wined3d_cs_exec_set_color_key, diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 175a3b7ed0b..0d6cd8871c1 100644 +index d2147447ee0..cc100b02bac 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -1925,6 +1925,14 @@ void CDECL wined3d_device_context_set_rasterizer_state(struct wined3d_device_con +@@ -1891,6 +1891,14 @@ void CDECL wined3d_device_context_set_rasterizer_state(struct wined3d_device_con wined3d_rasterizer_state_decref(prev); } @@ -100,7 +100,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 void CDECL wined3d_device_context_set_viewports(struct wined3d_device_context *context, unsigned int viewport_count, const struct wined3d_viewport *viewports) { -@@ -3568,7 +3576,8 @@ static void wined3d_device_set_texture(struct wined3d_device *device, +@@ -3546,7 +3554,8 @@ static void wined3d_device_set_texture(struct wined3d_device *device, void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, struct wined3d_stateblock *stateblock) { @@ -110,7 +110,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 const struct wined3d_stateblock_state *state = &stateblock->stateblock_state; const struct wined3d_saved_states *changed = &stateblock->changed; const unsigned int word_bit_count = sizeof(DWORD) * CHAR_BIT; -@@ -3674,7 +3683,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, +@@ -3652,7 +3661,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, case WINED3D_RS_COLORWRITEENABLE1: case WINED3D_RS_COLORWRITEENABLE2: case WINED3D_RS_COLORWRITEENABLE3: @@ -119,7 +119,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 break; case WINED3D_RS_BACK_STENCILFAIL: -@@ -3693,7 +3702,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, +@@ -3671,7 +3680,7 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, case WINED3D_RS_ZENABLE: case WINED3D_RS_ZFUNC: case WINED3D_RS_ZWRITEENABLE: @@ -128,7 +128,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 break; case WINED3D_RS_FILLMODE: -@@ -3702,9 +3711,15 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, +@@ -3680,9 +3689,15 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, case WINED3D_RS_DEPTHBIAS: case WINED3D_RS_SCISSORTESTENABLE: case WINED3D_RS_ANTIALIASEDLINEENABLE: @@ -145,7 +145,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 default: wined3d_device_set_render_state(device, idx, state->rs[idx]); break; -@@ -3893,6 +3908,20 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, +@@ -3871,6 +3886,20 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, } } @@ -167,7 +167,7 @@ index 175a3b7ed0b..0d6cd8871c1 100644 { map = changed->textureState[i]; diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c -index a9183278d86..73a40628f21 100644 +index 8316269afcf..6cd4ff30458 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -2040,42 +2040,31 @@ static void state_tessellation(struct wined3d_context *context, const struct win @@ -227,7 +227,7 @@ index a9183278d86..73a40628f21 100644 } static void state_wrapu(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id) -@@ -4682,6 +4671,8 @@ const struct wined3d_state_entry_template misc_state_template_gl[] = +@@ -4685,6 +4674,8 @@ const struct wined3d_state_entry_template misc_state_template_gl[] = { STATE_DEPTH_STENCIL, { STATE_DEPTH_STENCIL, depth_stencil_2s }, EXT_STENCIL_TWO_SIDE }, { STATE_DEPTH_STENCIL, { STATE_DEPTH_STENCIL, depth_stencil }, WINED3D_GL_EXT_NONE }, { STATE_STENCIL_REF, { STATE_DEPTH_STENCIL, NULL }, WINED3D_GL_EXT_NONE }, @@ -236,7 +236,7 @@ index a9183278d86..73a40628f21 100644 { STATE_STREAMSRC, { STATE_STREAMSRC, streamsrc }, WINED3D_GL_EXT_NONE }, { STATE_VDECL, { STATE_VDECL, vdecl_miscpart }, WINED3D_GL_EXT_NONE }, { STATE_RASTERIZER, { STATE_RASTERIZER, rasterizer_cc }, ARB_CLIP_CONTROL }, -@@ -4795,7 +4786,6 @@ const struct wined3d_state_entry_template misc_state_template_gl[] = +@@ -4798,7 +4789,6 @@ const struct wined3d_state_entry_template misc_state_template_gl[] = { STATE_RENDER(WINED3D_RS_ADAPTIVETESS_Y), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_ADAPTIVETESS_Z), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE }, { STATE_RENDER(WINED3D_RS_ADAPTIVETESS_W), { STATE_RENDER(WINED3D_RS_ENABLEADAPTIVETESSELLATION),NULL }, WINED3D_GL_EXT_NONE }, @@ -258,7 +258,7 @@ index 4019dd4d812..9b58c217a0c 100644 return wine_dbg_sprintf("UNKNOWN_STATE(%#x)", state); } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 91fb681a691..cca8c9cf07d 100644 +index a2048fc6ea6..17ad7869d1b 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1838,7 +1838,10 @@ void dispatch_compute(struct wined3d_device *device, const struct wined3d_state @@ -273,7 +273,7 @@ index 91fb681a691..cca8c9cf07d 100644 #define STATE_COMPUTE_SHADER (STATE_COMPUTE_OFFSET) #define STATE_IS_COMPUTE_SHADER(a) ((a) == STATE_COMPUTE_SHADER) -@@ -3676,6 +3679,13 @@ struct wined3d_light_state +@@ -3670,6 +3673,13 @@ struct wined3d_light_state const struct wined3d_light_info *lights[WINED3D_MAX_ACTIVE_LIGHTS]; }; @@ -287,7 +287,7 @@ index 91fb681a691..cca8c9cf07d 100644 #define WINED3D_STATE_NO_REF 0x00000001 #define WINED3D_STATE_INIT_DEFAULT 0x00000002 -@@ -3730,8 +3740,11 @@ struct wined3d_state +@@ -3724,8 +3734,11 @@ struct wined3d_state struct wined3d_blend_state *blend_state; struct wined3d_color blend_factor; unsigned int sample_mask; @@ -299,10 +299,10 @@ index 91fb681a691..cca8c9cf07d 100644 struct wined3d_rasterizer_state *rasterizer_state; }; -@@ -4813,6 +4826,8 @@ void wined3d_device_context_emit_set_clip_plane(struct wined3d_device_context *c +@@ -4806,6 +4819,8 @@ void wined3d_device_context_emit_set_clip_plane(struct wined3d_device_context *c void wined3d_device_context_emit_set_constant_buffers(struct wined3d_device_context *context, enum wined3d_shader_type type, unsigned int start_idx, unsigned int count, - struct wined3d_buffer *const *buffers) DECLSPEC_HIDDEN; + const struct wined3d_constant_buffer_state *buffers) DECLSPEC_HIDDEN; +void wined3d_device_context_emit_set_depth_bounds(struct wined3d_device_context *context, + BOOL enable, float min, float max) DECLSPEC_HIDDEN; void wined3d_device_context_emit_set_depth_stencil_state(struct wined3d_device_context *context, diff --git a/patches/nvapi-Stub_DLL/0021-nvapi-Implement-NvAPI_D3D11_SetDepthBoundsTest.patch b/patches/nvapi-Stub_DLL/0021-nvapi-Implement-NvAPI_D3D11_SetDepthBoundsTest.patch index d864033a..bc626fc1 100644 --- a/patches/nvapi-Stub_DLL/0021-nvapi-Implement-NvAPI_D3D11_SetDepthBoundsTest.patch +++ b/patches/nvapi-Stub_DLL/0021-nvapi-Implement-NvAPI_D3D11_SetDepthBoundsTest.patch @@ -1,4 +1,4 @@ -From 929a7c148fd83663ffde2a853177a6ca2c30588c Mon Sep 17 00:00:00 2001 +From ede7d81998194cecad240bd3df4cd902c01a0bde Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Sat, 22 May 2021 18:11:07 -0500 Subject: [PATCH] nvapi: Implement NvAPI_D3D11_SetDepthBoundsTest(). @@ -117,10 +117,10 @@ index c8b66ac2fa3..b8b4750203a 100644 /* d3d9 tests */ wc.lpfnWndProc = DefWindowProcA; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 0d6cd8871c1..9910b0e3529 100644 +index cc100b02bac..962112074a4 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -1925,7 +1925,7 @@ void CDECL wined3d_device_context_set_rasterizer_state(struct wined3d_device_con +@@ -1891,7 +1891,7 @@ void CDECL wined3d_device_context_set_rasterizer_state(struct wined3d_device_con wined3d_rasterizer_state_decref(prev); } @@ -130,7 +130,7 @@ index 0d6cd8871c1..9910b0e3529 100644 { TRACE("context %p, enable %d, min %.8e, max %.8e.\n", context, enable, min, max); diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec -index 4d4f34f8d6a..e83847aa9f9 100644 +index 1bce4def265..802194dcbec 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -124,6 +124,7 @@ @@ -142,13 +142,13 @@ index 4d4f34f8d6a..e83847aa9f9 100644 @ cdecl wined3d_device_context_set_depth_stencil_view(ptr ptr) @ cdecl wined3d_device_context_set_index_buffer(ptr ptr long long) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index 80a636edc9f..2167d95d0b8 100644 +index 7be893b8f21..689fc55fdfe 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -2499,6 +2499,8 @@ void __cdecl wined3d_device_context_set_blend_state(struct wined3d_device_contex +@@ -2513,6 +2513,8 @@ void __cdecl wined3d_device_context_set_blend_state(struct wined3d_device_contex void __cdecl wined3d_device_context_set_constant_buffers(struct wined3d_device_context *context, enum wined3d_shader_type type, unsigned int start_idx, unsigned int count, - struct wined3d_buffer *const *buffers); + const struct wined3d_constant_buffer_state *buffers); +void __cdecl wined3d_device_context_set_depth_bounds(struct wined3d_device_context *context, + BOOL enable, float min, float max); void __cdecl wined3d_device_context_set_depth_stencil_state(struct wined3d_device_context *context, diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 02ffde78..9306b503 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "49cde0995827b24aa9c1ef1b6a0372797f4166e0" + echo "d60c450c7be196c2072f74e34f7760d39e3bad32" } # Show version information diff --git a/patches/wined3d-SWVP-shaders/0003-wined3d-Report-actual-vertex-shader-float-constants-.patch b/patches/wined3d-SWVP-shaders/0003-wined3d-Report-actual-vertex-shader-float-constants-.patch index 9fcd03a9..c7636f46 100644 --- a/patches/wined3d-SWVP-shaders/0003-wined3d-Report-actual-vertex-shader-float-constants-.patch +++ b/patches/wined3d-SWVP-shaders/0003-wined3d-Report-actual-vertex-shader-float-constants-.patch @@ -1,4 +1,4 @@ -From de420388d95e30644947be15c42bfa51349f48f9 Mon Sep 17 00:00:00 2001 +From e2968954fd14577e9d2785c304ab397eee712b12 Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Mon, 25 Feb 2019 14:47:28 +0300 Subject: [PATCH] wined3d: Report actual vertex shader float constants limit @@ -13,10 +13,10 @@ Subject: [PATCH] wined3d: Report actual vertex shader float constants limit 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c -index 078a874e1c..f1cb7d9659 100644 +index bdaf2a64b33..621593d3d66 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c -@@ -5140,7 +5140,8 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ +@@ -5104,7 +5104,8 @@ static void wined3d_adapter_gl_init_d3d_info(struct wined3d_adapter_gl *adapter_ d3d_info->limits.gs_version = shader_caps.gs_version; d3d_info->limits.ps_version = shader_caps.ps_version; d3d_info->limits.cs_version = shader_caps.cs_version; @@ -27,10 +27,10 @@ index 078a874e1c..f1cb7d9659 100644 d3d_info->limits.varying_count = shader_caps.varying_count; d3d_info->limits.ffp_textures = fragment_caps.MaxSimultaneousTextures; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c -index 42d645d201..b2db48ecf0 100644 +index 743bec85106..72841c3375a 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c -@@ -3796,9 +3796,16 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, +@@ -3997,9 +3997,16 @@ void CDECL wined3d_device_apply_stateblock(struct wined3d_device *device, HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device, struct wined3d_caps *caps) { @@ -49,10 +49,10 @@ index 42d645d201..b2db48ecf0 100644 HRESULT CDECL wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c -index e306694533..4f7cc772be 100644 +index 34865b7ecd1..118bcf2f23f 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c -@@ -11261,7 +11261,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s +@@ -11307,7 +11307,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s caps->vs_version = gl_info->supported[ARB_VERTEX_SHADER] ? caps->vs_version : 0; caps->ps_version = gl_info->supported[ARB_FRAGMENT_SHADER] ? caps->ps_version : 0; @@ -65,10 +65,10 @@ index e306694533..4f7cc772be 100644 caps->varying_count = gl_info->limits.glsl_varyings; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index b09811b845..51b5cc4ac7 100644 +index ba6de78f701..23e648fa953 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -173,6 +173,7 @@ struct wined3d_d3d_limits +@@ -186,6 +186,7 @@ struct wined3d_d3d_limits { unsigned int vs_version, hs_version, ds_version, gs_version, ps_version, cs_version; DWORD vs_uniform_count; @@ -77,17 +77,17 @@ index b09811b845..51b5cc4ac7 100644 unsigned int varying_count; unsigned int ffp_textures; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index 1199408ec6..3606c4e245 100644 +index cfd8eecdcca..6cf2cc12e46 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -1602,6 +1602,7 @@ enum wined3d_shader_type +@@ -1610,6 +1610,7 @@ enum wined3d_pipeline #define WINED3D_MAX_CONSTS_B 16 #define WINED3D_MAX_CONSTS_I 16 #define WINED3D_MAX_VS_CONSTS_F 256 +#define WINED3D_MAX_VS_CONSTS_F_SWVP 8192 #define WINED3D_MAX_PS_CONSTS_F 224 #define WINED3D_MAX_RENDER_TARGETS 8 - + #define WINED3D_MAX_CONSTANT_BUFFER_SIZE 4096 -- -2.25.1 +2.30.2 diff --git a/staging/upstream-commit b/staging/upstream-commit index 44179cb4..0449628e 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -49cde0995827b24aa9c1ef1b6a0372797f4166e0 +d60c450c7be196c2072f74e34f7760d39e3bad32