Refactor enum flags with __underlying_type and new EnumHasAnyFlags/EnumHasAllFlags
Fixes #832 Closes #886
This commit is contained in:
@@ -172,7 +172,7 @@ bool GPUBufferDX12::OnInit()
|
||||
}
|
||||
|
||||
// Check if need to use a counter
|
||||
if (_desc.Flags & GPUBufferFlags::Counter || _desc.Flags & GPUBufferFlags::Append)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Counter) || EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Append))
|
||||
{
|
||||
#if GPU_ENABLE_RESOURCE_NAMING
|
||||
String name = String(GetName()) + TEXT(".Counter");
|
||||
@@ -192,7 +192,7 @@ bool GPUBufferDX12::OnInit()
|
||||
if (useSRV)
|
||||
{
|
||||
D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc;
|
||||
if (_desc.Flags & GPUBufferFlags::RawBuffer)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::RawBuffer))
|
||||
srvDesc.Format = RenderToolsDX::ToDxgiFormat(_desc.Format);
|
||||
else
|
||||
srvDesc.Format = RenderToolsDX::ToDxgiFormat(PixelFormatExtensions::FindShaderResourceFormat(_desc.Format, false));
|
||||
@@ -201,7 +201,7 @@ bool GPUBufferDX12::OnInit()
|
||||
srvDesc.Buffer.FirstElement = 0;
|
||||
srvDesc.Buffer.NumElements = numElements;
|
||||
srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
|
||||
if (_desc.Flags & GPUBufferFlags::Structured)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Structured))
|
||||
{
|
||||
srvDesc.Buffer.StructureByteStride = _desc.Stride;
|
||||
srvDesc.Format = DXGI_FORMAT_UNKNOWN;
|
||||
@@ -210,7 +210,7 @@ bool GPUBufferDX12::OnInit()
|
||||
{
|
||||
srvDesc.Buffer.StructureByteStride = 0;
|
||||
}
|
||||
if (_desc.Flags & GPUBufferFlags::RawBuffer)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::RawBuffer))
|
||||
srvDesc.Buffer.Flags |= D3D12_BUFFER_SRV_FLAG_RAW;
|
||||
_view.SetSRV(srvDesc);
|
||||
}
|
||||
@@ -223,11 +223,11 @@ bool GPUBufferDX12::OnInit()
|
||||
uavDesc.Buffer.CounterOffsetInBytes = 0;
|
||||
uavDesc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
|
||||
uavDesc.Buffer.NumElements = numElements;
|
||||
if (_desc.Flags & GPUBufferFlags::Structured)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Structured))
|
||||
uavDesc.Buffer.StructureByteStride = _desc.Stride;
|
||||
if (_desc.Flags & GPUBufferFlags::RawBuffer)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::RawBuffer))
|
||||
uavDesc.Buffer.Flags |= D3D12_BUFFER_UAV_FLAG_RAW;
|
||||
if (_desc.Flags & GPUBufferFlags::Structured)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUBufferFlags::Structured))
|
||||
uavDesc.Format = DXGI_FORMAT_UNKNOWN;
|
||||
else
|
||||
uavDesc.Format = RenderToolsDX::ToDxgiFormat(PixelFormatExtensions::FindUnorderedAccessFormat(_desc.Format));
|
||||
|
||||
@@ -1100,7 +1100,7 @@ void GPUContextDX12::DrawIndexedInstanced(uint32 indicesCount, uint32 instanceCo
|
||||
|
||||
void GPUContextDX12::DrawInstancedIndirect(GPUBuffer* bufferForArgs, uint32 offsetForArgs)
|
||||
{
|
||||
ASSERT(bufferForArgs && bufferForArgs->GetFlags() & GPUBufferFlags::Argument);
|
||||
ASSERT(bufferForArgs && EnumHasAnyFlags(bufferForArgs->GetFlags(), GPUBufferFlags::Argument));
|
||||
|
||||
auto bufferForArgsDX12 = (GPUBufferDX12*)bufferForArgs;
|
||||
auto signature = _device->DrawIndirectCommandSignature->GetSignature();
|
||||
@@ -1113,7 +1113,7 @@ void GPUContextDX12::DrawInstancedIndirect(GPUBuffer* bufferForArgs, uint32 offs
|
||||
|
||||
void GPUContextDX12::DrawIndexedInstancedIndirect(GPUBuffer* bufferForArgs, uint32 offsetForArgs)
|
||||
{
|
||||
ASSERT(bufferForArgs && bufferForArgs->GetFlags() & GPUBufferFlags::Argument);
|
||||
ASSERT(bufferForArgs && EnumHasAnyFlags(bufferForArgs->GetFlags(), GPUBufferFlags::Argument));
|
||||
|
||||
auto bufferForArgsDX12 = (GPUBufferDX12*)bufferForArgs;
|
||||
auto signature = _device->DrawIndexedIndirectCommandSignature->GetSignature();
|
||||
|
||||
@@ -691,7 +691,7 @@ void GPUTextureDX12::initHandles()
|
||||
}
|
||||
|
||||
// Read-only depth-stencil
|
||||
if (_desc.Flags & GPUTextureFlags::ReadOnlyDepthView)
|
||||
if (EnumHasAnyFlags(_desc.Flags, GPUTextureFlags::ReadOnlyDepthView))
|
||||
{
|
||||
_handleReadOnlyDepth.Init(this, _device, this, format, msaa);
|
||||
_handleReadOnlyDepth.ReadOnlyDepthView = true;
|
||||
|
||||
@@ -197,7 +197,7 @@ public:
|
||||
// [IShaderResourceDX12]
|
||||
bool IsDepthStencilResource() const override
|
||||
{
|
||||
return (_desc.Flags & GPUTextureFlags::DepthStencil) != 0;
|
||||
return (_desc.Flags & GPUTextureFlags::DepthStencil) != GPUTextureFlags::None;
|
||||
}
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE SRV() const override
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user