Бранимир Караџић vor 4 Jahren
Ursprung
Commit
8d622e4cfa
1 geänderte Dateien mit 58 neuen und 46 gelöschten Zeilen
  1. 58 46
      src/renderer_vk.cpp

+ 58 - 46
src/renderer_vk.cpp

@@ -2525,6 +2525,7 @@ VK_IMPORT_DEVICE
 				pi.pImageIndices      = &m_backBufferColorIdx;
 				pi.pImageIndices      = &m_backBufferColorIdx;
 				pi.pResults           = NULL;
 				pi.pResults           = NULL;
 				VkResult result = vkQueuePresentKHR(m_queueGraphics, &pi);
 				VkResult result = vkQueuePresentKHR(m_queueGraphics, &pi);
+
 				if (VK_ERROR_OUT_OF_DATE_KHR       == result
 				if (VK_ERROR_OUT_OF_DATE_KHR       == result
 				||  VK_SUBOPTIMAL_KHR              == result
 				||  VK_SUBOPTIMAL_KHR              == result
 				||  VK_ERROR_VALIDATION_FAILED_EXT == result)
 				||  VK_ERROR_VALIDATION_FAILED_EXT == result)
@@ -2835,15 +2836,18 @@ VK_IMPORT_DEVICE
 
 
 			case Handle::Texture:
 			case Handle::Texture:
 				setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImage, "%.*s", _len, _name);
 				setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImage, "%.*s", _len, _name);
-				if (m_textures[_handle.idx].m_textureImageView != VK_NULL_HANDLE)
+
+				if (VK_NULL_HANDLE != m_textures[_handle.idx].m_textureImageView)
 				{
 				{
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageView, "%.*s", _len, _name);
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageView, "%.*s", _len, _name);
 				}
 				}
-				if (m_textures[_handle.idx].m_textureImageStorageView != VK_NULL_HANDLE)
+
+				if (VK_NULL_HANDLE != m_textures[_handle.idx].m_textureImageStorageView)
 				{
 				{
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageStorageView, "%.*s", _len, _name);
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageStorageView, "%.*s", _len, _name);
 				}
 				}
-				if (m_textures[_handle.idx].m_textureImageDepthView != VK_NULL_HANDLE)
+
+				if (VK_NULL_HANDLE != m_textures[_handle.idx].m_textureImageDepthView)
 				{
 				{
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageDepthView, "%.*s", _len, _name);
 					setDebugObjectName(m_device, m_textures[_handle.idx].m_textureImageDepthView, "%.*s", _len, _name);
 				}
 				}
@@ -2860,12 +2864,13 @@ VK_IMPORT_DEVICE
 		}
 		}
 
 
 		template<typename Ty>
 		template<typename Ty>
-		void releaseDeferred(Ty _object, VkDeviceMemory _memory = 0)
+		void release(Ty _object, VkDeviceMemory _memory = VK_NULL_HANDLE)
 		{
 		{
 			m_cmd.release(uint64_t(_object.vk), getType<Ty>() );
 			m_cmd.release(uint64_t(_object.vk), getType<Ty>() );
-			if (_memory != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != _memory)
 			{
 			{
-				m_cmd.release(uint64_t(_memory), getType<VkDeviceMemory>() );
+				m_cmd.release(uint64_t(_memory), VK_OBJECT_TYPE_DEVICE_MEMORY);
 			}
 			}
 		}
 		}
 
 
@@ -3551,8 +3556,11 @@ VK_IMPORT_DEVICE
 			VkRenderPass renderPass = VK_NULL_HANDLE;
 			VkRenderPass renderPass = VK_NULL_HANDLE;
 			uint32_t hashKey = getRenderPassHashkey(_num, _attachments);
 			uint32_t hashKey = getRenderPassHashkey(_num, _attachments);
 			renderPass = (VkRenderPass)m_renderPassCache.find(hashKey);
 			renderPass = (VkRenderPass)m_renderPassCache.find(hashKey);
-			if (renderPass != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != renderPass)
+			{
 				return renderPass;
 				return renderPass;
+			}
 
 
 			// cache missed
 			// cache missed
 			VkAttachmentDescription ad[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS];
 			VkAttachmentDescription ad[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS];
@@ -3670,7 +3678,8 @@ VK_IMPORT_DEVICE
 			uint32_t hashKey = hash.end();
 			uint32_t hashKey = hash.end();
 
 
 			VkSampler sampler = m_samplerCache.find(hashKey);
 			VkSampler sampler = m_samplerCache.find(hashKey);
-			if (sampler != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != sampler)
 			{
 			{
 				return sampler;
 				return sampler;
 			}
 			}
@@ -4379,14 +4388,14 @@ VK_IMPORT_DEVICE
 				, &m_backBufferColorIdx
 				, &m_backBufferColorIdx
 				);
 				);
 
 
-			if (VK_ERROR_OUT_OF_DATE_KHR == result
-				|| VK_ERROR_VALIDATION_FAILED_EXT == result)
+			if (VK_ERROR_OUT_OF_DATE_KHR       == result
+			||  VK_ERROR_VALIDATION_FAILED_EXT == result)
 			{
 			{
 				m_needToRefreshSwapchain = true;
 				m_needToRefreshSwapchain = true;
 				return false;
 				return false;
 			}
 			}
 
 
-			if (m_backBufferColorFence[m_backBufferColorIdx] != VK_NULL_HANDLE)
+			if (VK_NULL_HANDLE != m_backBufferColorFence[m_backBufferColorIdx])
 			{
 			{
 				vkWaitForFences(m_device, 1, &m_backBufferColorFence[m_backBufferColorIdx], VK_TRUE, UINT64_MAX);
 				vkWaitForFences(m_device, 1, &m_backBufferColorFence[m_backBufferColorIdx], VK_TRUE, UINT64_MAX);
 			}
 			}
@@ -4406,7 +4415,7 @@ VK_IMPORT_DEVICE
 
 
 		void kick(bool _wait = false)
 		void kick(bool _wait = false)
 		{
 		{
-			const bool acquired = m_lastImageAcquiredSemaphore != VK_NULL_HANDLE;
+			const bool acquired = VK_NULL_HANDLE != m_lastImageAcquiredSemaphore;
 			const VkSemaphore waitSemaphore = m_lastImageAcquiredSemaphore;
 			const VkSemaphore waitSemaphore = m_lastImageAcquiredSemaphore;
 			const VkSemaphore signalSemaphore = acquired ? m_lastImageRenderedSemaphore : VK_NULL_HANDLE;
 			const VkSemaphore signalSemaphore = acquired ? m_lastImageRenderedSemaphore : VK_NULL_HANDLE;
 			m_lastImageAcquiredSemaphore = VK_NULL_HANDLE;
 			m_lastImageAcquiredSemaphore = VK_NULL_HANDLE;
@@ -4610,15 +4619,15 @@ VK_IMPORT_DEVICE
 		s_renderVK = NULL;
 		s_renderVK = NULL;
 	}
 	}
 
 
-#define VK_DESTROY_FUNC(_name)                                                               \
-			void vkDestroy(Vk##_name& _obj)                                                  \
-			{                                                                                \
-				if (VK_NULL_HANDLE != _obj)                                                  \
-				{                                                                            \
-					vkDestroy##_name(s_renderVK->m_device, _obj, s_renderVK->m_allocatorCb); \
-					_obj = VK_NULL_HANDLE;                                                   \
-				}                                                                            \
-			}
+#define VK_DESTROY_FUNC(_name)                                                       \
+	void vkDestroy(Vk##_name& _obj)                                                  \
+	{                                                                                \
+		if (VK_NULL_HANDLE != _obj)                                                  \
+		{                                                                            \
+			vkDestroy##_name(s_renderVK->m_device, _obj, s_renderVK->m_allocatorCb); \
+			_obj = VK_NULL_HANDLE;                                                   \
+		}                                                                            \
+	}
 VK_DESTROY
 VK_DESTROY
 #undef VK_DESTROY_FUNC
 #undef VK_DESTROY_FUNC
 
 
@@ -4629,13 +4638,13 @@ VK_DESTROY
 
 
 	template<typename Ty> void StateCacheT<Ty>::destroy(Ty handle)
 	template<typename Ty> void StateCacheT<Ty>::destroy(Ty handle)
 	{
 	{
-		s_renderVK->releaseDeferred(handle);
+		s_renderVK->release(handle);
 	}
 	}
 
 
 	void ScratchBufferVK::create(uint32_t _size, uint32_t _maxDescriptors)
 	void ScratchBufferVK::create(uint32_t _size, uint32_t _maxDescriptors)
 	{
 	{
 		m_maxDescriptors = _maxDescriptors;
 		m_maxDescriptors = _maxDescriptors;
-		m_currentDs = 0;
+		m_currentDs      = 0;
 		m_descriptorSet  = (VkDescriptorSet*)BX_ALLOC(g_allocator, m_maxDescriptors * sizeof(VkDescriptorSet) );
 		m_descriptorSet  = (VkDescriptorSet*)BX_ALLOC(g_allocator, m_maxDescriptors * sizeof(VkDescriptorSet) );
 		bx::memSet(m_descriptorSet, 0, sizeof(VkDescriptorSet) * m_maxDescriptors);
 		bx::memSet(m_descriptorSet, 0, sizeof(VkDescriptorSet) * m_maxDescriptors);
 
 
@@ -4648,7 +4657,7 @@ VK_DESTROY
 		bci.flags = 0;
 		bci.flags = 0;
 		bci.size  = _size;
 		bci.size  = _size;
 		bci.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
 		bci.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
-		bci.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
+		bci.sharingMode           = VK_SHARING_MODE_EXCLUSIVE;
 		bci.queueFamilyIndexCount = 0;
 		bci.queueFamilyIndexCount = 0;
 		bci.pQueueFamilyIndices   = NULL;
 		bci.pQueueFamilyIndices   = NULL;
 
 
@@ -4683,7 +4692,7 @@ VK_DESTROY
 
 
 		vkUnmapMemory(s_renderVK->m_device, m_deviceMem);
 		vkUnmapMemory(s_renderVK->m_device, m_deviceMem);
 
 
-		s_renderVK->releaseDeferred(m_buffer, m_deviceMem);
+		s_renderVK->release(m_buffer, m_deviceMem);
 		m_buffer    = VK_NULL_HANDLE;
 		m_buffer    = VK_NULL_HANDLE;
 		m_deviceMem = VK_NULL_HANDLE;
 		m_deviceMem = VK_NULL_HANDLE;
 	}
 	}
@@ -4809,8 +4818,8 @@ VK_DESTROY
 
 
 	void ImageVK::destroy()
 	void ImageVK::destroy()
 	{
 	{
-		s_renderVK->releaseDeferred(m_imageView);
-		s_renderVK->releaseDeferred(m_image, m_memory);
+		s_renderVK->release(m_imageView);
+		s_renderVK->release(m_image, m_memory);
 		m_imageView = VK_NULL_HANDLE;
 		m_imageView = VK_NULL_HANDLE;
 		m_image     = VK_NULL_HANDLE;
 		m_image     = VK_NULL_HANDLE;
 		m_memory    = VK_NULL_HANDLE;
 		m_memory    = VK_NULL_HANDLE;
@@ -4872,7 +4881,7 @@ VK_DESTROY
 				, VK_PIPELINE_STAGE_TRANSFER_BIT
 				, VK_PIPELINE_STAGE_TRANSFER_BIT
 				);
 				);
 
 
-			s_renderVK->releaseDeferred(stagingBuffer, stagingMem);
+			s_renderVK->release(stagingBuffer, stagingMem);
 		}
 		}
 	}
 	}
 
 
@@ -4896,14 +4905,14 @@ VK_DESTROY
 			, VK_PIPELINE_STAGE_TRANSFER_BIT
 			, VK_PIPELINE_STAGE_TRANSFER_BIT
 			);
 			);
 
 
-		s_renderVK->releaseDeferred(stagingBuffer, stagingMem);
+		s_renderVK->release(stagingBuffer, stagingMem);
 	}
 	}
 
 
 	void BufferVK::destroy()
 	void BufferVK::destroy()
 	{
 	{
 		if (VK_NULL_HANDLE != m_buffer)
 		if (VK_NULL_HANDLE != m_buffer)
 		{
 		{
-			s_renderVK->releaseDeferred(m_buffer, m_deviceMem);
+			s_renderVK->release(m_buffer, m_deviceMem);
 			m_buffer    = VK_NULL_HANDLE;
 			m_buffer    = VK_NULL_HANDLE;
 			m_deviceMem = VK_NULL_HANDLE;
 			m_deviceMem = VK_NULL_HANDLE;
 
 
@@ -5331,7 +5340,7 @@ VK_DESTROY
 
 
 	void ProgramVK::destroy()
 	void ProgramVK::destroy()
 	{
 	{
-		s_renderVK->releaseDeferred(m_pipelineLayout);
+		s_renderVK->release(m_pipelineLayout);
 		m_pipelineLayout = VK_NULL_HANDLE;
 		m_pipelineLayout = VK_NULL_HANDLE;
 		m_numPredefined = 0;
 		m_numPredefined = 0;
 		m_vsh = NULL;
 		m_vsh = NULL;
@@ -5761,11 +5770,11 @@ VK_DESTROY
 
 
 			vkBindImageMemory(device, m_textureImage, m_textureDeviceMem, 0);
 			vkBindImageMemory(device, m_textureImage, m_textureDeviceMem, 0);
 
 
-			if (stagingBuffer != VK_NULL_HANDLE)
+			if (VK_NULL_HANDLE != stagingBuffer)
 			{
 			{
 				copyBufferToTexture(_commandBuffer, stagingBuffer, numSrd, bufferCopyInfo);
 				copyBufferToTexture(_commandBuffer, stagingBuffer, numSrd, bufferCopyInfo);
 
 
-				s_renderVK->releaseDeferred(stagingBuffer, stagingDeviceMem);
+				s_renderVK->release(stagingBuffer, stagingDeviceMem);
 			}
 			}
 			else
 			else
 			{
 			{
@@ -5922,10 +5931,10 @@ VK_DESTROY
 
 
 		if (VK_NULL_HANDLE != m_textureImage)
 		if (VK_NULL_HANDLE != m_textureImage)
 		{
 		{
-			s_renderVK->releaseDeferred(m_textureImageStorageView);
-			s_renderVK->releaseDeferred(m_textureImageDepthView);
-			s_renderVK->releaseDeferred(m_textureImageView);
-			s_renderVK->releaseDeferred(m_textureImage, m_textureDeviceMem);
+			s_renderVK->release(m_textureImageStorageView);
+			s_renderVK->release(m_textureImageDepthView);
+			s_renderVK->release(m_textureImageView);
+			s_renderVK->release(m_textureImage, m_textureDeviceMem);
 
 
 			m_textureImageStorageView = VK_NULL_HANDLE;
 			m_textureImageStorageView = VK_NULL_HANDLE;
 			m_textureImageDepthView   = VK_NULL_HANDLE;
 			m_textureImageDepthView   = VK_NULL_HANDLE;
@@ -5936,8 +5945,8 @@ VK_DESTROY
 
 
 		if (VK_NULL_HANDLE != m_singleMsaaImage)
 		if (VK_NULL_HANDLE != m_singleMsaaImage)
 		{
 		{
-			s_renderVK->releaseDeferred(m_singleMsaaImageView);
-			s_renderVK->releaseDeferred(m_singleMsaaImage, m_singleMsaaDeviceMem);
+			s_renderVK->release(m_singleMsaaImageView);
+			s_renderVK->release(m_singleMsaaImage, m_singleMsaaDeviceMem);
 
 
 			m_singleMsaaImageView = VK_NULL_HANDLE;
 			m_singleMsaaImageView = VK_NULL_HANDLE;
 			m_singleMsaaImage     = VK_NULL_HANDLE;
 			m_singleMsaaImage     = VK_NULL_HANDLE;
@@ -5989,7 +5998,7 @@ VK_DESTROY
 
 
 		copyBufferToTexture(_commandBuffer, stagingBuffer, 1, &region);
 		copyBufferToTexture(_commandBuffer, stagingBuffer, 1, &region);
 
 
-		s_renderVK->releaseDeferred(stagingBuffer, stagingDeviceMem);
+		s_renderVK->release(stagingBuffer, stagingDeviceMem);
 
 
 		if (NULL != temp)
 		if (NULL != temp)
 		{
 		{
@@ -6226,7 +6235,7 @@ VK_DESTROY
 
 
 	void FrameBufferVK::destroy()
 	void FrameBufferVK::destroy()
 	{
 	{
-		s_renderVK->releaseDeferred(m_framebuffer);
+		s_renderVK->release(m_framebuffer);
 		m_framebuffer = VK_NULL_HANDLE;
 		m_framebuffer = VK_NULL_HANDLE;
 	}
 	}
 
 
@@ -6292,7 +6301,7 @@ VK_DESTROY
 		{
 		{
 			vkDestroy(m_commandList[ii].m_fence);
 			vkDestroy(m_commandList[ii].m_fence);
 			vkDestroy(m_commandList[ii].m_semaphore);
 			vkDestroy(m_commandList[ii].m_semaphore);
-			if (m_commandList[ii].m_commandBuffer != VK_NULL_HANDLE)
+			if (VK_NULL_HANDLE != m_commandList[ii].m_commandBuffer)
 			{
 			{
 				vkFreeCommandBuffers(s_renderVK->m_device, m_commandList[ii].m_commandPool, 1, &m_commandList[ii].m_commandBuffer);
 				vkFreeCommandBuffers(s_renderVK->m_device, m_commandList[ii].m_commandPool, 1, &m_commandList[ii].m_commandBuffer);
 				m_commandList[ii].m_commandBuffer = VK_NULL_HANDLE;
 				m_commandList[ii].m_commandBuffer = VK_NULL_HANDLE;
@@ -6324,7 +6333,7 @@ VK_DESTROY
 
 
 	void CommandQueueVK::kick(VkSemaphore _waitSemaphore, VkSemaphore _signalSemaphore, bool _wait)
 	void CommandQueueVK::kick(VkSemaphore _waitSemaphore, VkSemaphore _signalSemaphore, bool _wait)
 	{
 	{
-		if (m_activeCommandBuffer != VK_NULL_HANDLE)
+		if (VK_NULL_HANDLE != m_activeCommandBuffer)
 		{
 		{
 			VK_CHECK(vkEndCommandBuffer(m_activeCommandBuffer) );
 			VK_CHECK(vkEndCommandBuffer(m_activeCommandBuffer) );
 
 
@@ -6332,11 +6341,13 @@ VK_DESTROY
 
 
 			VkSemaphore waitSemaphores[2];
 			VkSemaphore waitSemaphores[2];
 			uint32_t waitSemaphoreCount = 0;
 			uint32_t waitSemaphoreCount = 0;
-			if (m_kickedSemaphore != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != m_kickedSemaphore)
 			{
 			{
 				waitSemaphores[waitSemaphoreCount++] = m_kickedSemaphore;
 				waitSemaphores[waitSemaphoreCount++] = m_kickedSemaphore;
 			}
 			}
-			if (_waitSemaphore != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != _waitSemaphore)
 			{
 			{
 				waitSemaphores[waitSemaphoreCount++] = _waitSemaphore;
 				waitSemaphores[waitSemaphoreCount++] = _waitSemaphore;
 			}
 			}
@@ -6346,7 +6357,8 @@ VK_DESTROY
 
 
 			VkSemaphore signalSemaphores[2] = { m_kickedSemaphore };
 			VkSemaphore signalSemaphores[2] = { m_kickedSemaphore };
 			uint32_t signalSemaphoreCount = 1;
 			uint32_t signalSemaphoreCount = 1;
-			if (_signalSemaphore != VK_NULL_HANDLE)
+
+			if (VK_NULL_HANDLE != _signalSemaphore)
 			{
 			{
 				signalSemaphores[signalSemaphoreCount++] = _signalSemaphore;
 				signalSemaphores[signalSemaphoreCount++] = _signalSemaphore;
 			}
 			}