mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-25 00:58:30 -05:00
Cleanup.
This commit is contained in:
parent
38820fd732
commit
b44189e046
2 changed files with 36 additions and 11 deletions
|
@ -1413,7 +1413,7 @@ namespace bgfx { namespace d3d12
|
||||||
VertexBufferD3D12& vb = m_vertexBuffers[_blitter.m_vb->handle.idx];
|
VertexBufferD3D12& vb = m_vertexBuffers[_blitter.m_vb->handle.idx];
|
||||||
const VertexDecl& vertexDecl = m_vertexDecls[_blitter.m_vb->decl.idx];
|
const VertexDecl& vertexDecl = m_vertexDecls[_blitter.m_vb->decl.idx];
|
||||||
D3D12_VERTEX_BUFFER_VIEW viewDesc;
|
D3D12_VERTEX_BUFFER_VIEW viewDesc;
|
||||||
viewDesc.BufferLocation = vb.m_ptr->GetGPUVirtualAddress();
|
viewDesc.BufferLocation = vb.m_gpuVA;
|
||||||
viewDesc.StrideInBytes = vertexDecl.m_stride;
|
viewDesc.StrideInBytes = vertexDecl.m_stride;
|
||||||
viewDesc.SizeInBytes = vb.m_size;
|
viewDesc.SizeInBytes = vb.m_size;
|
||||||
m_commandList->IASetVertexBuffers(0, 1, &viewDesc);
|
m_commandList->IASetVertexBuffers(0, 1, &viewDesc);
|
||||||
|
@ -1421,7 +1421,7 @@ namespace bgfx { namespace d3d12
|
||||||
const BufferD3D12& ib = m_indexBuffers[_blitter.m_ib->handle.idx];
|
const BufferD3D12& ib = m_indexBuffers[_blitter.m_ib->handle.idx];
|
||||||
D3D12_INDEX_BUFFER_VIEW ibv;
|
D3D12_INDEX_BUFFER_VIEW ibv;
|
||||||
ibv.Format = DXGI_FORMAT_R16_UINT;
|
ibv.Format = DXGI_FORMAT_R16_UINT;
|
||||||
ibv.BufferLocation = ib.m_ptr->GetGPUVirtualAddress();
|
ibv.BufferLocation = ib.m_gpuVA;
|
||||||
ibv.SizeInBytes = ib.m_size;
|
ibv.SizeInBytes = ib.m_size;
|
||||||
m_commandList->IASetIndexBuffer(&ibv);
|
m_commandList->IASetIndexBuffer(&ibv);
|
||||||
|
|
||||||
|
@ -2518,6 +2518,7 @@ data.NumQualityLevels = 0;
|
||||||
) );
|
) );
|
||||||
|
|
||||||
m_upload = createCommittedResource(device, HeapProperty::Upload, desc.NumDescriptors * 1024);
|
m_upload = createCommittedResource(device, HeapProperty::Upload, desc.NumDescriptors * 1024);
|
||||||
|
m_gpuVA = m_upload->GetGPUVirtualAddress();
|
||||||
m_upload->Map(0, NULL, (void**)&m_data);
|
m_upload->Map(0, NULL, (void**)&m_data);
|
||||||
|
|
||||||
reset(m_gpuHandle);
|
reset(m_gpuHandle);
|
||||||
|
@ -2541,7 +2542,7 @@ data.NumQualityLevels = 0;
|
||||||
|
|
||||||
void* ScratchBufferD3D12::alloc(D3D12_GPU_VIRTUAL_ADDRESS& _gpuAddress, uint32_t _size)
|
void* ScratchBufferD3D12::alloc(D3D12_GPU_VIRTUAL_ADDRESS& _gpuAddress, uint32_t _size)
|
||||||
{
|
{
|
||||||
_gpuAddress = m_upload->GetGPUVirtualAddress() + m_pos;
|
_gpuAddress = m_gpuVA + m_pos;
|
||||||
D3D12_CONSTANT_BUFFER_VIEW_DESC desc;
|
D3D12_CONSTANT_BUFFER_VIEW_DESC desc;
|
||||||
desc.BufferLocation = _gpuAddress;
|
desc.BufferLocation = _gpuAddress;
|
||||||
desc.SizeInBytes = _size;
|
desc.SizeInBytes = _size;
|
||||||
|
@ -2573,12 +2574,33 @@ data.NumQualityLevels = 0;
|
||||||
m_gpuHandle.ptr += m_incrementSize;
|
m_gpuHandle.ptr += m_incrementSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScratchBufferD3D12::allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, TextureD3D12& _texture)
|
void ScratchBufferD3D12::allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, TextureD3D12& _texture, uint8_t _mip)
|
||||||
{
|
{
|
||||||
ID3D12Device* device = s_renderD3D12->m_device;
|
ID3D12Device* device = s_renderD3D12->m_device;
|
||||||
|
|
||||||
|
D3D12_UNORDERED_ACCESS_VIEW_DESC tmpUavd;
|
||||||
|
D3D12_UNORDERED_ACCESS_VIEW_DESC* uavd = &_texture.m_uavd;
|
||||||
|
if (0 != _mip)
|
||||||
|
{
|
||||||
|
memcpy(&tmpUavd, uavd, sizeof(tmpUavd) );
|
||||||
|
switch (_texture.m_uavd.ViewDimension)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case D3D12_UAV_DIMENSION_TEXTURE2D:
|
||||||
|
uavd->Texture2D.MipSlice = _mip;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case D3D12_UAV_DIMENSION_TEXTURE3D:
|
||||||
|
uavd->Texture3D.MipSlice = _mip;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
uavd = &tmpUavd;
|
||||||
|
}
|
||||||
|
|
||||||
device->CreateUnorderedAccessView(_texture.m_ptr
|
device->CreateUnorderedAccessView(_texture.m_ptr
|
||||||
, NULL
|
, NULL
|
||||||
, &_texture.m_uavd
|
, uavd
|
||||||
, m_cpuHandle
|
, m_cpuHandle
|
||||||
);
|
);
|
||||||
m_cpuHandle.ptr += m_incrementSize;
|
m_cpuHandle.ptr += m_incrementSize;
|
||||||
|
@ -2811,7 +2833,8 @@ data.NumQualityLevels = 0;
|
||||||
ID3D12Device* device = s_renderD3D12->m_device;
|
ID3D12Device* device = s_renderD3D12->m_device;
|
||||||
ID3D12GraphicsCommandList* commandList = s_renderD3D12->m_commandList;
|
ID3D12GraphicsCommandList* commandList = s_renderD3D12->m_commandList;
|
||||||
|
|
||||||
m_ptr = createCommittedResource(device, HeapProperty::Default, _size, flags);
|
m_ptr = createCommittedResource(device, HeapProperty::Default, _size, flags);
|
||||||
|
m_gpuVA = m_ptr->GetGPUVirtualAddress();
|
||||||
setState(commandList, D3D12_RESOURCE_STATE_GENERIC_READ);
|
setState(commandList, D3D12_RESOURCE_STATE_GENERIC_READ);
|
||||||
|
|
||||||
if (!m_dynamic)
|
if (!m_dynamic)
|
||||||
|
@ -3820,7 +3843,7 @@ data.NumQualityLevels = 0;
|
||||||
|
|
||||||
if (Access::Read != bind.m_un.m_compute.m_access)
|
if (Access::Read != bind.m_un.m_compute.m_access)
|
||||||
{
|
{
|
||||||
scratchBuffer.allocUav(srvHandle[ii], texture);
|
scratchBuffer.allocUav(srvHandle[ii], texture, bind.m_un.m_compute.m_mip);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4109,14 +4132,14 @@ data.NumQualityLevels = 0;
|
||||||
|
|
||||||
D3D12_VERTEX_BUFFER_VIEW vbView[2];
|
D3D12_VERTEX_BUFFER_VIEW vbView[2];
|
||||||
uint32_t numVertexBuffers = 1;
|
uint32_t numVertexBuffers = 1;
|
||||||
vbView[0].BufferLocation = vb.m_ptr->GetGPUVirtualAddress();
|
vbView[0].BufferLocation = vb.m_gpuVA;
|
||||||
vbView[0].StrideInBytes = vertexDecl.m_stride;
|
vbView[0].StrideInBytes = vertexDecl.m_stride;
|
||||||
vbView[0].SizeInBytes = vb.m_size;
|
vbView[0].SizeInBytes = vb.m_size;
|
||||||
|
|
||||||
if (isValid(draw.m_instanceDataBuffer) )
|
if (isValid(draw.m_instanceDataBuffer) )
|
||||||
{
|
{
|
||||||
const VertexBufferD3D12& inst = m_vertexBuffers[draw.m_instanceDataBuffer.idx];
|
const VertexBufferD3D12& inst = m_vertexBuffers[draw.m_instanceDataBuffer.idx];
|
||||||
vbView[1].BufferLocation = inst.m_ptr->GetGPUVirtualAddress() + draw.m_instanceDataOffset;
|
vbView[1].BufferLocation = inst.m_gpuVA + draw.m_instanceDataOffset;
|
||||||
vbView[1].StrideInBytes = draw.m_instanceDataStride;
|
vbView[1].StrideInBytes = draw.m_instanceDataStride;
|
||||||
vbView[1].SizeInBytes = draw.m_numInstances * draw.m_instanceDataStride;
|
vbView[1].SizeInBytes = draw.m_numInstances * draw.m_instanceDataStride;
|
||||||
++numVertexBuffers;
|
++numVertexBuffers;
|
||||||
|
@ -4144,7 +4167,7 @@ data.NumQualityLevels = 0;
|
||||||
? DXGI_FORMAT_R16_UINT
|
? DXGI_FORMAT_R16_UINT
|
||||||
: DXGI_FORMAT_R32_UINT
|
: DXGI_FORMAT_R32_UINT
|
||||||
;
|
;
|
||||||
ibv.BufferLocation = ib.m_ptr->GetGPUVirtualAddress();
|
ibv.BufferLocation = ib.m_gpuVA;
|
||||||
ibv.SizeInBytes = ib.m_size;
|
ibv.SizeInBytes = ib.m_size;
|
||||||
m_commandList->IASetIndexBuffer(&ibv);
|
m_commandList->IASetIndexBuffer(&ibv);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace bgfx { namespace d3d12
|
||||||
void reset(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle);
|
void reset(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle);
|
||||||
void* alloc(D3D12_GPU_VIRTUAL_ADDRESS& gpuAddress, uint32_t _size);
|
void* alloc(D3D12_GPU_VIRTUAL_ADDRESS& gpuAddress, uint32_t _size);
|
||||||
void alloc(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct TextureD3D12& _texture);
|
void alloc(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct TextureD3D12& _texture);
|
||||||
void allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct TextureD3D12& _texture);
|
void allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct TextureD3D12& _texture, uint8_t _mip);
|
||||||
|
|
||||||
void alloc(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct BufferD3D12& _buffer);
|
void alloc(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct BufferD3D12& _buffer);
|
||||||
void allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct BufferD3D12& _buffer);
|
void allocUav(D3D12_GPU_DESCRIPTOR_HANDLE& gpuHandle, struct BufferD3D12& _buffer);
|
||||||
|
@ -60,6 +60,7 @@ namespace bgfx { namespace d3d12
|
||||||
private:
|
private:
|
||||||
ID3D12DescriptorHeap* m_heap;
|
ID3D12DescriptorHeap* m_heap;
|
||||||
ID3D12Resource* m_upload;
|
ID3D12Resource* m_upload;
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS m_gpuVA;
|
||||||
D3D12_CPU_DESCRIPTOR_HANDLE m_cpuHandle;
|
D3D12_CPU_DESCRIPTOR_HANDLE m_cpuHandle;
|
||||||
D3D12_GPU_DESCRIPTOR_HANDLE m_gpuHandle;
|
D3D12_GPU_DESCRIPTOR_HANDLE m_gpuHandle;
|
||||||
uint32_t m_incrementSize;
|
uint32_t m_incrementSize;
|
||||||
|
@ -132,6 +133,7 @@ namespace bgfx { namespace d3d12
|
||||||
D3D12_SHADER_RESOURCE_VIEW_DESC m_srvd;
|
D3D12_SHADER_RESOURCE_VIEW_DESC m_srvd;
|
||||||
D3D12_UNORDERED_ACCESS_VIEW_DESC m_uavd;
|
D3D12_UNORDERED_ACCESS_VIEW_DESC m_uavd;
|
||||||
ID3D12Resource* m_ptr;
|
ID3D12Resource* m_ptr;
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS m_gpuVA;
|
||||||
D3D12_RESOURCE_STATES m_state;
|
D3D12_RESOURCE_STATES m_state;
|
||||||
uint32_t m_size;
|
uint32_t m_size;
|
||||||
uint16_t m_flags;
|
uint16_t m_flags;
|
||||||
|
|
Loading…
Reference in a new issue