fix: change various definitions for x86 support

This commit is contained in:
PancakeTAS 2025-12-25 21:43:15 +01:00
parent b2928e4ce6
commit ceff118e8a
No known key found for this signature in database
17 changed files with 68 additions and 71 deletions

View file

@ -3,6 +3,7 @@
#include "dll_reader.hpp"
#include "lsfg-vk-common/helpers/errors.hpp"
#include <ios>
#include <unordered_map>
#include <filesystem>
#include <algorithm>
@ -103,7 +104,7 @@ std::unordered_map<uint32_t, std::vector<uint8_t>> backend::extractResourcesFrom
if (!file.is_open())
throw ls::error("failed to open dll file");
const auto size = file.tellg();
const std::streamsize size = static_cast<std::streamsize>(file.tellg());
file.seekg(0, std::ios::beg);
std::vector<uint8_t> data(static_cast<size_t>(size));

View file

@ -139,7 +139,7 @@ Instance::Instance(
for (const auto& device : devices) {
// check if the physical device supports VK_EXT_pci_bus_info
uint32_t ext_count{};
funcs.EnumerateDeviceExtensionProperties(device, nullptr, &ext_count, nullptr);
funcs.EnumerateDeviceExtensionProperties(device, nullptr, &ext_count, VK_NULL_HANDLE);
std::vector<VkExtensionProperties> extensions(ext_count);
funcs.EnumerateDeviceExtensionProperties(device, nullptr, &ext_count, extensions.data());
@ -610,7 +610,7 @@ void Context::scheduleFrames() {
cmdbuf.submit(this->ctx.vk,
{}, this->prepassSemaphore.handle(), this->idx - 1,
{}, this->syncSemaphore.handle(), this->idx + i,
i == this->destImages.size() - 1 ? this->cmdbufFence.handle() : nullptr
i == this->destImages.size() - 1 ? this->cmdbufFence.handle() : VK_NULL_HANDLE
);
}

View file

@ -39,7 +39,7 @@ namespace {
if (!file.is_open())
throw ls::error("ifstream::ifstream() failed");
std::streamsize size = file.tellg();
std::streamsize size = static_cast<std::streamsize>(file.tellg());
size -= 124 + 4; // dds header and magic bytes
std::vector<char> code(static_cast<size_t>(size));

View file

@ -90,7 +90,7 @@ namespace vk {
VkSemaphore waitTimelineSemaphore, uint64_t waitValue,
std::vector<VkSemaphore> signalSemaphores,
VkSemaphore signalTimelineSemaphore, uint64_t signalValue,
VkFence fence = nullptr) const;
VkFence fence = VK_NULL_HANDLE) const;
/// submit the command buffer instantly
/// @param vk the vulkan instance

View file

@ -27,14 +27,14 @@ namespace {
.usage = usage,
.sharingMode = VK_SHARING_MODE_EXCLUSIVE
};
auto res = vk.df().CreateBuffer(vk.dev(), &bufferInfo, nullptr, &handle);
auto res = vk.df().CreateBuffer(vk.dev(), &bufferInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateBuffer() failed");
return ls::owned_ptr<VkBuffer>(
new VkBuffer(handle),
[dev = vk.dev(), defunc = vk.df().DestroyBuffer](VkBuffer& buffer) {
defunc(dev, buffer, nullptr);
defunc(dev, buffer, VK_NULL_HANDLE);
}
);
}
@ -57,7 +57,7 @@ namespace {
.allocationSize = reqs.size,
.memoryTypeIndex = *mti
};
auto res = vk.df().AllocateMemory(vk.dev(), &memoryInfo, nullptr, &handle);
auto res = vk.df().AllocateMemory(vk.dev(), &memoryInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkAllocateMemory() failed");
@ -68,7 +68,7 @@ namespace {
return ls::owned_ptr<VkDeviceMemory>(
new VkDeviceMemory(handle),
[dev = vk.dev(), defunc = vk.df().FreeMemory](VkDeviceMemory& memory) {
defunc(dev, memory, nullptr);
defunc(dev, memory, VK_NULL_HANDLE);
}
);
}

View file

@ -70,8 +70,8 @@ void CommandBuffer::insertBarriers(const vk::Vulkan& vk,
vk.df().CmdPipelineBarrier(*this->commandBuffer,
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
0,
0, nullptr,
0, nullptr,
0, VK_NULL_HANDLE,
0, VK_NULL_HANDLE,
static_cast<uint32_t>(barriers.size()), barriers.data()
);
}
@ -85,8 +85,8 @@ void CommandBuffer::dispatch(const vk::Vulkan& vk,
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
0,
0, nullptr,
0, nullptr,
0, VK_NULL_HANDLE,
0, VK_NULL_HANDLE,
static_cast<uint32_t>(barriers.size()), barriers.data()
);
vk.df().CmdBindPipeline(*this->commandBuffer,
@ -97,7 +97,7 @@ void CommandBuffer::dispatch(const vk::Vulkan& vk,
VK_PIPELINE_BIND_POINT_COMPUTE,
shader.pipelinelayout(),
0, 1, &set.handle(),
0, nullptr
0, VK_NULL_HANDLE
);
vk.df().CmdDispatch(*this->commandBuffer, x, y, z);
}
@ -109,8 +109,8 @@ void CommandBuffer::blitImage(const vk::Vulkan& vk,
vk.df().CmdPipelineBarrier(*this->commandBuffer,
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
0,
0, nullptr,
0, nullptr,
0, VK_NULL_HANDLE,
0, VK_NULL_HANDLE,
static_cast<uint32_t>(preBarriers.size()), preBarriers.data()
);
@ -144,8 +144,8 @@ void CommandBuffer::blitImage(const vk::Vulkan& vk,
vk.df().CmdPipelineBarrier(*this->commandBuffer,
VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
0,
0, nullptr,
0, nullptr,
0, VK_NULL_HANDLE,
0, VK_NULL_HANDLE,
static_cast<uint32_t>(postBarriers.size()), postBarriers.data()
);
}
@ -168,8 +168,8 @@ void CommandBuffer::copyBufferToImage(const vk::Vulkan& vk,
vk.df().CmdPipelineBarrier(*this->commandBuffer,
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
0,
0, nullptr,
0, nullptr,
0, VK_NULL_HANDLE,
0, VK_NULL_HANDLE,
1, &barrier
);

View file

@ -43,14 +43,14 @@ namespace {
.poolSizeCount = static_cast<uint32_t>(poolCounts.size()),
.pPoolSizes = poolCounts.data()
};
auto res = vk.df().CreateDescriptorPool(vk.dev(), &descpoolInfo, nullptr, &handle);
auto res = vk.df().CreateDescriptorPool(vk.dev(), &descpoolInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateDescriptorPool() failed");
return ls::owned_ptr<VkDescriptorPool>(
new VkDescriptorPool(handle),
[dev = vk.dev(), defunc = vk.df().DestroyDescriptorPool](VkDescriptorPool& pool) {
defunc(dev, pool, nullptr);
defunc(dev, pool, VK_NULL_HANDLE);
}
);
}

View file

@ -24,12 +24,11 @@ namespace {
const vk::DescriptorPool& pool, const vk::Shader& shader) {
VkDescriptorSet handle{};
auto* layout = shader.descriptorlayout();
const VkDescriptorSetAllocateInfo setInfo{
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
.descriptorPool = pool.handle(),
.descriptorSetCount = 1,
.pSetLayouts = &layout
.pSetLayouts = &shader.descriptorlayout()
};
auto res = vk.df().AllocateDescriptorSets(vk.dev(), &setInfo, &handle);
if (res != VK_SUCCESS)
@ -126,5 +125,5 @@ DescriptorSet::DescriptorSet(const vk::Vulkan& vk,
});
vk.df().UpdateDescriptorSets(vk.dev(),
static_cast<uint32_t>(entries.size()), entries.data(), 0, nullptr);
static_cast<uint32_t>(entries.size()), entries.data(), 0, VK_NULL_HANDLE);
}

View file

@ -19,14 +19,14 @@ namespace {
const VkFenceCreateInfo fenceInfo{
.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
};
auto res = vk.df().CreateFence(vk.dev(), &fenceInfo, nullptr, &handle);
auto res = vk.df().CreateFence(vk.dev(), &fenceInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateFence() failed");
return ls::owned_ptr<VkFence>(
new VkFence(handle),
[dev = vk.dev(), defunc = vk.df().DestroyFence](VkFence& fence) {
defunc(dev, fence, nullptr);
defunc(dev, fence, VK_NULL_HANDLE);
}
);
}
@ -36,15 +36,13 @@ Fence::Fence(const vk::Vulkan& vk)
: fence(createFence(vk)) {}
void Fence::reset(const vk::Vulkan& vk) const {
VkFence fence = *this->fence;
auto res = vk.df().ResetFences(vk.dev(), 1, &fence);
auto res = vk.df().ResetFences(vk.dev(), 1, &*this->fence);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkResetFences() failed");
}
bool Fence::wait(const vk::Vulkan& vk, uint64_t timeout) const {
VkFence fence = *this->fence;
auto res = vk.df().WaitForFences(vk.dev(), 1, &fence, VK_TRUE, timeout);
auto res = vk.df().WaitForFences(vk.dev(), 1, &*this->fence, VK_TRUE, timeout);
if (res != VK_SUCCESS && res != VK_TIMEOUT)
throw ls::vulkan_error(res, "vkWaitForFences() failed");

View file

@ -39,14 +39,14 @@ namespace {
.usage = usage,
.sharingMode = VK_SHARING_MODE_EXCLUSIVE
};
auto res = vk.df().CreateImage(vk.dev(), &imageInfo, nullptr, &handle);
auto res = vk.df().CreateImage(vk.dev(), &imageInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateImage() failed");
return ls::owned_ptr<VkImage>(
new VkImage(handle),
[dev = vk.dev(), defunc = vk.df().DestroyImage](VkImage& image) {
defunc(dev, image, nullptr);
defunc(dev, image, VK_NULL_HANDLE);
}
);
}
@ -91,7 +91,7 @@ namespace {
.allocationSize = reqs.size,
.memoryTypeIndex = *mti
};
auto res = vk.df().AllocateMemory(vk.dev(), &memoryInfo, nullptr, &handle);
auto res = vk.df().AllocateMemory(vk.dev(), &memoryInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkAllocateMemory() failed");
@ -115,7 +115,7 @@ namespace {
return ls::owned_ptr<VkDeviceMemory>(
new VkDeviceMemory(handle),
[dev = vk.dev(), defunc = vk.df().FreeMemory](VkDeviceMemory& memory) {
defunc(dev, memory, nullptr);
defunc(dev, memory, VK_NULL_HANDLE);
}
);
}
@ -137,14 +137,14 @@ namespace {
.layerCount = 1
}
};
auto res = vk.df().CreateImageView(vk.dev(), &viewInfo, nullptr, &handle);
auto res = vk.df().CreateImageView(vk.dev(), &viewInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateImageView() failed");
return ls::owned_ptr<VkImageView>(
new VkImageView(handle),
[dev = vk.dev(), defunc = vk.df().DestroyImageView](VkImageView& view) {
defunc(dev, view, nullptr);
defunc(dev, view, VK_NULL_HANDLE);
}
);
}

View file

@ -29,14 +29,14 @@ namespace {
white ? VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
: VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
};
auto res = vk.df().CreateSampler(vk.dev(), &samplerInfo, nullptr, &handle);
auto res = vk.df().CreateSampler(vk.dev(), &samplerInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateSampler() failed");
return ls::owned_ptr<VkSampler>(
new VkSampler(handle),
[dev = vk.dev(), defunc = vk.df().DestroySampler](VkSampler& sampler) {
defunc(dev, sampler, nullptr);
defunc(dev, sampler, VK_NULL_HANDLE);
}
);
}

View file

@ -24,7 +24,7 @@ namespace {
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
.pNext = fd.has_value() ? &exportInfo : nullptr
};
auto res = vk.df().CreateSemaphore(vk.dev(), &semaphoreInfo, nullptr, &handle);
auto res = vk.df().CreateSemaphore(vk.dev(), &semaphoreInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateSemaphore() failed");
@ -44,7 +44,7 @@ namespace {
return ls::owned_ptr<VkSemaphore>(
new VkSemaphore(handle),
[dev = vk.dev(), defunc = vk.df().DestroySemaphore](VkSemaphore& semaphore) {
defunc(dev, semaphore, nullptr);
defunc(dev, semaphore, VK_NULL_HANDLE);
}
);
}

View file

@ -25,14 +25,14 @@ namespace {
.codeSize = data_len,
.pCode = reinterpret_cast<const uint32_t*>(data)
};
auto res = vk.df().CreateShaderModule(vk.dev(), &shaderModuleInfo, nullptr, &handle);
auto res = vk.df().CreateShaderModule(vk.dev(), &shaderModuleInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateShaderModule() failed");
return ls::owned_ptr<VkShaderModule>(
new VkShaderModule(handle),
[dev = vk.dev(), defunc = vk.df().DestroyShaderModule](VkShaderModule& shaderModule) {
defunc(dev, shaderModule, nullptr);
defunc(dev, shaderModule, VK_NULL_HANDLE);
}
);
}
@ -80,7 +80,7 @@ namespace {
.bindingCount = static_cast<uint32_t>(bindings.size()),
.pBindings = bindings.data()
};
auto res = vk.df().CreateDescriptorSetLayout(vk.dev(), &info, nullptr, &handle);
auto res = vk.df().CreateDescriptorSetLayout(vk.dev(), &info, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateDescriptorSetLayout() failed");
@ -89,7 +89,7 @@ namespace {
[dev = vk.dev(), defunc = vk.df().DestroyDescriptorSetLayout](
VkDescriptorSetLayout& layout
) {
defunc(dev, layout, nullptr);
defunc(dev, layout, VK_NULL_HANDLE);
}
);
}
@ -104,14 +104,14 @@ namespace {
.setLayoutCount = 1,
.pSetLayouts = &descriptorLayout
};
auto res = vk.df().CreatePipelineLayout(vk.dev(), &layoutInfo, nullptr, &handle);
auto res = vk.df().CreatePipelineLayout(vk.dev(), &layoutInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreatePipelineLayout() failed");
return ls::owned_ptr<VkPipelineLayout>(
new VkPipelineLayout(handle),
[dev = vk.dev(), defunc = vk.df().DestroyPipelineLayout](VkPipelineLayout& layout) {
defunc(dev, layout, nullptr);
defunc(dev, layout, VK_NULL_HANDLE);
}
);
}
@ -134,14 +134,14 @@ namespace {
.layout = pipelineLayout
};
auto res = vk.df().CreateComputePipelines(vk.dev(),
vk.cache(), 1, &pipelineInfo, nullptr, &handle);
vk.cache(), 1, &pipelineInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateComputePipelines() failed");
return ls::owned_ptr<VkPipeline>(
new VkPipeline(handle),
[dev = vk.dev(), defunc = vk.df().DestroyPipeline](VkPipeline& pipeline) {
defunc(dev, pipeline, nullptr);
defunc(dev, pipeline, VK_NULL_HANDLE);
}
);
}

View file

@ -32,7 +32,7 @@ namespace {
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
.pNext = &typeInfo,
};
auto res = vk.df().CreateSemaphore(vk.dev(), &semaphoreInfo, nullptr, &handle);
auto res = vk.df().CreateSemaphore(vk.dev(), &semaphoreInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateSemaphore() failed");
@ -67,7 +67,7 @@ namespace {
return ls::owned_ptr<VkSemaphore>(
new VkSemaphore(handle),
[dev = vk.dev(), defunc = vk.df().DestroySemaphore](VkSemaphore& semaphore) {
defunc(dev, semaphore, nullptr);
defunc(dev, semaphore, VK_NULL_HANDLE);
}
);
}
@ -89,11 +89,10 @@ void TimelineSemaphore::signal(const vk::Vulkan& vk, uint64_t value) const {
}
bool TimelineSemaphore::wait(const vk::Vulkan& vk, uint64_t value, uint64_t timeout) const {
VkSemaphore semaphore = *this->semaphore;
const VkSemaphoreWaitInfo waitInfo{
.sType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
.semaphoreCount = 1,
.pSemaphores = &semaphore,
.pSemaphores = &*this->semaphore,
.pValues = &value
};
auto res = vk.df().WaitSemaphoresKHR(vk.dev(), &waitInfo, timeout);

View file

@ -66,7 +66,7 @@ namespace {
VkInstance handle{};
auto vkCreateInstance =
ipa<PFN_vkCreateInstance>(get_mpa(), nullptr, "vkCreateInstance");
ipa<PFN_vkCreateInstance>(get_mpa(), VK_NULL_HANDLE, "vkCreateInstance");
if (!vkCreateInstance)
throw ls::vulkan_error("failed to get vkCreateInstance symbol");
@ -82,7 +82,7 @@ namespace {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pApplicationInfo = &appInfo
};
auto res = vkCreateInstance(&instanceInfo, nullptr, &handle);
auto res = vkCreateInstance(&instanceInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateInstance() failed");
@ -93,7 +93,7 @@ namespace {
return ls::owned_ptr<VkInstance>(
new VkInstance(handle),
[defunc](VkInstance& instance) {
defunc(instance, nullptr);
defunc(instance, VK_NULL_HANDLE);
}
);
}
@ -103,7 +103,7 @@ namespace {
VkInstance instance,
PhysicalDeviceSelector filter) {
uint32_t phydevCount{};
auto res = fi.EnumeratePhysicalDevices(instance, &phydevCount, nullptr);
auto res = fi.EnumeratePhysicalDevices(instance, &phydevCount, VK_NULL_HANDLE);
if (res != VK_SUCCESS || phydevCount == 0)
throw ls::vulkan_error(res, "vkEnumeratePhysicalDevices() failed");
@ -123,7 +123,7 @@ namespace {
uint32_t findQFI(const VulkanInstanceFuncs& fi,
VkPhysicalDevice physdev, VkQueueFlags flags) {
uint32_t queueCount{};
fi.GetPhysicalDeviceQueueFamilyProperties(physdev, &queueCount, nullptr);
fi.GetPhysicalDeviceQueueFamilyProperties(physdev, &queueCount, VK_NULL_HANDLE);
std::vector<VkQueueFamilyProperties> queues(queueCount);
fi.GetPhysicalDeviceQueueFamilyProperties(physdev, &queueCount, queues.data());
@ -188,7 +188,7 @@ namespace {
.enabledExtensionCount = static_cast<uint32_t>(requestedExtensions.size()),
.ppEnabledExtensionNames = requestedExtensions.data()
};
auto res = fi.CreateDevice(physdev, &deviceInfo, nullptr, &handle);
auto res = fi.CreateDevice(physdev, &deviceInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateDevice() failed");
@ -199,7 +199,7 @@ namespace {
return ls::owned_ptr<VkDevice>(
new VkDevice(handle),
[defunc](VkDevice& device) {
defunc(device, nullptr);
defunc(device, VK_NULL_HANDLE);
}
);
}
@ -230,14 +230,14 @@ namespace {
.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,
.queueFamilyIndex = cfi
};
auto res = fd.CreateCommandPool(device, &cmdpoolInfo, nullptr, &handle);
auto res = fd.CreateCommandPool(device, &cmdpoolInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreateCommandPool() failed");
return ls::owned_ptr<VkCommandPool>(
new VkCommandPool(handle),
[dev = device, defunc = fd.DestroyCommandPool](VkCommandPool& pool) {
defunc(dev, pool, nullptr);
defunc(dev, pool, VK_NULL_HANDLE);
}
);
}
@ -248,7 +248,7 @@ namespace {
if (!file.is_open())
return;
const std::streamsize size = file.tellg();
const std::streamsize size = static_cast<std::streamsize>(file.tellg());
data = std::vector<uint8_t>(static_cast<size_t>(size));
file.seekg(0, std::ios::beg);
@ -271,14 +271,14 @@ namespace {
.initialDataSize = cache.size(),
.pInitialData = cache.data()
};
auto res = fd.CreatePipelineCache(device, &pipelineCacheInfo, nullptr, &handle);
auto res = fd.CreatePipelineCache(device, &pipelineCacheInfo, VK_NULL_HANDLE, &handle);
if (res != VK_SUCCESS)
throw ls::vulkan_error(res, "vkCreatePipelineCache() failed");
return ls::owned_ptr<VkPipelineCache>(
new VkPipelineCache(handle),
[dev = device, defunc = fd.DestroyPipelineCache](VkPipelineCache& cache) {
defunc(dev, cache, nullptr);
defunc(dev, cache, VK_NULL_HANDLE);
}
);
}

View file

@ -74,7 +74,7 @@ namespace {
// create instance
auto* vkCreateInstance = reinterpret_cast<PFN_vkCreateInstance>(
layer_info->GetInstanceProcAddr(nullptr, "vkCreateInstance"));
layer_info->GetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateInstance"));
if (!vkCreateInstance) {
std::cerr << "lsfg-vk: failed to get next layer's vkCreateInstance, "
"the previous layer does not follow spec\n";
@ -312,7 +312,7 @@ namespace {
// get all swapchain images
uint32_t imageCount{};
auto res = it->second.df().GetSwapchainImagesKHR(device, *swapchain,
&imageCount, nullptr);
&imageCount, VK_NULL_HANDLE);
if (res != VK_SUCCESS || imageCount == 0)
throw ls::vulkan_error(res, "vkGetSwapchainImagesKHR() failed");

View file

@ -159,7 +159,7 @@ VkResult Swapchain::present(const vk::Vulkan& vk,
}
// wait for completion of previous frame
if (this->fidx && !this->renderFence->wait(vk, 150UL * 1000 * 1000))
if (this->fidx && !this->renderFence->wait(vk, 150ULL * 1000 * 1000))
throw ls::vulkan_error(VK_TIMEOUT, "vkWaitForFences() failed");
this->renderFence->reset(vk);
@ -196,7 +196,7 @@ VkResult Swapchain::present(const vk::Vulkan& vk,
cmdbuf.end(vk);
cmdbuf.submit(vk,
semaphores, nullptr, 0,
semaphores, VK_NULL_HANDLE, 0,
{}, this->syncSemaphore->handle(), this->idx++
);
@ -262,8 +262,8 @@ VkResult Swapchain::present(const vk::Vulkan& vk,
cmdbuf.end(vk);
cmdbuf.submit(vk,
waitSemaphores, this->syncSemaphore->handle(), this->idx,
signalSemaphores, nullptr, 0,
i == this->destinationImages.size() - 1 ? this->renderFence->handle() : nullptr
signalSemaphores, VK_NULL_HANDLE, 0,
i == this->destinationImages.size() - 1 ? this->renderFence->handle() : VK_NULL_HANDLE
);
// present swapchain image