This commit is contained in:
Бранимир Караџић 2021-02-28 18:59:05 -08:00
parent ece0c4e1a1
commit 58f0d55612

View File

@ -1180,21 +1180,27 @@ VK_IMPORT_DEVICE
{
VK_CHECK(vkDeviceWaitIdle(m_device) );
vkFreeMemory(m_device, m_backBufferDepthStencilMemory, m_allocatorCb);
m_backBufferDepthStencilMemory = VK_NULL_HANDLE;
vkDestroy(m_backBufferDepthStencilImageView);
vkDestroy(m_backBufferDepthStencilImage);
for (uint32_t ii = 0; ii < BX_COUNTOF(m_backBufferColorImageView); ++ii)
{
vkDestroy(m_backBufferColorImageView[ii]);
m_backBufferColorImageLayout[ii] = VK_IMAGE_LAYOUT_UNDEFINED;
m_backBufferColorFence[ii] = VK_NULL_HANDLE;
}
vkDestroy(m_swapchain);
}
VkResult createSwapchainFramebuffer()
{
VkResult result = VK_SUCCESS;
for (uint32_t ii = 0; ii < m_numSwapchainImages; ++ii)
{
::VkImageView attachments[] =
@ -1221,6 +1227,7 @@ VK_IMPORT_DEVICE
return result;
}
}
return result;
}
@ -2694,7 +2701,13 @@ VK_IMPORT_DEVICE
VkBuffer stagingBuffer;
createStagingBuffer(size, &stagingBuffer, &stagingMemory);
texture.m_readback.copyImageToBuffer(m_commandBuffer, stagingBuffer, texture.m_currentImageLayout, texture.m_aspectMask, _mip);
texture.m_readback.copyImageToBuffer(
m_commandBuffer
, stagingBuffer
, texture.m_currentImageLayout
, texture.m_aspectMask
, _mip
);
kick(true);
@ -2904,6 +2917,7 @@ VK_IMPORT_DEVICE
dul.color[1] = 0.0f;
dul.color[2] = 0.0f;
dul.color[3] = 1.0f;
vkCmdInsertDebugUtilsLabelEXT(m_commandBuffer, &dul);
}
}
@ -3024,7 +3038,11 @@ VK_IMPORT_DEVICE
dsai.descriptorPool = m_descriptorPool;
dsai.descriptorSetCount = 1;
dsai.pSetLayouts = &dsl;
vkAllocateDescriptorSets(m_device, &dsai, &scratchBuffer.m_descriptorSet[scratchBuffer.m_currentDs]);
VK_CHECK(vkAllocateDescriptorSets(
m_device
, &dsai
, &scratchBuffer.m_descriptorSet[scratchBuffer.m_currentDs]
) );
TextureVK& texture = m_textures[_blitter.m_texture.idx];
uint32_t samplerFlags = (uint32_t)(texture.m_flags & BGFX_SAMPLER_BITS_MASK);
@ -3761,7 +3779,7 @@ VK_IMPORT_DEVICE
rpi.dependencyCount = BX_COUNTOF(dep);
rpi.pDependencies = dep;
VK_CHECK( vkCreateRenderPass(m_device, &rpi, m_allocatorCb, &renderPass) );
VK_CHECK(vkCreateRenderPass(m_device, &rpi, m_allocatorCb, &renderPass) );
m_renderPassCache.add(hashKey, renderPass);
@ -3846,7 +3864,7 @@ VK_IMPORT_DEVICE
{
return view;
}
view = texture.createView(0, texture.m_numSides, _mip, 1);
m_storageImageViewCache.add(hashKey, view);
@ -3886,7 +3904,7 @@ VK_IMPORT_DEVICE
cpci.basePipelineHandle = VK_NULL_HANDLE;
cpci.basePipelineIndex = 0;
VK_CHECK( vkCreateComputePipelines(m_device, m_pipelineCache, 1, &cpci, m_allocatorCb, &pipeline) );
VK_CHECK(vkCreateComputePipelines(m_device, m_pipelineCache, 1, &cpci, m_allocatorCb, &pipeline) );
m_pipelineStateCache.add(hash, pipeline);
@ -4518,7 +4536,13 @@ VK_IMPORT_DEVICE
if (VK_NULL_HANDLE != m_backBufferColorFence[m_backBufferColorIdx])
{
vkWaitForFences(m_device, 1, &m_backBufferColorFence[m_backBufferColorIdx], VK_TRUE, UINT64_MAX);
VK_CHECK(vkWaitForFences(
m_device
, 1
, &m_backBufferColorFence[m_backBufferColorIdx]
, VK_TRUE
, UINT64_MAX
) );
}
setImageMemoryBarrier(
@ -4625,6 +4649,7 @@ VK_IMPORT_DEVICE
VkMemoryRequirements mr;
vkGetBufferMemoryRequirements(m_device, *_buffer, &mr);
VK_CHECK(allocateMemory(&mr, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, _memory) );
VK_CHECK(vkBindBufferMemory(m_device, *_buffer, *_memory, 0) );
@ -4836,12 +4861,12 @@ VK_DESTROY
{
if (m_currentDs > 0)
{
vkFreeDescriptorSets(
VK_CHECK(vkFreeDescriptorSets(
s_renderVK->m_device
, s_renderVK->m_descriptorPool
, m_currentDs
, m_descriptorSet
);
) );
}
bx::memSet(m_descriptorSet, 0, sizeof(VkDescriptorSet) * m_maxDescriptors);
@ -4875,14 +4900,15 @@ VK_DESTROY
VkDevice device = s_renderVK->m_device;
const uint32_t align = uint32_t(deviceLimits.nonCoherentAtomSize);
const uint32_t size = bx::min(bx::strideAlign(m_pos, align), m_size);
const uint32_t size = bx::min(bx::strideAlign(m_pos, align), m_size);
VkMappedMemoryRange range;
range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
range.pNext = NULL;
range.sType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE;
range.pNext = NULL;
range.memory = m_deviceMem;
range.offset = 0;
range.size = size;
vkFlushMappedMemoryRanges(device, 1, &range);
range.size = size;
VK_CHECK(vkFlushMappedMemoryRanges(device, 1, &range) );
}
void BufferVK::create(VkCommandBuffer _commandBuffer, uint32_t _size, void* _data, uint16_t _flags, bool _vertex, uint32_t _stride)
@ -5166,9 +5192,9 @@ VK_DESTROY
bx::memCopy(m_code->data, code, shaderSize);
VkShaderModuleCreateInfo smci;
smci.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
smci.pNext = NULL;
smci.flags = 0;
smci.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
smci.pNext = NULL;
smci.flags = 0;
smci.codeSize = m_code->size;
smci.pCode = (const uint32_t*)m_code->data;
@ -5741,6 +5767,7 @@ VK_DESTROY
uint32_t totalMemSize = 0;
VkBufferImageCopy* bufferCopyInfo = (VkBufferImageCopy*)BX_ALLOC(g_allocator, sizeof(VkBufferImageCopy) * numSrd);
for (uint32_t ii = 0; ii < numSrd; ++ii)
{
const uint32_t idealWidth = bx::max<uint32_t>(1, m_width >> imageInfos[ii].mipLevel);
@ -5759,6 +5786,7 @@ VK_DESTROY
VkBuffer stagingBuffer = VK_NULL_HANDLE;
VkDeviceMemory stagingDeviceMem = VK_NULL_HANDLE;
if (totalMemSize > 0)
{
s_renderVK->createStagingBuffer(totalMemSize, &stagingBuffer, &stagingDeviceMem);
@ -5831,7 +5859,7 @@ VK_DESTROY
, &m_textureDeviceMem
) );
vkBindImageMemory(device, m_textureImage, m_textureDeviceMem, 0);
VK_CHECK(vkBindImageMemory(device, m_textureImage, m_textureDeviceMem, 0) );
if (VK_NULL_HANDLE != stagingBuffer)
{
@ -5873,6 +5901,7 @@ VK_DESTROY
viewInfo.subresourceRange.levelCount = m_numMips;
viewInfo.subresourceRange.baseArrayLayer = 0;
viewInfo.subresourceRange.layerCount = m_numSides;
VK_CHECK(vkCreateImageView(
device
, &viewInfo
@ -5897,6 +5926,7 @@ VK_DESTROY
viewInfo.subresourceRange.levelCount = m_numMips;
viewInfo.subresourceRange.baseArrayLayer = 0;
viewInfo.subresourceRange.layerCount = m_numSides;
VK_CHECK(vkCreateImageView(
device
, &viewInfo
@ -5919,7 +5949,7 @@ VK_DESTROY
VK_CHECK(s_renderVK->allocateMemory(&imageMemReq_resolve, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, &m_singleMsaaDeviceMem) );
vkBindImageMemory(device, m_singleMsaaImage, m_singleMsaaDeviceMem, 0);
VK_CHECK(vkBindImageMemory(device, m_singleMsaaImage, m_singleMsaaDeviceMem, 0) );
}
{
@ -5946,6 +5976,7 @@ VK_DESTROY
viewInfo.subresourceRange.levelCount = m_numMips;
viewInfo.subresourceRange.baseArrayLayer = 0;
viewInfo.subresourceRange.layerCount = m_numSides;
VK_CHECK(vkCreateImageView(
device
, &viewInfo
@ -6223,6 +6254,7 @@ VK_DESTROY
viewInfo.subresourceRange.levelCount = _numMips;
viewInfo.subresourceRange.baseArrayLayer = _layer;
viewInfo.subresourceRange.layerCount = _numLayers;
VK_CHECK(vkCreateImageView(
s_renderVK->m_device
, &viewInfo
@ -6292,7 +6324,8 @@ VK_DESTROY
fci.width = m_width;
fci.height = m_height;
fci.layers = numLayers;
VK_CHECK( vkCreateFramebuffer(device, &fci, allocatorCb, &m_framebuffer) );
VK_CHECK(vkCreateFramebuffer(device, &fci, allocatorCb, &m_framebuffer) );
m_renderPass = renderPass;
@ -6372,11 +6405,32 @@ VK_DESTROY
for (uint32_t ii = 0; ii < m_numFramesInFlight; ++ii)
{
VK_CHECK(vkCreateCommandPool(s_renderVK->m_device, &cpci, s_renderVK->m_allocatorCb, &m_commandList[ii].m_commandPool) );
VK_CHECK(vkCreateCommandPool(
s_renderVK->m_device
, &cpci
, s_renderVK->m_allocatorCb
, &m_commandList[ii].m_commandPool
) );
cbai.commandPool = m_commandList[ii].m_commandPool;
VK_CHECK(vkAllocateCommandBuffers(s_renderVK->m_device, &cbai, &m_commandList[ii].m_commandBuffer) );
VK_CHECK(vkCreateSemaphore(s_renderVK->m_device, &sci, s_renderVK->m_allocatorCb, &m_commandList[ii].m_semaphore) );
VK_CHECK(vkCreateFence(s_renderVK->m_device, &fci, s_renderVK->m_allocatorCb, &m_commandList[ii].m_fence) );
VK_CHECK(vkAllocateCommandBuffers(
s_renderVK->m_device
, &cbai
, &m_commandList[ii].m_commandBuffer
) );
VK_CHECK(vkCreateSemaphore(
s_renderVK->m_device
, &sci
, s_renderVK->m_allocatorCb
, &m_commandList[ii].m_semaphore
) );
VK_CHECK(vkCreateFence(
s_renderVK->m_device
, &fci
, s_renderVK->m_allocatorCb
, &m_commandList[ii].m_fence
) );
}
}
@ -6414,6 +6468,7 @@ VK_DESTROY
cbi.pNext = NULL;
cbi.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
cbi.pInheritanceInfo = NULL;
VK_CHECK(vkBeginCommandBuffer(commandList.m_commandBuffer, &cbi) );
m_activeCommandBuffer = commandList.m_commandBuffer;