Add GPUContext.ClearUA for buffer and texture with uint format

This commit is contained in:
Wojtek Figat
2021-10-07 14:17:05 +02:00
parent f328fbefa9
commit 949766e3a0
7 changed files with 101 additions and 4 deletions

View File

@@ -727,6 +727,34 @@ void GPUContextDX12::ClearUA(GPUBuffer* buf, const Vector4& value)
_commandList->ClearUnorderedAccessViewFloat(desc.GPU, uav, bufDX12->GetResource(), value.Raw, 0, nullptr);
}
void GPUContextDX12::ClearUA(GPUBuffer* buf, const uint32 value[4])
{
ASSERT(buf != nullptr && buf->IsUnorderedAccess());
auto bufDX12 = reinterpret_cast<GPUBufferDX12*>(buf);
SetResourceState(bufDX12, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
flushRBs();
auto uav = ((GPUBufferViewDX12*)bufDX12->View())->UAV();
Descriptor desc;
GetActiveHeapDescriptor(uav, desc);
_commandList->ClearUnorderedAccessViewUint(desc.GPU, uav, bufDX12->GetResource(), value, 0, nullptr);
}
void GPUContextDX12::ClearUA(GPUTexture* texture, const uint32 value[4])
{
ASSERT(texture != nullptr && texture->IsUnorderedAccess());
auto texDX12 = reinterpret_cast<GPUTextureDX12*>(texture);
SetResourceState(texDX12, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
flushRBs();
auto uav = ((GPUTextureViewDX12*)texDX12->View(0))->UAV();
Descriptor desc;
GetActiveHeapDescriptor(uav, desc);
_commandList->ClearUnorderedAccessViewUint(desc.GPU, uav, texDX12->GetResource(), value, 0, nullptr);
}
void GPUContextDX12::ResetRenderTarget()
{
if (_rtDepth || _rtCount != 0)