Skip to content

Commit 797414f

Browse files
import upstream changes
1 parent b7fc41b commit 797414f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+31512
-11589
lines changed

Makefile.in

+54-40
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ SHELL := /bin/bash
2525
# BUILD_NAME - Name of the build for manifests etc.
2626
# STEAMRT_IMAGE - Name of the docker image to use for building
2727

28-
STEAMRT_IMAGE ?= registry.gitlab.steamos.cloud/proton/sniper/sdk:0.20230905.59202-0
28+
STEAMRT_IMAGE ?= registry.gitlab.steamos.cloud/proton/sniper/sdk:0.20240307.80401-0
2929
ifeq ($(SRCDIR),)
3030
foo := $(error SRCDIR not set, do not include Makefile.in directly, run ./configure.sh to generate Makefile)
3131
endif
3232

33+
SOURCE_DATE_EPOCH ?= $(shell date +%s)
34+
MFLAGS += BASE_SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH)
35+
unexport SOURCE_DATE_EPOCH
36+
3337
DST_BASE := $(OBJ)/dist
3438
DST_DIR := $(DST_BASE)/files
3539
DST_LIBDIR32 := $(DST_DIR)/lib
@@ -72,6 +76,9 @@ $(DST_DIR):
7276
mkdir -p $@
7377

7478
ifeq ($(CONTAINER),1) # inside the container
79+
BASE_SOURCE_DATE_EPOCH32 := $(BASE_SOURCE_DATE_EPOCH)
80+
BASE_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH) - 10)
81+
7582
# all, all-dist and dist are basically synonyms
7683
.PHONY: all all-dist dist
7784
all: all-dist | $(DST_DIR)
@@ -215,6 +222,7 @@ FFMPEG_CONFIGURE_ARGS := \
215222
--disable-everything \
216223
--disable-programs \
217224
--disable-doc \
225+
--disable-inline-asm \
218226

219227
$(eval $(call rules-source,ffmpeg,$(SRCDIR)/ffmpeg))
220228
$(eval $(call rules-configure,ffmpeg,32))
@@ -450,6 +458,10 @@ $(eval $(call rules-makedep,vrclient,64))
450458
## dxvk
451459
##
452460

461+
# wine builds DLLs with the same names, we need to differentiate the timestamps
462+
DXVK_SOURCE_DATE_EPOCH32 := $(shell expr $(BASE_SOURCE_DATE_EPOCH32) - 1)
463+
DXVK_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH64) - 1)
464+
453465
DXVK_MESON_ARGS32 = --bindir=$(DXVK_DST32)/lib/wine/dxvk
454466
DXVK_MESON_ARGS64 = --bindir=$(DXVK_DST64)/lib64/wine/dxvk
455467
DXVK_DEPENDS = glslang
@@ -519,6 +531,7 @@ VKD3D_CONFIGURE_ARGS = \
519531
--disable-tests \
520532
--disable-demos \
521533
--without-ncurses \
534+
SONAME_LIBVULKAN=vulkan-1 \
522535

523536
VKD3D_LDFLAGS = -static-libgcc $(CROSSLDFLAGS)
524537
VKD3D_DEPENDS = vulkan-loader vulkan-headers spirv-headers
@@ -543,6 +556,10 @@ $(OBJ)/.vkd3d-post-build32:
543556
## vkd3d-proton
544557
##
545558

559+
# wine builds DLLs with the same names, we need to differentiate the timestamps
560+
VKD3D_PROTON_SOURCE_DATE_EPOCH32 := $(shell expr $(BASE_SOURCE_DATE_EPOCH32) - 2)
561+
VKD3D_PROTON_SOURCE_DATE_EPOCH64 := $(shell expr $(BASE_SOURCE_DATE_EPOCH64) - 2)
562+
546563
VKD3D_PROTON_SOURCE_ARGS = \
547564
--exclude vkd3d_build.h.in \
548565
--exclude vkd3d_version.h.in \
@@ -578,27 +595,6 @@ $(OBJ)/.vkd3d-proton-post-build64:
578595

579596

580597

581-
##
582-
## mediaconv
583-
##
584-
585-
MEDIACONV_DEPENDS = gst_orc gstreamer gst_base
586-
587-
$(eval $(call rules-source,mediaconv,$(SRCDIR)/media-converter))
588-
$(eval $(call rules-cargo,mediaconv,32))
589-
$(eval $(call rules-cargo,mediaconv,64))
590-
591-
$(OBJ)/.mediaconv-post-build64:
592-
mkdir -p $(MEDIACONV_DST64)/lib64/gstreamer-1.0/
593-
cp -a $(MEDIACONV_OBJ64)/x86_64-unknown-linux-gnu/release/libprotonmediaconverter.so $(MEDIACONV_DST64)/lib64/gstreamer-1.0/
594-
touch $@
595-
596-
$(OBJ)/.mediaconv-post-build32:
597-
mkdir -p $(MEDIACONV_DST32)/lib/gstreamer-1.0/
598-
cp -a $(MEDIACONV_OBJ32)/i686-unknown-linux-gnu/release/libprotonmediaconverter.so $(MEDIACONV_DST32)/lib/gstreamer-1.0/
599-
touch $@
600-
601-
602598
##
603599
## BattlEye Bridge
604600
##
@@ -671,23 +667,6 @@ $(OBJ)/.eac-build32:
671667

672668
endif
673669

674-
# HACK: we need to order those builds so that timestamps are different between
675-
# 32 and 64 bit versions of the dlls. Otherwise there's a significant chance for
676-
# conflict when creating symbol storage. We also have to make sure that projects
677-
# which build alternative versions of the DLLs do not share the same timestamps.
678-
#
679-
# This is a temporary solution that only lowers the chance of conflicts.
680-
# Binutils 2.42 (not released yet at the time of writing this) will introduce
681-
# support for SOURCE_DATE_EPOCH which we should use instead.
682-
$(OBJ)/.wine-build64: $(OBJ)/.wine-build32
683-
$(OBJ)/.vkd3d-proton-build32: $(OBJ)/.wine-build64
684-
$(OBJ)/.vkd3d-proton-build64: $(OBJ)/.vkd3d-proton-build32
685-
$(OBJ)/.dxvk-build32: $(OBJ)/.wine-build64
686-
$(OBJ)/.dxvk-build64: $(OBJ)/.dxvk-build32
687-
$(OBJ)/.dxvk-lsteamclient64: $(OBJ)/.dxvk-lsteamclient32
688-
$(OBJ)/.vkd3d-build64: $(OBJ)/.vkd3d-build32
689-
# nvapi and vrclient dlls have distinct names for 64 bit versions
690-
691670
##
692671
## Windows Symbol Store creation
693672
##
@@ -709,6 +688,18 @@ symstore-tarball:
709688
$(SYMSTORE_OBJ64)/symstore --skip-managed $(DST_BASE) $(OBJ)/symstore/$(BUILD_NAME)
710689
cd $(OBJ)/symstore/$(BUILD_NAME) && zip -r ../$(BUILD_NAME)-symstore.zip . >& /dev/null
711690

691+
##
692+
## Media
693+
##
694+
695+
DIST_MEDIA := $(DST_DIR)/share/media
696+
$(DIST_MEDIA):
697+
mkdir -p $@
698+
cp $(SRCDIR)/media/blank.mkv $@
699+
cp $(SRCDIR)/media/blank.ptna $@
700+
701+
all-dist: $(DIST_MEDIA)
702+
712703
##
713704
## Fonts
714705
##
@@ -958,7 +949,7 @@ all-dist: $(DIST_GECKO32) $(DIST_GECKO64)
958949
## wine-mono
959950
##
960951

961-
WINEMONO_VER := 9.0.0
952+
WINEMONO_VER := 9.1.0
962953
WINEMONO_TARBALL := wine-mono-$(WINEMONO_VER)-x86.tar.xz
963954
DIST_WINEMONO_DIR := $(DST_DIR)/share/wine/mono
964955
DIST_WINEMONO := $(OBJ)/.wine-mono-dist
@@ -977,6 +968,29 @@ $(DIST_WINEMONO): $(SRC)/contrib/$(WINEMONO_TARBALL)
977968
all-dist: $(DIST_WINEMONO)
978969

979970

971+
##
972+
## xalia
973+
##
974+
975+
XALIA_VER := 0.4.2
976+
XALIA_ZIP := xalia-$(XALIA_VER)-net48-mono.zip
977+
DIST_XALIA_DIR := $(DST_DIR)/share/xalia
978+
DIST_XALIA := $(OBJ)/.xalia-dist
979+
XALIA_ZIP_URL := https://github.com/madewokherd/xalia/releases/download/xalia-$(XALIA_VER)/$(XALIA_ZIP)
980+
981+
$(SRC)/contrib/$(XALIA_ZIP):
982+
mkdir -p $(dir $@)
983+
wget --no-use-server-timestamps -O $@ $(XALIA_ZIP_URL) || (rm $@; false)
984+
985+
$(DIST_XALIA): $(SRC)/contrib/$(XALIA_ZIP)
986+
rm -rf $(DIST_XALIA_DIR)
987+
mkdir -p $(DIST_XALIA_DIR)
988+
unzip $< -d $(DIST_XALIA_DIR)
989+
touch $@
990+
991+
all-dist: $(DIST_XALIA)
992+
993+
980994
##
981995
## openvr
982996
##

OpenXR-SDK

Submodule OpenXR-SDK updated 141 files

docker/Makefile

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
STEAMRT_VERSION = 0.20230905.59202
1+
STEAMRT_VERSION = 0.20240307.80401
22
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
33

44
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/sniper/sdk
@@ -9,7 +9,7 @@ PROTONSDK_VERSION = $(STEAMRT_VERSION)-0-dev
99
# docker caches, so we need something that don't change much
1010
BASE_IMAGE = $(STEAMRT_URLBASE)/steamrt/sniper/sdk:0.20221017.1
1111

12-
BINUTILS_VERSION = 2.40
12+
BINUTILS_VERSION = 2.42
1313
GCC_VERSION = 10.3.0
1414
MINGW_VERSION = 9.0.0
1515
RUST_VERSION = 1.68.0
@@ -29,7 +29,7 @@ RUST_SOURCE_x86_64 = rust-$(RUST_VERSION)-x86_64-unknown-linux-gnu.tar.gz
2929
RUST_SOURCE_i686 = rust-$(RUST_VERSION)-i686-unknown-linux-gnu.tar.gz
3030
NINJA_SOURCE = ninja-build_$(NINJA_VERSION).orig.tar.gz
3131

32-
BINUTILS_SHA256 = 0f8a4c272d7f17f369ded10a4aca28b8e304828e95526da482b0ccc4dfc9d8e1
32+
BINUTILS_SHA256 = f6e4d41fd5fc778b06b7891457b3620da5ecea1006c6a4a41ae998109f85a800
3333
GCC_SHA256 = 64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344
3434
MINGW_SHA256 = 1929b94b402f5ff4d7d37a9fe88daa9cc55515a6134805c104d1794ae22a4181
3535
RUST_SHA256_x86_64 = 7be1acdac656d0b0b7e909e5c0d4ddf61c755c203ec26ebafbd306322335b361

dxvk

Submodule dxvk updated 123 files

lsteamclient/Makefile.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MODULE = lsteamclient.dll
22
UNIXLIB = lsteamclient.so
3-
IMPORTS = user32
3+
IMPORTS = user32 ws2_32
44

55
EXTRADEFS = -DWINE_NO_LONG_TYPES -DSTEAM_API_EXPORTS -Dprivate=public -Dprotected=public
66

lsteamclient/steam_networking_manual.c

+15-3
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,11 @@ static BOOL networking_message_pool_receive_144( int32_t capacity, int32_t count
8888
struct networking_message_pool *pool = CONTAINING_RECORD( messages[0], struct networking_message, w_msg_144 )->pool;
8989
int32_t i;
9090

91-
for (i = count; i < capacity; i++) messages[i]->m_pfnRelease( messages[i] );
91+
for (i = count; i < capacity; i++)
92+
{
93+
messages[i]->m_pfnRelease( messages[i] );
94+
messages[i] = NULL;
95+
}
9296

9397
if (count > 0)
9498
{
@@ -156,7 +160,11 @@ static BOOL networking_message_pool_receive_147( uint32_t capacity, uint32_t cou
156160
struct networking_message_pool *pool = CONTAINING_RECORD( messages[0], struct networking_message, w_msg_147 )->pool;
157161
uint32_t i;
158162

159-
for (i = count; i < capacity; i++) messages[i]->m_pfnRelease( messages[i] );
163+
for (i = count; i < capacity; i++)
164+
{
165+
messages[i]->m_pfnRelease( messages[i] );
166+
messages[i] = NULL;
167+
}
160168

161169
if (count)
162170
{
@@ -224,7 +232,11 @@ static BOOL networking_message_pool_receive_153a( uint32_t capacity, uint32_t co
224232
struct networking_message_pool *pool = CONTAINING_RECORD( messages[0], struct networking_message, w_msg_153a )->pool;
225233
uint32_t i;
226234

227-
for (i = count; i < capacity; i++) messages[i]->m_pfnRelease( messages[i] );
235+
for (i = count; i < capacity; i++)
236+
{
237+
messages[i]->m_pfnRelease( messages[i] );
238+
messages[i] = NULL;
239+
}
228240

229241
if (count)
230242
{

lsteamclient/steamclient_main.c

+32-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "winnls.h"
1111
#include "winuser.h"
1212
#include "winternl.h"
13+
#include "winsock2.h"
1314

1415
#include "steamclient_private.h"
1516

@@ -49,6 +50,7 @@ static char temp_path_buffer[TEMP_PATH_BUFFER_LENGTH];
4950

5051
static CRITICAL_SECTION steamclient_cs = { NULL, -1, 0, 0, 0, 0 };
5152
static HANDLE steam_overlay_event;
53+
static BOOL wsa_initialized;
5254

5355
BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
5456
{
@@ -67,12 +69,30 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
6769
break;
6870
case DLL_PROCESS_DETACH:
6971
CloseHandle(steam_overlay_event);
72+
if (wsa_initialized)
73+
{
74+
WSACleanup();
75+
wsa_initialized = FALSE;
76+
}
7077
break;
7178
}
7279

7380
return TRUE;
7481
}
7582

83+
NTSTATUS steamclient_call( unsigned int code, void *args, const char *name )
84+
{
85+
NTSTATUS status = WINE_UNIX_CALL( code, args );
86+
87+
if (status == STATUS_ACCESS_VIOLATION)
88+
{
89+
ERR( "Access violation in %s.\n", name );
90+
RaiseException( status, 0, 0, NULL );
91+
}
92+
if (status) WARN( "%s failed, status %#x\n", name, (UINT)status );
93+
return status;
94+
}
95+
7696
static BYTE *alloc_start, *alloc_end;
7797

7898
static int8_t allocated_from_steamclient_dll( void *ptr )
@@ -334,6 +354,14 @@ static int load_steamclient(void)
334354
params.ignore_child_processes = ignore_child_processes;
335355

336356
if (STEAMCLIENT_CALL( steamclient_init, &params )) return 0;
357+
if (!wsa_initialized)
358+
{
359+
/* Some games depend on winsocks being initialized after initializing Steam API. */
360+
WSADATA data;
361+
362+
WSAStartup(0x202, &data);
363+
wsa_initialized = TRUE;
364+
}
337365
return 1;
338366
}
339367

@@ -359,12 +387,12 @@ void execute_pending_callbacks(void)
359387
{
360388
case SOCKETS_DEBUG_OUTPUT:
361389
TRACE( "SOCKETS_DEBUG_OUTPUT func %p, type %u, msg %s.\n", params.callback->sockets_debug_output.pfnFunc,
362-
params.callback->sockets_debug_output.type, wine_dbgstr_a( params.callback->sockets_debug_output.msg ) );
390+
params.callback->sockets_debug_output.type, debugstr_a( params.callback->sockets_debug_output.msg ) );
363391
params.callback->sockets_debug_output.pfnFunc( params.callback->sockets_debug_output.type, params.callback->sockets_debug_output.msg );
364392
break;
365393
case WARNING_MESSAGE_HOOK:
366394
TRACE( "WARNING_MESSAGE_HOOK func %p, severity %d, msg %s.\n", params.callback->warning_message_hook.pFunction,
367-
params.callback->warning_message_hook.severity, wine_dbgstr_a( params.callback->warning_message_hook.msg ) );
395+
params.callback->warning_message_hook.severity, debugstr_a( params.callback->warning_message_hook.msg ) );
368396
params.callback->warning_message_hook.pFunction( params.callback->warning_message_hook.severity, params.callback->warning_message_hook.msg );
369397
break;
370398
case CALL_CDECL_FUNC_DATA:
@@ -398,15 +426,15 @@ void execute_pending_callbacks(void)
398426
break;
399427
case CALL_IFACE_VTABLE_0_ADD_PLAYER_TO_LIST:
400428
TRACE( "CALL_IFACE_VTABLE_0_ADD_PLAYER_TO_LIST iface %p, name %s, score %u, time_played %f.\n", params.callback->add_player_to_list.iface,
401-
params.callback->add_player_to_list.name, params.callback->add_player_to_list.score, params.callback->add_player_to_list.time_played );
429+
debugstr_a( params.callback->add_player_to_list.name ), params.callback->add_player_to_list.score, params.callback->add_player_to_list.time_played );
402430
CALL_VTBL_FUNC( params.callback->add_player_to_list.iface, 0, void, (void *, const char *, int32_t, float), (params.callback->add_player_to_list.iface,
403431
params.callback->add_player_to_list.name, params.callback->add_player_to_list.score, params.callback->add_player_to_list.time_played) );
404432
break;
405433
case CALL_IFACE_VTABLE_0_RULES_RESPONDED:
406434
{
407435
const char *value = params.callback->rules_responded.rule_and_value + strlen( params.callback->rules_responded.rule_and_value ) + 1;
408436
TRACE( "CALL_IFACE_VTABLE_0_RULES_RESPONDED iface %p, rule %s, value %s.\n", params.callback->rules_responded.iface,
409-
params.callback->rules_responded.rule_and_value, value );
437+
debugstr_a( params.callback->rules_responded.rule_and_value ), debugstr_a( value ) );
410438
CALL_VTBL_FUNC( params.callback->rules_responded.iface, 0, void, (void *, const char *, const char *), (params.callback->rules_responded.iface,
411439
params.callback->rules_responded.rule_and_value, value) );
412440
break;

0 commit comments

Comments
 (0)