Make EnumClassBitmask operations constexpr

This allows declaring combinations of bits as constants in header.
kReadOnlyBufferUsages is added using this feature.

Also reformat the file.
This commit is contained in:
Corentin Wallez
2018-07-05 16:29:12 +02:00
committed by Corentin Wallez
parent 23bec15f4c
commit 117f2f0ad6
3 changed files with 38 additions and 22 deletions

View File

@@ -164,11 +164,8 @@ namespace backend {
}
bool BufferBase::IsUsagePossible(nxt::BufferUsageBit allowedUsage, nxt::BufferUsageBit usage) {
const nxt::BufferUsageBit allReadBits =
nxt::BufferUsageBit::MapRead | nxt::BufferUsageBit::TransferSrc |
nxt::BufferUsageBit::Index | nxt::BufferUsageBit::Vertex | nxt::BufferUsageBit::Uniform;
bool allowed = (usage & allowedUsage) == usage;
bool readOnly = (usage & allReadBits) == usage;
bool readOnly = (usage & kReadOnlyBufferUsages) == usage;
bool singleUse = nxt::HasZeroOrOneBits(usage);
return allowed && (readOnly || singleUse);
}

View File

@@ -23,6 +23,14 @@
namespace backend {
static constexpr nxt::BufferUsageBit kReadOnlyBufferUsages =
nxt::BufferUsageBit::MapRead | nxt::BufferUsageBit::TransferSrc |
nxt::BufferUsageBit::Index | nxt::BufferUsageBit::Vertex | nxt::BufferUsageBit::Uniform;
static constexpr nxt::BufferUsageBit kWritableBufferUsages = nxt::BufferUsageBit::MapWrite |
nxt::BufferUsageBit::TransferDst |
nxt::BufferUsageBit::Storage;
class BufferBase : public RefCounted {
public:
BufferBase(BufferBuilder* builder);