mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 07:36:15 +00:00
Add restrictions on usages allowed with MapRead/Write
This commit is contained in:
committed by
Corentin Wallez
parent
769b00fc23
commit
702186e169
@@ -188,12 +188,25 @@ namespace backend {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const nxt::BufferUsageBit kMapWriteAllowedUsages = nxt::BufferUsageBit::MapWrite | nxt::BufferUsageBit::TransferSrc;
|
||||
if (allowedUsage & nxt::BufferUsageBit::MapWrite &&
|
||||
(allowedUsage & kMapWriteAllowedUsages) != allowedUsage) {
|
||||
HandleError("Only TransferSrc is allowed with MapWrite");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const nxt::BufferUsageBit kMapReadAllowedUsages = nxt::BufferUsageBit::MapRead | nxt::BufferUsageBit::TransferDst;
|
||||
if (allowedUsage & nxt::BufferUsageBit::MapRead &&
|
||||
(allowedUsage & kMapReadAllowedUsages) != allowedUsage) {
|
||||
HandleError("Only TransferDst is allowed with MapRead");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!BufferBase::IsUsagePossible(allowedUsage, currentUsage)) {
|
||||
HandleError("Initial buffer usage is not allowed");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// TODO(cwallez@chromium.org) disallow using MapRead with anything else than TransferDst
|
||||
return device->CreateBuffer(this);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user