mirror of https://github.com/RPCS3/rpcs3.git
d3d12: Rewind constant buffers get value
This commit is contained in:
parent
c53828787a
commit
75a52219e0
|
@ -7,6 +7,9 @@
|
||||||
#include "Emu/Memory/vm.h"
|
#include "Emu/Memory/vm.h"
|
||||||
#include "Emu/RSX/GCM.h"
|
#include "Emu/RSX/GCM.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define SAFE_RELEASE(x) if (x) x->Release();
|
||||||
|
|
||||||
inline
|
inline
|
||||||
void check(HRESULT hr)
|
void check(HRESULT hr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -439,7 +439,7 @@ void D3D12GSRender::setScaleOffset()
|
||||||
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_scaleOffsetDescriptorHeap->GetCPUDescriptorHandleForHeapStart();
|
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_scaleOffsetDescriptorHeap->GetCPUDescriptorHandleForHeapStart();
|
||||||
Handle.ptr += getCurrentResourceStorage().m_currentScaleOffsetBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
Handle.ptr += getCurrentResourceStorage().m_currentScaleOffsetBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||||
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
||||||
// m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, 256, scaleOffsetBuffer));
|
m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, 256, nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D12GSRender::FillVertexShaderConstantsBuffer()
|
void D3D12GSRender::FillVertexShaderConstantsBuffer()
|
||||||
|
@ -469,7 +469,7 @@ void D3D12GSRender::FillVertexShaderConstantsBuffer()
|
||||||
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_constantsBufferDescriptorsHeap->GetCPUDescriptorHandleForHeapStart();
|
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_constantsBufferDescriptorsHeap->GetCPUDescriptorHandleForHeapStart();
|
||||||
Handle.ptr += getCurrentResourceStorage().m_constantsBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
Handle.ptr += getCurrentResourceStorage().m_constantsBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||||
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
||||||
// m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, bufferSize, constantsBuffer));
|
m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, bufferSize, nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D12GSRender::FillPixelShaderConstantsBuffer()
|
void D3D12GSRender::FillPixelShaderConstantsBuffer()
|
||||||
|
@ -533,7 +533,7 @@ void D3D12GSRender::FillPixelShaderConstantsBuffer()
|
||||||
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_constantsBufferDescriptorsHeap->GetCPUDescriptorHandleForHeapStart();
|
D3D12_CPU_DESCRIPTOR_HANDLE Handle = getCurrentResourceStorage().m_constantsBufferDescriptorsHeap->GetCPUDescriptorHandleForHeapStart();
|
||||||
Handle.ptr += getCurrentResourceStorage().m_constantsBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
Handle.ptr += getCurrentResourceStorage().m_constantsBufferIndex * m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
|
||||||
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
m_device->CreateConstantBufferView(&constantBufferViewDesc, Handle);
|
||||||
// m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, bufferSize, constantsBuffer));
|
m_constantsData.m_resourceStoredSinceLastSync.push_back(std::make_tuple(heapOffset, bufferSize, nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -61,13 +61,13 @@ void D3D12GSRender::ResourceStorage::Reset()
|
||||||
m_frameFinishedHandle = 0;
|
m_frameFinishedHandle = 0;
|
||||||
|
|
||||||
for (auto tmp : m_inUseConstantsBuffers)
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseVertexIndexBuffers)
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseTextureUploadBuffers)
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseTexture2D)
|
for (auto tmp : m_inUseTexture2D)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
m_inUseConstantsBuffers.clear();
|
m_inUseConstantsBuffers.clear();
|
||||||
m_inUseVertexIndexBuffers.clear();
|
m_inUseVertexIndexBuffers.clear();
|
||||||
m_inUseTextureUploadBuffers.clear();
|
m_inUseTextureUploadBuffers.clear();
|
||||||
|
@ -120,13 +120,13 @@ void D3D12GSRender::ResourceStorage::Release()
|
||||||
{
|
{
|
||||||
// NOTE: Should be released only if no command are in flight !
|
// NOTE: Should be released only if no command are in flight !
|
||||||
for (auto tmp : m_inUseConstantsBuffers)
|
for (auto tmp : m_inUseConstantsBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseVertexIndexBuffers)
|
for (auto tmp : m_inUseVertexIndexBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseTextureUploadBuffers)
|
for (auto tmp : m_inUseTextureUploadBuffers)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
for (auto tmp : m_inUseTexture2D)
|
for (auto tmp : m_inUseTexture2D)
|
||||||
std::get<2>(tmp)->Release();
|
SAFE_RELEASE(std::get<2>(tmp));
|
||||||
|
|
||||||
m_constantsBufferDescriptorsHeap->Release();
|
m_constantsBufferDescriptorsHeap->Release();
|
||||||
m_scaleOffsetDescriptorHeap->Release();
|
m_scaleOffsetDescriptorHeap->Release();
|
||||||
|
|
Loading…
Reference in New Issue