rename CpuBuffer to TransferBuffer
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
e5cd3c6fce
commit
6f2e4ed6d1
|
@ -703,10 +703,10 @@ typedef struct VulkanBufferContainer
|
|||
VulkanBuffer *vulkanBuffer;
|
||||
} VulkanBufferContainer;
|
||||
|
||||
/* CpuBuffers consist of multiple backing buffer containers so that data transfers
|
||||
/* TransferBuffers consist of multiple backing buffer containers so that data transfers
|
||||
* can occur safely without the client having to explicitly manage transfer timing.
|
||||
*/
|
||||
typedef struct VulkanCpuBufferContainer /* cast from Refresh_CpuBuffer */
|
||||
typedef struct VulkanTransferBufferContainer /* cast from Refresh_TransferBuffer */
|
||||
{
|
||||
uint32_t sizeInBytes;
|
||||
VulkanBufferContainer *activeBuffer;
|
||||
|
@ -719,7 +719,7 @@ typedef struct VulkanCpuBufferContainer /* cast from Refresh_CpuBuffer */
|
|||
uint32_t bufferCapacity;
|
||||
uint32_t bufferCount;
|
||||
VulkanBufferContainer **backingBuffers;
|
||||
} VulkanCpuBufferContainer;
|
||||
} VulkanTransferBufferContainer;
|
||||
|
||||
struct VulkanBuffer
|
||||
{
|
||||
|
@ -5359,14 +5359,14 @@ static void VULKAN_DrawPrimitives(
|
|||
static void VULKAN_DrawPrimitivesIndirect(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_GpuBuffer *buffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
uint32_t offsetInBytes,
|
||||
uint32_t drawCount,
|
||||
uint32_t stride
|
||||
) {
|
||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) buffer)->vulkanBuffer;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
VkDescriptorSet descriptorSets[4];
|
||||
uint32_t dynamicOffsets[2];
|
||||
|
||||
|
@ -6837,17 +6837,17 @@ static Refresh_GpuBuffer* VULKAN_CreateGpuBuffer(
|
|||
);
|
||||
}
|
||||
|
||||
static Refresh_CpuBuffer* VULKAN_CreateCpuBuffer(
|
||||
static Refresh_TransferBuffer* VULKAN_CreateTransferBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
uint32_t sizeInBytes
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VkBufferUsageFlags vulkanUsageFlags =
|
||||
VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
VulkanCpuBufferContainer *bufferContainer = (VulkanCpuBufferContainer*) SDL_malloc(sizeof(VulkanCpuBufferContainer));
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) SDL_malloc(sizeof(VulkanTransferBufferContainer));
|
||||
|
||||
bufferContainer->sizeInBytes = sizeInBytes;
|
||||
bufferContainer->activeBuffer = VULKAN_INTERNAL_CreateBufferContainer(
|
||||
transferBufferContainer->sizeInBytes = sizeInBytes;
|
||||
transferBufferContainer->activeBuffer = VULKAN_INTERNAL_CreateBufferContainer(
|
||||
renderer,
|
||||
sizeInBytes,
|
||||
RESOURCE_ACCESS_NONE,
|
||||
|
@ -6859,14 +6859,14 @@ static Refresh_CpuBuffer* VULKAN_CreateCpuBuffer(
|
|||
0
|
||||
);
|
||||
|
||||
bufferContainer->bufferCapacity = 1;
|
||||
bufferContainer->bufferCount = 1;
|
||||
bufferContainer->backingBuffers = SDL_malloc(
|
||||
bufferContainer->bufferCapacity * sizeof(VulkanBufferContainer*)
|
||||
transferBufferContainer->bufferCapacity = 1;
|
||||
transferBufferContainer->bufferCount = 1;
|
||||
transferBufferContainer->backingBuffers = SDL_malloc(
|
||||
transferBufferContainer->bufferCapacity * sizeof(VulkanBufferContainer*)
|
||||
);
|
||||
bufferContainer->backingBuffers[0] = bufferContainer->activeBuffer;
|
||||
transferBufferContainer->backingBuffers[0] = transferBufferContainer->activeBuffer;
|
||||
|
||||
return (Refresh_CpuBuffer*) bufferContainer;
|
||||
return (Refresh_TransferBuffer*) transferBufferContainer;
|
||||
}
|
||||
|
||||
/* Setters */
|
||||
|
@ -7288,10 +7288,10 @@ static void VULKAN_INTERNAL_QueueDestroyBuffer(
|
|||
|
||||
static void VULKAN_QueueDestroyGpuBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_GpuBuffer *buffer
|
||||
Refresh_GpuBuffer *gpuBuffer
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanBufferContainer *vulkanBufferContainer = (VulkanBufferContainer*) buffer;
|
||||
VulkanBufferContainer *vulkanBufferContainer = (VulkanBufferContainer*) gpuBuffer;
|
||||
VulkanBuffer *vulkanBuffer = vulkanBufferContainer->vulkanBuffer;
|
||||
|
||||
SDL_LockMutex(renderer->disposeLock);
|
||||
|
@ -7304,25 +7304,25 @@ static void VULKAN_QueueDestroyGpuBuffer(
|
|||
SDL_UnlockMutex(renderer->disposeLock);
|
||||
}
|
||||
|
||||
static void VULKAN_QueueDestroyCpuBuffer(
|
||||
static void VULKAN_QueueDestroyTransferBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CpuBuffer *buffer
|
||||
Refresh_TransferBuffer *transferBuffer
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCpuBufferContainer *bufferContainer = (VulkanCpuBufferContainer*) buffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
uint32_t i;
|
||||
|
||||
SDL_LockMutex(renderer->disposeLock);
|
||||
|
||||
for (i = 0; i < bufferContainer->bufferCount; i += 1)
|
||||
for (i = 0; i < transferBufferContainer->bufferCount; i += 1)
|
||||
{
|
||||
VULKAN_INTERNAL_QueueDestroyBuffer(renderer, bufferContainer->backingBuffers[i]->vulkanBuffer);
|
||||
SDL_free(bufferContainer->backingBuffers[i]);
|
||||
VULKAN_INTERNAL_QueueDestroyBuffer(renderer, transferBufferContainer->backingBuffers[i]->vulkanBuffer);
|
||||
SDL_free(transferBufferContainer->backingBuffers[i]);
|
||||
}
|
||||
|
||||
/* Containers are just client handles, so we can free immediately */
|
||||
SDL_free(bufferContainer->backingBuffers);
|
||||
SDL_free(bufferContainer);
|
||||
SDL_free(transferBufferContainer->backingBuffers);
|
||||
SDL_free(transferBufferContainer);
|
||||
|
||||
SDL_UnlockMutex(renderer->disposeLock);
|
||||
}
|
||||
|
@ -8124,13 +8124,13 @@ static void VULKAN_BindVertexBuffers(
|
|||
static void VULKAN_BindIndexBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_GpuBuffer *buffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
uint64_t offset,
|
||||
Refresh_IndexElementSize indexElementSize
|
||||
) {
|
||||
VulkanRenderer* renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanBuffer* vulkanBuffer = ((VulkanBufferContainer*) buffer)->vulkanBuffer;
|
||||
VulkanBuffer* vulkanBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, vulkanBuffer);
|
||||
|
||||
|
@ -8387,30 +8387,30 @@ static void VULKAN_EndComputePass(
|
|||
vulkanCommandBuffer->currentComputePipeline = NULL;
|
||||
}
|
||||
|
||||
static void VULKAN_INTERNAL_DiscardActiveCpuBuffer(
|
||||
static void VULKAN_INTERNAL_DiscardActiveTransferBuffer(
|
||||
VulkanRenderer *renderer,
|
||||
VulkanCpuBufferContainer *cpuBufferContainer
|
||||
VulkanTransferBufferContainer *transferBufferContainer
|
||||
) {
|
||||
VulkanBufferContainer *cpuBuffer;
|
||||
VulkanBufferContainer *transferBuffer;
|
||||
uint32_t i;
|
||||
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 0;
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 0;
|
||||
|
||||
/* If a previously-discarded buffer is available, we can use that. */
|
||||
for (i = 0; i < cpuBufferContainer->bufferCount; i += 1)
|
||||
for (i = 0; i < transferBufferContainer->bufferCount; i += 1)
|
||||
{
|
||||
cpuBuffer = cpuBufferContainer->backingBuffers[i];
|
||||
if (SDL_AtomicGet(&cpuBuffer->vulkanBuffer->referenceCount) == 0)
|
||||
transferBuffer = transferBufferContainer->backingBuffers[i];
|
||||
if (SDL_AtomicGet(&transferBuffer->vulkanBuffer->referenceCount) == 0)
|
||||
{
|
||||
cpuBufferContainer->activeBuffer = cpuBuffer;
|
||||
transferBufferContainer->activeBuffer = transferBuffer;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* No buffer is available, generate a new one. */
|
||||
cpuBufferContainer->activeBuffer = VULKAN_INTERNAL_CreateBufferContainer(
|
||||
transferBufferContainer->activeBuffer = VULKAN_INTERNAL_CreateBufferContainer(
|
||||
renderer,
|
||||
cpuBufferContainer->sizeInBytes,
|
||||
transferBufferContainer->sizeInBytes,
|
||||
RESOURCE_ACCESS_NONE,
|
||||
VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
|
||||
1,
|
||||
|
@ -8421,40 +8421,40 @@ static void VULKAN_INTERNAL_DiscardActiveCpuBuffer(
|
|||
);
|
||||
|
||||
EXPAND_ARRAY_IF_NEEDED(
|
||||
cpuBufferContainer->backingBuffers,
|
||||
transferBufferContainer->backingBuffers,
|
||||
VulkanBufferContainer*,
|
||||
cpuBufferContainer->bufferCount + 1,
|
||||
cpuBufferContainer->bufferCapacity,
|
||||
cpuBufferContainer->bufferCapacity * 2
|
||||
transferBufferContainer->bufferCount + 1,
|
||||
transferBufferContainer->bufferCapacity,
|
||||
transferBufferContainer->bufferCapacity * 2
|
||||
);
|
||||
|
||||
cpuBufferContainer->backingBuffers[
|
||||
cpuBufferContainer->bufferCount
|
||||
] = cpuBufferContainer->activeBuffer;
|
||||
cpuBufferContainer->bufferCount += 1;
|
||||
transferBufferContainer->backingBuffers[
|
||||
transferBufferContainer->bufferCount
|
||||
] = transferBufferContainer->activeBuffer;
|
||||
transferBufferContainer->bufferCount += 1;
|
||||
}
|
||||
|
||||
static void VULKAN_SetData(
|
||||
Refresh_Renderer *driverData,
|
||||
void* data,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
Refresh_BufferCopy *copyParams,
|
||||
Refresh_SetDataOptions option
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCpuBufferContainer *cpuBufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
|
||||
if (option == REFRESH_SETDATAOPTIONS_SAFEDISCARD && SDL_AtomicGet(&cpuBufferContainer->activeBuffer->vulkanBuffer->referenceCount) > 0)
|
||||
if (option == REFRESH_SETDATAOPTIONS_SAFEDISCARD && SDL_AtomicGet(&transferBufferContainer->activeBuffer->vulkanBuffer->referenceCount) > 0)
|
||||
{
|
||||
VULKAN_INTERNAL_DiscardActiveCpuBuffer(
|
||||
VULKAN_INTERNAL_DiscardActiveTransferBuffer(
|
||||
renderer,
|
||||
cpuBufferContainer
|
||||
transferBufferContainer
|
||||
);
|
||||
}
|
||||
|
||||
uint8_t *bufferPointer =
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->usedRegion->allocation->mapPointer +
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->usedRegion->resourceOffset +
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->usedRegion->allocation->mapPointer +
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->usedRegion->resourceOffset +
|
||||
copyParams->dstOffset;
|
||||
|
||||
SDL_memcpy(
|
||||
|
@ -8466,13 +8466,13 @@ static void VULKAN_SetData(
|
|||
|
||||
static void VULKAN_GetData(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
void* data,
|
||||
Refresh_BufferCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCpuBufferContainer *cpuBufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanBuffer *vulkanBuffer = cpuBufferContainer->activeBuffer->vulkanBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
VulkanBuffer *vulkanBuffer = transferBufferContainer->activeBuffer->vulkanBuffer;
|
||||
|
||||
uint8_t *bufferPointer =
|
||||
vulkanBuffer->usedRegion->allocation->mapPointer +
|
||||
|
@ -8502,13 +8502,13 @@ static void VULKAN_BeginCopyPass(
|
|||
static void VULKAN_UploadToTexture(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
Refresh_TextureSlice *textureSlice,
|
||||
Refresh_BufferImageCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanCpuBufferContainer *bufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
VulkanTexture *vulkanTexture = ((VulkanTextureContainer*) textureSlice->texture)->vulkanTexture;
|
||||
VkBufferImageCopy imageCopy;
|
||||
|
||||
|
@ -8516,7 +8516,7 @@ static void VULKAN_UploadToTexture(
|
|||
renderer,
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
RESOURCE_ACCESS_TRANSFER_READ,
|
||||
bufferContainer->activeBuffer->vulkanBuffer
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_ImageMemoryBarrier(
|
||||
|
@ -8549,14 +8549,14 @@ static void VULKAN_UploadToTexture(
|
|||
|
||||
renderer->vkCmdCopyBufferToImage(
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
bufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
vulkanTexture->image,
|
||||
AccessMap[vulkanTexture->resourceAccessType].imageLayout,
|
||||
1,
|
||||
&imageCopy
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, bufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, transferBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackTexture(renderer, vulkanCommandBuffer, vulkanTexture);
|
||||
VULKAN_INTERNAL_TrackCopiedTexture(renderer, vulkanCommandBuffer, vulkanTexture);
|
||||
}
|
||||
|
@ -8564,13 +8564,13 @@ static void VULKAN_UploadToTexture(
|
|||
static void VULKAN_UploadToBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
Refresh_BufferCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanCpuBufferContainer *cpuBufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
VulkanBuffer *vulkanGpuBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
VkBufferCopy bufferCopy;
|
||||
|
||||
|
@ -8578,7 +8578,7 @@ static void VULKAN_UploadToBuffer(
|
|||
renderer,
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
RESOURCE_ACCESS_TRANSFER_READ,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_BufferMemoryBarrier(
|
||||
|
@ -8594,13 +8594,13 @@ static void VULKAN_UploadToBuffer(
|
|||
|
||||
renderer->vkCmdCopyBuffer(
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
vulkanGpuBuffer->buffer,
|
||||
1,
|
||||
&bufferCopy
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, cpuBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, transferBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, vulkanGpuBuffer);
|
||||
VULKAN_INTERNAL_TrackCopiedBuffer(renderer, vulkanCommandBuffer, vulkanGpuBuffer);
|
||||
}
|
||||
|
@ -8609,20 +8609,20 @@ static void VULKAN_DownloadFromTexture(
|
|||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_TextureSlice *textureSlice,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
Refresh_BufferImageCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanTexture *vulkanTexture = ((VulkanTextureContainer*) textureSlice->texture)->vulkanTexture;
|
||||
VulkanCpuBufferContainer *cpuBufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
VkBufferImageCopy imageCopy;
|
||||
|
||||
VULKAN_INTERNAL_BufferMemoryBarrier(
|
||||
renderer,
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
RESOURCE_ACCESS_TRANSFER_WRITE,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_ImageMemoryBarrier(
|
||||
|
@ -8657,28 +8657,28 @@ static void VULKAN_DownloadFromTexture(
|
|||
vulkanCommandBuffer->commandBuffer,
|
||||
vulkanTexture->image,
|
||||
AccessMap[vulkanTexture->resourceAccessType].imageLayout,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
1,
|
||||
&imageCopy
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, cpuBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, transferBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackTexture(renderer, vulkanCommandBuffer, vulkanTexture);
|
||||
VULKAN_INTERNAL_TrackCopiedTexture(renderer, vulkanCommandBuffer, vulkanTexture);
|
||||
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 1;
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 1;
|
||||
}
|
||||
|
||||
static void VULKAN_DownloadFromBuffer(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
Refresh_CpuBuffer *cpuBuffer,
|
||||
Refresh_TransferBuffer *transferBuffer,
|
||||
Refresh_BufferCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanCpuBufferContainer *cpuBufferContainer = (VulkanCpuBufferContainer*) cpuBuffer;
|
||||
VulkanTransferBufferContainer *transferBufferContainer = (VulkanTransferBufferContainer*) transferBuffer;
|
||||
VulkanBuffer *vulkanGpuBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
VkBufferCopy bufferCopy;
|
||||
|
||||
|
@ -8686,7 +8686,7 @@ static void VULKAN_DownloadFromBuffer(
|
|||
renderer,
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
RESOURCE_ACCESS_TRANSFER_WRITE,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_BufferMemoryBarrier(
|
||||
|
@ -8703,16 +8703,16 @@ static void VULKAN_DownloadFromBuffer(
|
|||
renderer->vkCmdCopyBuffer(
|
||||
vulkanCommandBuffer->commandBuffer,
|
||||
vulkanGpuBuffer->buffer,
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->buffer,
|
||||
1,
|
||||
&bufferCopy
|
||||
);
|
||||
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, cpuBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, transferBufferContainer->activeBuffer->vulkanBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, vulkanGpuBuffer);
|
||||
VULKAN_INTERNAL_TrackBuffer(renderer, vulkanCommandBuffer, vulkanGpuBuffer);
|
||||
|
||||
cpuBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 1;
|
||||
transferBufferContainer->activeBuffer->vulkanBuffer->preserveContentsOnDefrag = 1;
|
||||
}
|
||||
|
||||
static void VULKAN_CopyTextureToTexture(
|
||||
|
@ -8793,13 +8793,13 @@ static void VULKAN_CopyTextureToBuffer(
|
|||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_TextureSlice *textureSlice,
|
||||
Refresh_GpuBuffer *buffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
Refresh_BufferImageCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanTexture *vulkanTexture = ((VulkanTextureContainer*) textureSlice->texture)->vulkanTexture;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) buffer)->vulkanBuffer;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
VkBufferImageCopy imageCopy;
|
||||
|
||||
VULKAN_INTERNAL_ImageMemoryBarrier(
|
||||
|
@ -8855,13 +8855,13 @@ static void VULKAN_CopyTextureToBuffer(
|
|||
static void VULKAN_CopyBufferToTexture(
|
||||
Refresh_Renderer *driverData,
|
||||
Refresh_CommandBuffer *commandBuffer,
|
||||
Refresh_GpuBuffer *buffer,
|
||||
Refresh_GpuBuffer *gpuBuffer,
|
||||
Refresh_TextureSlice *textureSlice,
|
||||
Refresh_BufferImageCopy *copyParams
|
||||
) {
|
||||
VulkanRenderer *renderer = (VulkanRenderer*) driverData;
|
||||
VulkanCommandBuffer *vulkanCommandBuffer = (VulkanCommandBuffer*) commandBuffer;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) buffer)->vulkanBuffer;
|
||||
VulkanBuffer *vulkanBuffer = ((VulkanBufferContainer*) gpuBuffer)->vulkanBuffer;
|
||||
VulkanTexture *vulkanTexture = ((VulkanTextureContainer*) textureSlice->texture)->vulkanTexture;
|
||||
VkBufferImageCopy imageCopy;
|
||||
|
||||
|
|
Loading…
Reference in New Issue