gfxstream: enable kumquat building on Windows

This adds several fixes so that kumquat can build.

TEST=meson setup -Dvulkan-drivers="gfxstream" -Dgallium-drivers="" \
                 -Dzlib=false -Dopengl=false -Degl=false \
                 -Dvirtgpu_kumquat=true
                 --cross-file ${CROSS_PATH}

Reviewed-by: David Gilhooley <djgilhooley.gmail.com>
This commit is contained in:
Gurchetan Singh
2025-09-26 14:34:02 -07:00
parent 3a16b69337
commit 62d0957a3b
2 changed files with 9 additions and 2 deletions

View File

@@ -4,7 +4,6 @@
*/
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <cerrno>

View File

@@ -17,6 +17,8 @@
#if DETECT_OS_WINDOWS
#include <io.h>
#include "vulkan/vulkan_win32.h"
#define VK_LIBNAME "vulkan-1.dll"
#else
#include <unistd.h>
@@ -207,16 +209,22 @@ GfxStreamVulkanMapper* GfxStreamVulkanMapper::getInstance(std::optional<DeviceId
// useful, but not safe for multi-threaded tests. For now, since this is only
// used for end2end tests, we should be good.
const char* driver = os_get_option(VK_ICD_FILENAMES);
// HACK: Need equivalents on Windows
#if DETECT_OS_LINUX
unsetenv(VK_ICD_FILENAMES);
#endif
sVkMapper = std::make_unique<GfxStreamVulkanMapper>();
if (!sVkMapper->initialize(*deviceIdOpt)) {
sVkMapper = nullptr;
return nullptr;
}
#if DETECT_OS_LINUX
if (driver) {
setenv(VK_ICD_FILENAMES, driver, 1);
}
#endif
}
return sVkMapper.get();
@@ -234,7 +242,7 @@ int32_t GfxStreamVulkanMapper::map(struct VulkanMapperData* mapData) {
VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
0,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
static_cast<HANDLE>(mapData->handle),
reinterpret_cast<HANDLE>(mapData->handle),
L"",
};