render pass first work
This commit is contained in:
@@ -276,7 +276,9 @@ CVkBuffer::CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlig
|
||||
|
||||
stBufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
stBufferInfo.size = nSize;
|
||||
stBufferInfo.pNext = &stUsage;
|
||||
stBufferInfo.usage = stUsage.usage;
|
||||
if (g_vkAvailableExtensions.bIsSupported_VK_KHR_MAINTENANCE_5)
|
||||
stBufferInfo.pNext = &stUsage;
|
||||
|
||||
stAllocInfo.usage = VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE;
|
||||
stAllocInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT;
|
||||
@@ -286,7 +288,12 @@ CVkBuffer::CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlig
|
||||
|
||||
stAddress.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO;
|
||||
stAddress.buffer = m_buffer;
|
||||
m_address = vkGetBufferDeviceAddress(s_vkDevice, &stAddress);
|
||||
if (vkGetBufferDeviceAddress)
|
||||
m_address = vkGetBufferDeviceAddress(s_vkDevice, &stAddress);
|
||||
else if (vkGetBufferDeviceAddressEXT)
|
||||
m_address = vkGetBufferDeviceAddressEXT(s_vkDevice, &stAddress);
|
||||
else if (vkGetBufferDeviceAddressKHR)
|
||||
m_address = vkGetBufferDeviceAddressKHR(s_vkDevice, &stAddress);
|
||||
|
||||
m_nSize = nSize;
|
||||
}
|
||||
@@ -411,7 +418,7 @@ uint32_t CVkTextureArray::CreateTexture( uint32_t i, const char *szPath )
|
||||
pBuffer->Unmap();
|
||||
pBuffer->Unlock();
|
||||
vkDeviceWaitIdle(s_vkDevice);
|
||||
IImage *pImage = m_pRenderContext->CreateTexture(uWidth, uHeight, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_NONE);
|
||||
IImage *pImage = m_pRenderContext->CreateTexture(uWidth, uHeight, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_1_SAMPLES);
|
||||
m_pImages[i] = (CVkImage*)pImage;
|
||||
stbi_image_free(pImg);
|
||||
|
||||
@@ -872,6 +879,10 @@ void CVkRenderContext::Init()
|
||||
vk11Features.shaderDrawParameters = VK_TRUE;
|
||||
vk11Features.multiview = VK_TRUE;
|
||||
|
||||
VkPhysicalDeviceFeatures features = {};
|
||||
features.shaderStorageImageReadWithoutFormat = VK_TRUE;
|
||||
features.shaderStorageImageWriteWithoutFormat = VK_TRUE;
|
||||
|
||||
|
||||
stDeviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||
stDeviceCreateInfo.queueCreateInfoCount = 1;
|
||||
@@ -879,6 +890,7 @@ void CVkRenderContext::Init()
|
||||
stDeviceCreateInfo.enabledExtensionCount = enabledDeviceExtensions.GetSize();
|
||||
stDeviceCreateInfo.ppEnabledExtensionNames = enabledDeviceExtensions.GetData();
|
||||
stDeviceCreateInfo.pNext = &vk11Features;
|
||||
stDeviceCreateInfo.pEnabledFeatures = &features;
|
||||
r = vkCreateDevice(s_vkPhysicalDevice, &stDeviceCreateInfo, NULL, &s_vkDevice);
|
||||
VULKAN_RESULT_PRINT(r, vkEnumeratePhysicalDevices);
|
||||
for (auto &extension: enabledDeviceExtensions)
|
||||
@@ -994,6 +1006,7 @@ void CVkRenderContext::Frame( float fDeltaTime )
|
||||
{
|
||||
|
||||
|
||||
CVkBlitCommand *pBlitCommand = NULL;
|
||||
if (s.m_pWindow->GetOutputImage())
|
||||
{
|
||||
|
||||
@@ -1070,7 +1083,10 @@ void CVkRenderContext::Frame( float fDeltaTime )
|
||||
wi.semaphoreCount = 1;
|
||||
wi.pSemaphores = &semaphore;
|
||||
wi.pValues = &v;
|
||||
vkWaitSemaphores(s_vkDevice, &wi, UINT64_MAX);
|
||||
if (vkWaitSemaphores)
|
||||
vkWaitSemaphores(s_vkDevice, &wi, UINT64_MAX);
|
||||
else
|
||||
vkWaitSemaphoresKHR(s_vkDevice, &wi, UINT64_MAX);
|
||||
|
||||
VkPresentInfoKHR stPresentInfo = {};
|
||||
stPresentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
|
||||
|
||||
Reference in New Issue
Block a user