staging buffer lock
							parent
							
								
									cbc0b36ad0
								
							
						
					
					
						commit
						48bebb2ab3
					
				|  | @ -1358,6 +1358,7 @@ typedef struct VulkanRenderer | ||||||
| 	SDL_mutex *uniformBufferLock; | 	SDL_mutex *uniformBufferLock; | ||||||
| 	SDL_mutex *descriptorSetLock; | 	SDL_mutex *descriptorSetLock; | ||||||
| 	SDL_mutex *boundBufferLock; | 	SDL_mutex *boundBufferLock; | ||||||
|  | 	SDL_mutex *stagingLock; | ||||||
| 
 | 
 | ||||||
| 	/* Deferred destroy storage */ | 	/* Deferred destroy storage */ | ||||||
| 
 | 
 | ||||||
|  | @ -3641,6 +3642,7 @@ static void VULKAN_DestroyDevice( | ||||||
| 	SDL_DestroyMutex(renderer->uniformBufferLock); | 	SDL_DestroyMutex(renderer->uniformBufferLock); | ||||||
| 	SDL_DestroyMutex(renderer->descriptorSetLock); | 	SDL_DestroyMutex(renderer->descriptorSetLock); | ||||||
| 	SDL_DestroyMutex(renderer->boundBufferLock); | 	SDL_DestroyMutex(renderer->boundBufferLock); | ||||||
|  | 	SDL_DestroyMutex(renderer->stagingLock); | ||||||
| 
 | 
 | ||||||
| 	SDL_free(renderer->buffersInUse); | 	SDL_free(renderer->buffersInUse); | ||||||
| 
 | 
 | ||||||
|  | @ -6011,6 +6013,8 @@ static void VULKAN_SetTextureData2D( | ||||||
| 	VkBufferImageCopy imageCopy; | 	VkBufferImageCopy imageCopy; | ||||||
| 	uint8_t *mapPointer; | 	uint8_t *mapPointer; | ||||||
| 
 | 
 | ||||||
|  | 	SDL_LockMutex(renderer->stagingLock); | ||||||
|  | 
 | ||||||
| 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLengthInBytes); | 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLengthInBytes); | ||||||
| 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | ||||||
| 
 | 
 | ||||||
|  | @ -6096,6 +6100,8 @@ static void VULKAN_SetTextureData2D( | ||||||
| 			&vulkanTexture->resourceAccessType | 			&vulkanTexture->resourceAccessType | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	SDL_UnlockMutex(renderer->stagingLock); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_SetTextureData3D( | static void VULKAN_SetTextureData3D( | ||||||
|  | @ -6119,6 +6125,8 @@ static void VULKAN_SetTextureData3D( | ||||||
| 	VkBufferImageCopy imageCopy; | 	VkBufferImageCopy imageCopy; | ||||||
| 	uint8_t *mapPointer; | 	uint8_t *mapPointer; | ||||||
| 
 | 
 | ||||||
|  | 	SDL_LockMutex(renderer->stagingLock); | ||||||
|  | 
 | ||||||
| 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | ||||||
| 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | ||||||
| 
 | 
 | ||||||
|  | @ -6204,6 +6212,8 @@ static void VULKAN_SetTextureData3D( | ||||||
| 			&vulkanTexture->resourceAccessType | 			&vulkanTexture->resourceAccessType | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	SDL_UnlockMutex(renderer->stagingLock); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_SetTextureDataCube( | static void VULKAN_SetTextureDataCube( | ||||||
|  | @ -6226,6 +6236,8 @@ static void VULKAN_SetTextureDataCube( | ||||||
| 	VkBufferImageCopy imageCopy; | 	VkBufferImageCopy imageCopy; | ||||||
| 	uint8_t *mapPointer; | 	uint8_t *mapPointer; | ||||||
| 
 | 
 | ||||||
|  | 	SDL_LockMutex(renderer->stagingLock); | ||||||
|  | 
 | ||||||
| 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | ||||||
| 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | ||||||
| 
 | 
 | ||||||
|  | @ -6311,6 +6323,8 @@ static void VULKAN_SetTextureDataCube( | ||||||
| 			&vulkanTexture->resourceAccessType | 			&vulkanTexture->resourceAccessType | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	SDL_UnlockMutex(renderer->stagingLock); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_SetTextureDataYUV( | static void VULKAN_SetTextureDataYUV( | ||||||
|  | @ -6336,6 +6350,8 @@ static void VULKAN_SetTextureDataYUV( | ||||||
| 	uint8_t *mapPointer; | 	uint8_t *mapPointer; | ||||||
| 	VkResult vulkanResult; | 	VkResult vulkanResult; | ||||||
| 
 | 
 | ||||||
|  | 	SDL_LockMutex(renderer->stagingLock); | ||||||
|  | 
 | ||||||
| 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | 	VULKAN_INTERNAL_MaybeExpandStagingBuffer(renderer, dataLength); | ||||||
| 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | 	VULKAN_INTERNAL_MaybeBeginTransferCommandBuffer(renderer); | ||||||
| 
 | 
 | ||||||
|  | @ -6510,6 +6526,8 @@ static void VULKAN_SetTextureDataYUV( | ||||||
| 			&tex->resourceAccessType | 			&tex->resourceAccessType | ||||||
| 		); | 		); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	SDL_UnlockMutex(renderer->stagingLock); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void VULKAN_INTERNAL_BlitImage( | static void VULKAN_INTERNAL_BlitImage( | ||||||
|  | @ -9484,6 +9502,7 @@ static REFRESH_Device* VULKAN_CreateDevice( | ||||||
| 	renderer->uniformBufferLock = SDL_CreateMutex(); | 	renderer->uniformBufferLock = SDL_CreateMutex(); | ||||||
| 	renderer->descriptorSetLock = SDL_CreateMutex(); | 	renderer->descriptorSetLock = SDL_CreateMutex(); | ||||||
| 	renderer->boundBufferLock = SDL_CreateMutex(); | 	renderer->boundBufferLock = SDL_CreateMutex(); | ||||||
|  | 	renderer->stagingLock = SDL_CreateMutex(); | ||||||
| 
 | 
 | ||||||
| 	/* Transfer buffer */ | 	/* Transfer buffer */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue