mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 10:49:14 +00:00
Rename Transfer[Src|Dst] to Copy[Src|Dst]
This is to match the equivalent rename in WebGPU's IDL. BUG=dawn:22 Change-Id: Ibdf75869e58835d984df559878b884c55310a403 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/8623 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Yunchao He <yunchao.he@intel.com>
This commit is contained in:
committed by
Commit Bot service account
parent
3c3e2bc4d9
commit
ec05355c72
@@ -91,15 +91,15 @@ namespace dawn_native {
|
||||
dawn::BufferUsageBit usage = descriptor->usage;
|
||||
|
||||
const dawn::BufferUsageBit kMapWriteAllowedUsages =
|
||||
dawn::BufferUsageBit::MapWrite | dawn::BufferUsageBit::TransferSrc;
|
||||
dawn::BufferUsageBit::MapWrite | dawn::BufferUsageBit::CopySrc;
|
||||
if (usage & dawn::BufferUsageBit::MapWrite && (usage & kMapWriteAllowedUsages) != usage) {
|
||||
return DAWN_VALIDATION_ERROR("Only TransferSrc is allowed with MapWrite");
|
||||
return DAWN_VALIDATION_ERROR("Only CopySrc is allowed with MapWrite");
|
||||
}
|
||||
|
||||
const dawn::BufferUsageBit kMapReadAllowedUsages =
|
||||
dawn::BufferUsageBit::MapRead | dawn::BufferUsageBit::TransferDst;
|
||||
dawn::BufferUsageBit::MapRead | dawn::BufferUsageBit::CopyDst;
|
||||
if (usage & dawn::BufferUsageBit::MapRead && (usage & kMapReadAllowedUsages) != usage) {
|
||||
return DAWN_VALIDATION_ERROR("Only TransferDst is allowed with MapRead");
|
||||
return DAWN_VALIDATION_ERROR("Only CopyDst is allowed with MapRead");
|
||||
}
|
||||
|
||||
return {};
|
||||
@@ -374,8 +374,8 @@ namespace dawn_native {
|
||||
return DAWN_VALIDATION_ERROR("Buffer subdata out of range");
|
||||
}
|
||||
|
||||
if (!(mUsage & dawn::BufferUsageBit::TransferDst)) {
|
||||
return DAWN_VALIDATION_ERROR("Buffer needs the transfer dst usage bit");
|
||||
if (!(mUsage & dawn::BufferUsageBit::CopyDst)) {
|
||||
return DAWN_VALIDATION_ERROR("Buffer needs the CopyDst usage bit");
|
||||
}
|
||||
|
||||
return {};
|
||||
|
||||
@@ -26,12 +26,12 @@ namespace dawn_native {
|
||||
MaybeError ValidateBufferDescriptor(DeviceBase* device, const BufferDescriptor* descriptor);
|
||||
|
||||
static constexpr dawn::BufferUsageBit kReadOnlyBufferUsages =
|
||||
dawn::BufferUsageBit::MapRead | dawn::BufferUsageBit::TransferSrc |
|
||||
dawn::BufferUsageBit::MapRead | dawn::BufferUsageBit::CopySrc |
|
||||
dawn::BufferUsageBit::Index | dawn::BufferUsageBit::Vertex | dawn::BufferUsageBit::Uniform;
|
||||
|
||||
static constexpr dawn::BufferUsageBit kWritableBufferUsages =
|
||||
dawn::BufferUsageBit::MapWrite | dawn::BufferUsageBit::TransferDst |
|
||||
dawn::BufferUsageBit::Storage;
|
||||
static constexpr dawn::BufferUsageBit kWritableBufferUsages = dawn::BufferUsageBit::MapWrite |
|
||||
dawn::BufferUsageBit::CopyDst |
|
||||
dawn::BufferUsageBit::Storage;
|
||||
|
||||
class BufferBase : public ObjectBase {
|
||||
enum class BufferState {
|
||||
|
||||
@@ -931,10 +931,9 @@ namespace dawn_native {
|
||||
DAWN_TRY(ValidateB2BCopySizeAlignment(copy->size, copy->sourceOffset,
|
||||
copy->destinationOffset));
|
||||
|
||||
DAWN_TRY(ValidateCanUseAs(copy->source.Get(), dawn::BufferUsageBit::CopySrc));
|
||||
DAWN_TRY(
|
||||
ValidateCanUseAs(copy->source.Get(), dawn::BufferUsageBit::TransferSrc));
|
||||
DAWN_TRY(ValidateCanUseAs(copy->destination.Get(),
|
||||
dawn::BufferUsageBit::TransferDst));
|
||||
ValidateCanUseAs(copy->destination.Get(), dawn::BufferUsageBit::CopyDst));
|
||||
|
||||
mResourceUsages.topLevelBuffers.insert(copy->source.Get());
|
||||
mResourceUsages.topLevelBuffers.insert(copy->destination.Get());
|
||||
@@ -966,10 +965,10 @@ namespace dawn_native {
|
||||
DAWN_TRY(ValidateTexelBufferOffset(copy->source,
|
||||
copy->destination.texture->GetFormat()));
|
||||
|
||||
DAWN_TRY(ValidateCanUseAs(copy->source.buffer.Get(),
|
||||
dawn::BufferUsageBit::TransferSrc));
|
||||
DAWN_TRY(
|
||||
ValidateCanUseAs(copy->source.buffer.Get(), dawn::BufferUsageBit::CopySrc));
|
||||
DAWN_TRY(ValidateCanUseAs(copy->destination.texture.Get(),
|
||||
dawn::TextureUsageBit::TransferDst));
|
||||
dawn::TextureUsageBit::CopyDst));
|
||||
|
||||
mResourceUsages.topLevelBuffers.insert(copy->source.buffer.Get());
|
||||
mResourceUsages.topLevelTextures.insert(copy->destination.texture.Get());
|
||||
@@ -1002,9 +1001,9 @@ namespace dawn_native {
|
||||
copy->source.texture->GetFormat()));
|
||||
|
||||
DAWN_TRY(ValidateCanUseAs(copy->source.texture.Get(),
|
||||
dawn::TextureUsageBit::TransferSrc));
|
||||
dawn::TextureUsageBit::CopySrc));
|
||||
DAWN_TRY(ValidateCanUseAs(copy->destination.buffer.Get(),
|
||||
dawn::BufferUsageBit::TransferDst));
|
||||
dawn::BufferUsageBit::CopyDst));
|
||||
|
||||
mResourceUsages.topLevelTextures.insert(copy->source.texture.Get());
|
||||
mResourceUsages.topLevelBuffers.insert(copy->destination.buffer.Get());
|
||||
@@ -1030,9 +1029,9 @@ namespace dawn_native {
|
||||
DAWN_TRY(ValidateCopySizeFitsInTexture(copy->destination, copy->copySize));
|
||||
|
||||
DAWN_TRY(ValidateCanUseAs(copy->source.texture.Get(),
|
||||
dawn::TextureUsageBit::TransferSrc));
|
||||
dawn::TextureUsageBit::CopySrc));
|
||||
DAWN_TRY(ValidateCanUseAs(copy->destination.texture.Get(),
|
||||
dawn::TextureUsageBit::TransferDst));
|
||||
dawn::TextureUsageBit::CopyDst));
|
||||
|
||||
mResourceUsages.topLevelTextures.insert(copy->source.texture.Get());
|
||||
mResourceUsages.topLevelTextures.insert(copy->destination.texture.Get());
|
||||
|
||||
@@ -309,8 +309,8 @@ namespace dawn_native {
|
||||
DAWN_TRY(ValidateTextureUsageBit(descriptor->usage));
|
||||
if (format.isCompressed) {
|
||||
constexpr dawn::TextureUsageBit kValidUsage = dawn::TextureUsageBit::Sampled |
|
||||
dawn::TextureUsageBit::TransferSrc |
|
||||
dawn::TextureUsageBit::TransferDst;
|
||||
dawn::TextureUsageBit::CopySrc |
|
||||
dawn::TextureUsageBit::CopyDst;
|
||||
if (descriptor->usage & (~kValidUsage)) {
|
||||
return DAWN_VALIDATION_ERROR(
|
||||
"Compressed texture format is incompatible with the texture usage");
|
||||
|
||||
@@ -31,12 +31,12 @@ namespace dawn_native {
|
||||
|
||||
bool IsValidSampleCount(uint32_t sampleCount);
|
||||
|
||||
static constexpr dawn::TextureUsageBit kReadOnlyTextureUsages =
|
||||
dawn::TextureUsageBit::TransferSrc | dawn::TextureUsageBit::Sampled |
|
||||
dawn::TextureUsageBit::Present;
|
||||
static constexpr dawn::TextureUsageBit kReadOnlyTextureUsages = dawn::TextureUsageBit::CopySrc |
|
||||
dawn::TextureUsageBit::Sampled |
|
||||
dawn::TextureUsageBit::Present;
|
||||
|
||||
static constexpr dawn::TextureUsageBit kWritableTextureUsages =
|
||||
dawn::TextureUsageBit::TransferDst | dawn::TextureUsageBit::Storage |
|
||||
dawn::TextureUsageBit::CopyDst | dawn::TextureUsageBit::Storage |
|
||||
dawn::TextureUsageBit::OutputAttachment;
|
||||
|
||||
struct Format {
|
||||
|
||||
@@ -36,10 +36,10 @@ namespace dawn_native { namespace d3d12 {
|
||||
D3D12_RESOURCE_STATES D3D12BufferUsage(dawn::BufferUsageBit usage) {
|
||||
D3D12_RESOURCE_STATES resourceState = D3D12_RESOURCE_STATE_COMMON;
|
||||
|
||||
if (usage & dawn::BufferUsageBit::TransferSrc) {
|
||||
if (usage & dawn::BufferUsageBit::CopySrc) {
|
||||
resourceState |= D3D12_RESOURCE_STATE_COPY_SOURCE;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::TransferDst) {
|
||||
if (usage & dawn::BufferUsageBit::CopyDst) {
|
||||
resourceState |= D3D12_RESOURCE_STATE_COPY_DEST;
|
||||
}
|
||||
if (usage & (dawn::BufferUsageBit::Vertex | dawn::BufferUsageBit::Uniform)) {
|
||||
@@ -82,10 +82,9 @@ namespace dawn_native { namespace d3d12 {
|
||||
resourceDescriptor.SampleDesc.Count = 1;
|
||||
resourceDescriptor.SampleDesc.Quality = 0;
|
||||
resourceDescriptor.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
|
||||
// Add TransferDst for non-mappable buffer initialization in CreateBufferMapped
|
||||
// Add CopyDst for non-mappable buffer initialization in CreateBufferMapped
|
||||
// and robust resource initialization.
|
||||
resourceDescriptor.Flags =
|
||||
D3D12ResourceFlags(GetUsage() | dawn::BufferUsageBit::TransferDst);
|
||||
resourceDescriptor.Flags = D3D12ResourceFlags(GetUsage() | dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
auto heapType = D3D12HeapType(GetUsage());
|
||||
auto bufferUsage = D3D12_RESOURCE_STATE_COMMON;
|
||||
@@ -95,7 +94,7 @@ namespace dawn_native { namespace d3d12 {
|
||||
if (heapType == D3D12_HEAP_TYPE_READBACK) {
|
||||
bufferUsage |= D3D12_RESOURCE_STATE_COPY_DEST;
|
||||
mFixedResourceState = true;
|
||||
mLastUsage = dawn::BufferUsageBit::TransferDst;
|
||||
mLastUsage = dawn::BufferUsageBit::CopyDst;
|
||||
}
|
||||
|
||||
// D3D12 requires buffers on the UPLOAD heap to have the D3D12_RESOURCE_STATE_GENERIC_READ
|
||||
@@ -103,7 +102,7 @@ namespace dawn_native { namespace d3d12 {
|
||||
if (heapType == D3D12_HEAP_TYPE_UPLOAD) {
|
||||
bufferUsage |= D3D12_RESOURCE_STATE_GENERIC_READ;
|
||||
mFixedResourceState = true;
|
||||
mLastUsage = dawn::BufferUsageBit::TransferSrc;
|
||||
mLastUsage = dawn::BufferUsageBit::CopySrc;
|
||||
}
|
||||
|
||||
mResource =
|
||||
|
||||
@@ -495,8 +495,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
Buffer* srcBuffer = ToBackend(copy->source.Get());
|
||||
Buffer* dstBuffer = ToBackend(copy->destination.Get());
|
||||
|
||||
srcBuffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::TransferSrc);
|
||||
dstBuffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::TransferDst);
|
||||
srcBuffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::CopySrc);
|
||||
dstBuffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
commandList->CopyBufferRegion(
|
||||
dstBuffer->GetD3D12Resource().Get(), copy->destinationOffset,
|
||||
@@ -518,8 +518,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
copy->destination.arrayLayer, 1);
|
||||
}
|
||||
|
||||
buffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::TransferSrc);
|
||||
texture->TransitionUsageNow(commandList, dawn::TextureUsageBit::TransferDst);
|
||||
buffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::CopySrc);
|
||||
texture->TransitionUsageNow(commandList, dawn::TextureUsageBit::CopyDst);
|
||||
|
||||
auto copySplit = ComputeTextureCopySplit(
|
||||
copy->destination.origin, copy->copySize, texture->GetFormat(),
|
||||
@@ -564,8 +564,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
texture->EnsureSubresourceContentInitialized(commandList, copy->source.mipLevel,
|
||||
1, copy->source.arrayLayer, 1);
|
||||
|
||||
texture->TransitionUsageNow(commandList, dawn::TextureUsageBit::TransferSrc);
|
||||
buffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::TransferDst);
|
||||
texture->TransitionUsageNow(commandList, dawn::TextureUsageBit::CopySrc);
|
||||
buffer->TransitionUsageNow(commandList, dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
auto copySplit = ComputeTextureCopySplit(
|
||||
copy->source.origin, copy->copySize, texture->GetFormat(),
|
||||
@@ -622,9 +622,8 @@ namespace dawn_native { namespace d3d12 {
|
||||
commandList, copy->destination.mipLevel, 1,
|
||||
copy->destination.arrayLayer, 1);
|
||||
}
|
||||
source->TransitionUsageNow(commandList, dawn::TextureUsageBit::TransferSrc);
|
||||
destination->TransitionUsageNow(commandList,
|
||||
dawn::TextureUsageBit::TransferDst);
|
||||
source->TransitionUsageNow(commandList, dawn::TextureUsageBit::CopySrc);
|
||||
destination->TransitionUsageNow(commandList, dawn::TextureUsageBit::CopyDst);
|
||||
|
||||
if (CanUseCopyResource(source->GetNumMipLevels(), source->GetSize(),
|
||||
destination->GetSize(), copy->copySize)) {
|
||||
|
||||
@@ -312,7 +312,7 @@ namespace dawn_native { namespace d3d12 {
|
||||
uint64_t destinationOffset,
|
||||
uint64_t size) {
|
||||
ToBackend(destination)
|
||||
->TransitionUsageNow(GetPendingCommandList(), dawn::BufferUsageBit::TransferDst);
|
||||
->TransitionUsageNow(GetPendingCommandList(), dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
GetPendingCommandList()->CopyBufferRegion(
|
||||
ToBackend(destination)->GetD3D12Resource().Get(), destinationOffset,
|
||||
|
||||
@@ -29,10 +29,10 @@ namespace dawn_native { namespace d3d12 {
|
||||
return D3D12_RESOURCE_STATE_PRESENT;
|
||||
}
|
||||
|
||||
if (usage & dawn::TextureUsageBit::TransferSrc) {
|
||||
if (usage & dawn::TextureUsageBit::CopySrc) {
|
||||
resourceState |= D3D12_RESOURCE_STATE_COPY_SOURCE;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::TransferDst) {
|
||||
if (usage & dawn::TextureUsageBit::CopyDst) {
|
||||
resourceState |= D3D12_RESOURCE_STATE_COPY_DEST;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::Sampled) {
|
||||
|
||||
@@ -26,10 +26,10 @@ namespace dawn_native { namespace vulkan {
|
||||
VkBufferUsageFlags VulkanBufferUsage(dawn::BufferUsageBit usage) {
|
||||
VkBufferUsageFlags flags = 0;
|
||||
|
||||
if (usage & dawn::BufferUsageBit::TransferSrc) {
|
||||
if (usage & dawn::BufferUsageBit::CopySrc) {
|
||||
flags |= VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::TransferDst) {
|
||||
if (usage & dawn::BufferUsageBit::CopyDst) {
|
||||
flags |= VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::Index) {
|
||||
@@ -57,7 +57,7 @@ namespace dawn_native { namespace vulkan {
|
||||
if (usage & (dawn::BufferUsageBit::MapRead | dawn::BufferUsageBit::MapWrite)) {
|
||||
flags |= VK_PIPELINE_STAGE_HOST_BIT;
|
||||
}
|
||||
if (usage & (dawn::BufferUsageBit::TransferSrc | dawn::BufferUsageBit::TransferDst)) {
|
||||
if (usage & (dawn::BufferUsageBit::CopySrc | dawn::BufferUsageBit::CopyDst)) {
|
||||
flags |= VK_PIPELINE_STAGE_TRANSFER_BIT;
|
||||
}
|
||||
if (usage & (dawn::BufferUsageBit::Index | dawn::BufferUsageBit::Vertex)) {
|
||||
@@ -84,10 +84,10 @@ namespace dawn_native { namespace vulkan {
|
||||
if (usage & dawn::BufferUsageBit::MapWrite) {
|
||||
flags |= VK_ACCESS_HOST_WRITE_BIT;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::TransferSrc) {
|
||||
if (usage & dawn::BufferUsageBit::CopySrc) {
|
||||
flags |= VK_ACCESS_TRANSFER_READ_BIT;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::TransferDst) {
|
||||
if (usage & dawn::BufferUsageBit::CopyDst) {
|
||||
flags |= VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
}
|
||||
if (usage & dawn::BufferUsageBit::Index) {
|
||||
@@ -118,9 +118,9 @@ namespace dawn_native { namespace vulkan {
|
||||
createInfo.pNext = nullptr;
|
||||
createInfo.flags = 0;
|
||||
createInfo.size = GetSize();
|
||||
// Add TransferDst for non-mappable buffer initialization in CreateBufferMapped
|
||||
// Add CopyDst for non-mappable buffer initialization in CreateBufferMapped
|
||||
// and robust resource initialization.
|
||||
createInfo.usage = VulkanBufferUsage(GetUsage() | dawn::BufferUsageBit::TransferDst);
|
||||
createInfo.usage = VulkanBufferUsage(GetUsage() | dawn::BufferUsageBit::CopyDst);
|
||||
createInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||
createInfo.queueFamilyIndexCount = 0;
|
||||
createInfo.pQueueFamilyIndices = 0;
|
||||
|
||||
@@ -366,8 +366,8 @@ namespace dawn_native { namespace vulkan {
|
||||
Buffer* srcBuffer = ToBackend(copy->source.Get());
|
||||
Buffer* dstBuffer = ToBackend(copy->destination.Get());
|
||||
|
||||
srcBuffer->TransitionUsageNow(commands, dawn::BufferUsageBit::TransferSrc);
|
||||
dstBuffer->TransitionUsageNow(commands, dawn::BufferUsageBit::TransferDst);
|
||||
srcBuffer->TransitionUsageNow(commands, dawn::BufferUsageBit::CopySrc);
|
||||
dstBuffer->TransitionUsageNow(commands, dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
VkBufferCopy region;
|
||||
region.srcOffset = copy->sourceOffset;
|
||||
@@ -399,9 +399,9 @@ namespace dawn_native { namespace vulkan {
|
||||
subresource.baseArrayLayer, 1);
|
||||
}
|
||||
ToBackend(src.buffer)
|
||||
->TransitionUsageNow(commands, dawn::BufferUsageBit::TransferSrc);
|
||||
->TransitionUsageNow(commands, dawn::BufferUsageBit::CopySrc);
|
||||
ToBackend(dst.texture)
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::TransferDst);
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::CopyDst);
|
||||
VkBuffer srcBuffer = ToBackend(src.buffer)->GetHandle();
|
||||
VkImage dstImage = ToBackend(dst.texture)->GetHandle();
|
||||
|
||||
@@ -426,13 +426,13 @@ namespace dawn_native { namespace vulkan {
|
||||
subresource.baseArrayLayer, 1);
|
||||
|
||||
ToBackend(src.texture)
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::TransferSrc);
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::CopySrc);
|
||||
ToBackend(dst.buffer)
|
||||
->TransitionUsageNow(commands, dawn::BufferUsageBit::TransferDst);
|
||||
->TransitionUsageNow(commands, dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
VkImage srcImage = ToBackend(src.texture)->GetHandle();
|
||||
VkBuffer dstBuffer = ToBackend(dst.buffer)->GetHandle();
|
||||
// The Dawn TransferSrc usage is always mapped to GENERAL
|
||||
// The Dawn CopySrc usage is always mapped to GENERAL
|
||||
device->fn.CmdCopyImageToBuffer(commands, srcImage, VK_IMAGE_LAYOUT_GENERAL,
|
||||
dstBuffer, 1, ®ion);
|
||||
} break;
|
||||
@@ -462,9 +462,9 @@ namespace dawn_native { namespace vulkan {
|
||||
1);
|
||||
}
|
||||
ToBackend(src.texture)
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::TransferSrc);
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::CopySrc);
|
||||
ToBackend(dst.texture)
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::TransferDst);
|
||||
->TransitionUsageNow(commands, dawn::TextureUsageBit::CopyDst);
|
||||
VkImage srcImage = ToBackend(src.texture)->GetHandle();
|
||||
VkImage dstImage = ToBackend(dst.texture)->GetHandle();
|
||||
|
||||
|
||||
@@ -525,7 +525,7 @@ namespace dawn_native { namespace vulkan {
|
||||
// Insert pipeline barrier to ensure correct ordering with previous memory operations on the
|
||||
// buffer.
|
||||
ToBackend(destination)
|
||||
->TransitionUsageNow(GetPendingCommandBuffer(), dawn::BufferUsageBit::TransferDst);
|
||||
->TransitionUsageNow(GetPendingCommandBuffer(), dawn::BufferUsageBit::CopyDst);
|
||||
|
||||
VkBufferCopy copy;
|
||||
copy.srcOffset = sourceOffset;
|
||||
|
||||
@@ -54,10 +54,10 @@ namespace dawn_native { namespace vulkan {
|
||||
VkAccessFlags VulkanAccessFlags(dawn::TextureUsageBit usage, const Format& format) {
|
||||
VkAccessFlags flags = 0;
|
||||
|
||||
if (usage & dawn::TextureUsageBit::TransferSrc) {
|
||||
if (usage & dawn::TextureUsageBit::CopySrc) {
|
||||
flags |= VK_ACCESS_TRANSFER_READ_BIT;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::TransferDst) {
|
||||
if (usage & dawn::TextureUsageBit::CopyDst) {
|
||||
flags |= VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::Sampled) {
|
||||
@@ -99,16 +99,16 @@ namespace dawn_native { namespace vulkan {
|
||||
|
||||
// Usage has a single bit so we can switch on its value directly.
|
||||
switch (usage) {
|
||||
case dawn::TextureUsageBit::TransferDst:
|
||||
case dawn::TextureUsageBit::CopyDst:
|
||||
return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
case dawn::TextureUsageBit::Sampled:
|
||||
return VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
// Vulkan texture copy functions require the image to be in _one_ known layout.
|
||||
// Depending on whether parts of the texture have been transitioned to only
|
||||
// TransferSrc or a combination with something else, the texture could be in a
|
||||
// CopySrc or a combination with something else, the texture could be in a
|
||||
// combination of GENERAL and TRANSFER_SRC_OPTIMAL. This would be a problem, so we
|
||||
// make TransferSrc use GENERAL.
|
||||
case dawn::TextureUsageBit::TransferSrc:
|
||||
// make CopySrc use GENERAL.
|
||||
case dawn::TextureUsageBit::CopySrc:
|
||||
// Writable storage textures must use general. If we could know the texture is read
|
||||
// only we could use SHADER_READ_ONLY_OPTIMAL
|
||||
case dawn::TextureUsageBit::Storage:
|
||||
@@ -136,7 +136,7 @@ namespace dawn_native { namespace vulkan {
|
||||
// which case there is no need to wait on anything to stop accessing this texture.
|
||||
return VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
|
||||
}
|
||||
if (usage & (dawn::TextureUsageBit::TransferSrc | dawn::TextureUsageBit::TransferDst)) {
|
||||
if (usage & (dawn::TextureUsageBit::CopySrc | dawn::TextureUsageBit::CopyDst)) {
|
||||
flags |= VK_PIPELINE_STAGE_TRANSFER_BIT;
|
||||
}
|
||||
if (usage & (dawn::TextureUsageBit::Sampled | dawn::TextureUsageBit::Storage)) {
|
||||
@@ -344,10 +344,10 @@ namespace dawn_native { namespace vulkan {
|
||||
VkImageUsageFlags VulkanImageUsage(dawn::TextureUsageBit usage, const Format& format) {
|
||||
VkImageUsageFlags flags = 0;
|
||||
|
||||
if (usage & dawn::TextureUsageBit::TransferSrc) {
|
||||
if (usage & dawn::TextureUsageBit::CopySrc) {
|
||||
flags |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::TransferDst) {
|
||||
if (usage & dawn::TextureUsageBit::CopyDst) {
|
||||
flags |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
|
||||
}
|
||||
if (usage & dawn::TextureUsageBit::Sampled) {
|
||||
@@ -437,7 +437,7 @@ namespace dawn_native { namespace vulkan {
|
||||
range.baseArrayLayer = 0;
|
||||
range.layerCount = GetArrayLayers();
|
||||
TransitionUsageNow(ToBackend(GetDevice())->GetPendingCommandBuffer(),
|
||||
dawn::TextureUsageBit::TransferDst);
|
||||
dawn::TextureUsageBit::CopyDst);
|
||||
|
||||
if (GetFormat().HasDepthOrStencil()) {
|
||||
VkClearDepthStencilValue clear_color[1];
|
||||
@@ -543,7 +543,7 @@ namespace dawn_native { namespace vulkan {
|
||||
range.baseArrayLayer = baseArrayLayer;
|
||||
range.layerCount = layerCount;
|
||||
|
||||
TransitionUsageNow(commands, dawn::TextureUsageBit::TransferDst);
|
||||
TransitionUsageNow(commands, dawn::TextureUsageBit::CopyDst);
|
||||
if (GetFormat().HasDepthOrStencil()) {
|
||||
VkClearDepthStencilValue clear_color[1];
|
||||
clear_color[0].depth = 0.0f;
|
||||
|
||||
Reference in New Issue
Block a user