On Sun, Jul 05, 2020 at 10:02:39PM -0600, Thomas Frohwein wrote:
> Hi,
>
> Below is the update to latest vulkan sdk versions 1.2.141.0 from end of
> May. Pass portcheck and make port-lib-depends-check. The 'make test'
> for glslang still shows the same error as previously [1].
> vkcube, vkcubepp, and vkquake run without problems on this Intel
> Skylake machine. vulkaninfo does it's job, but complains about not
> being able to identify the executable, probably because of the stub
> needed for loader_platform_executable_path().
>
> This is largely base on jsg@'s diff from April [2], but updated for the
> latest SDK. Also some help from brynet@ with vulkan-loader as detailed
> below.
>
> I'm aware of the issue with aarch64 build failures and the workaround
> that led to problems with i386 [3] and would like to tackle this
> separately after this update.
>
> A few bulletpoints to highlight about the update:
>
> - add COMPILER to spirv-headers as it uses C++ (seen in my build log)
> - NO_BUILD=Yes for vulkan-headers, as there is nothing to build
> - libvulkan now uses alloca(3) (unfortunately). The define to
> __builtin_alloca doesn't get picked up from stdlib.h, therefore added
> the line to vk_loader_platform.h. Discussed this with brynet@; a
> replacement with malloc is likely non-trivial. Maybe in the future
> this can be revisited.
The problem here is it builds with _XOPEN_SOURCE=500 which changes
alloca() visibility. A better way of handling this would be to patch
out the places which do this, diff below.
> - loader_platform_executable_path() is meant to return the path of the
> running executable, on Linux done via procfs. Just stubbed it to
> return NULL as we don't have that functionality. If other ports
> depend on this, it will likely need to be hardcoded in the respective
> ports (none known so far).
> - update MODPY_VERSION for vulkan-tools to 3.8
> (MODPY_DEFAULT_VERSION_3); builds and runs fine here.
>
> Testing welcome, as this is a more complex update. vulkan should run on
> any amdgpu or newer Intel (>= Braswell) GPU.
>= Broadwell / gen 8 on Intel, shows in dmesg now
inteldrm0: msi, BROADWELL, gen 8
> Other applications that can use vulkan other than the ones tested so
> far are emulators/ppsspp and emulators/dolphin.
>
> ok?
It would be great to get this in, I think we should not go with the
__builtin_alloca define as discussed earlier but otherwise looks good.
I can try help with the aarch64 build after it is in.
ok jsg@ if you drop the alloca define and add this
--- CMakeLists.txt.orig Mon Jul 6 16:37:26 2020
+++ CMakeLists.txt Mon Jul 6 16:40:03 2020
@@ -170,7 +170,6 @@ else(UNIX AND NOT APPLE) # i.e.: Linux
target_link_libraries(asm_offset Vulkan::Headers)
add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND
asm_offset GAS)
add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm)
- target_compile_definitions(asm_offset PRIVATE _XOPEN_SOURCE=500) #
hush compiler warnings for readlink
else()
message(WARNING "Could not find working x86 GAS
assembler\n${ASM_FAILURE_MSG}")
set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain.c)
@@ -290,8 +289,6 @@ else()
endif()
if(NOT APPLE)
- target_compile_definitions(vulkan PRIVATE _XOPEN_SOURCE=500) # hush
compiler warnings for readlink
-
# Generate pkg-config file.
include(FindPkgConfig QUIET)
if(PKG_CONFIG_FOUND)