graphicsdevice updates

This commit is contained in:
turanszkij
2018-08-10 17:39:51 +01:00
parent 0e60532e75
commit 038c1a6fae
11 changed files with 111 additions and 79 deletions
+2
View File
@@ -68,6 +68,8 @@ namespace wiGraphicsTypes
virtual void DestroyGraphicsPSO(GraphicsPSO* pso) = 0;
virtual void DestroyComputePSO(ComputePSO* pso) = 0;
virtual void SetName(GPUResource* pResource, const std::string& name) = 0;
virtual void PresentBegin() = 0;
virtual void PresentEnd() = 0;
+67 -65
View File
@@ -1581,7 +1581,7 @@ void GraphicsDevice_DX11::SetResolution(int width, int height)
Texture2D GraphicsDevice_DX11::GetBackBuffer()
{
Texture2D result;
result.texture2D_DX11 = backBuffer;
result.resource_DX11 = (wiCPUHandle)backBuffer;
backBuffer->AddRef();
return result;
}
@@ -1609,7 +1609,7 @@ HRESULT GraphicsDevice_DX11::CreateBuffer(const GPUBufferDesc *pDesc, const Subr
}
ppBuffer->desc = *pDesc;
HRESULT hr = device->CreateBuffer(&desc, data, &ppBuffer->resource_DX11);
HRESULT hr = device->CreateBuffer(&desc, data, (ID3D11Buffer**)&ppBuffer->resource_DX11);
SAFE_DELETE_ARRAY(data);
assert(SUCCEEDED(hr) && "GPUBuffer creation failed!");
@@ -1651,7 +1651,7 @@ HRESULT GraphicsDevice_DX11::CreateBuffer(const GPUBufferDesc *pDesc, const Subr
srv_desc.Buffer.NumElements = desc.ByteWidth / desc.StructureByteStride;
}
hr = device->CreateShaderResourceView(ppBuffer->resource_DX11, &srv_desc, &ppBuffer->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)ppBuffer->resource_DX11, &srv_desc, &ppBuffer->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView of the GPUBuffer could not be created!");
}
@@ -1685,7 +1685,7 @@ HRESULT GraphicsDevice_DX11::CreateBuffer(const GPUBufferDesc *pDesc, const Subr
uav_desc.Buffer.NumElements = desc.ByteWidth / desc.StructureByteStride;
}
hr = device->CreateUnorderedAccessView(ppBuffer->resource_DX11, &uav_desc, &ppBuffer->UAV_DX11);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)ppBuffer->resource_DX11, &uav_desc, &ppBuffer->UAV_DX11);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the GPUBuffer could not be created!");
}
@@ -1717,7 +1717,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture1D(const TextureDesc* pDesc, const Sub
HRESULT hr = S_OK;
hr = device->CreateTexture1D(&desc, data, &((*ppTexture1D)->texture1D_DX11));
hr = device->CreateTexture1D(&desc, data, (ID3D11Texture1D**)&((*ppTexture1D)->resource_DX11));
SAFE_DELETE_ARRAY(data);
assert(SUCCEEDED(hr) && "Texture1D creation failed!");
if (FAILED(hr))
@@ -1739,7 +1739,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture1D(const TextureDesc* pDesc, const Sub
uav_desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE1D;
uav_desc.Texture2D.MipSlice = 0;
hr = device->CreateUnorderedAccessView((*ppTexture1D)->texture1D_DX11, &uav_desc, &(*ppTexture1D)->UAV_DX11);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture1D)->resource_DX11, &uav_desc, &(*ppTexture1D)->UAV_DX11);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the Texture1D could not be created!");
}
@@ -1783,7 +1783,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture2D(const TextureDesc* pDesc, const Sub
HRESULT hr = S_OK;
hr = device->CreateTexture2D(&desc, data, &((*ppTexture2D)->texture2D_DX11));
hr = device->CreateTexture2D(&desc, data, (ID3D11Texture2D**)&((*ppTexture2D)->resource_DX11));
assert(SUCCEEDED(hr) && "Texture2D creation failed!");
SAFE_DELETE_ARRAY(data);
if (FAILED(hr))
@@ -1820,7 +1820,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture2D(const TextureDesc* pDesc, const Sub
uav_desc.Texture2DArray.MipSlice = i;
(*ppTexture2D)->additionalUAVs_DX11.push_back(nullptr);
hr = device->CreateUnorderedAccessView((*ppTexture2D)->texture2D_DX11, &uav_desc, &(*ppTexture2D)->additionalUAVs_DX11[i]);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture2D)->resource_DX11, &uav_desc, &(*ppTexture2D)->additionalUAVs_DX11[i]);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the Texture2D could not be created!");
}
}
@@ -1828,7 +1828,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture2D(const TextureDesc* pDesc, const Sub
{
// Create main resource UAV:
uav_desc.Texture2DArray.MipSlice = 0;
hr = device->CreateUnorderedAccessView((*ppTexture2D)->texture2D_DX11, &uav_desc, &(*ppTexture2D)->UAV_DX11);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture2D)->resource_DX11, &uav_desc, &(*ppTexture2D)->UAV_DX11);
}
}
else
@@ -1846,7 +1846,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture2D(const TextureDesc* pDesc, const Sub
uav_desc.Texture2D.MipSlice = i;
(*ppTexture2D)->additionalUAVs_DX11.push_back(nullptr);
hr = device->CreateUnorderedAccessView((*ppTexture2D)->texture2D_DX11, &uav_desc, &(*ppTexture2D)->additionalUAVs_DX11[i]);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture2D)->resource_DX11, &uav_desc, &(*ppTexture2D)->additionalUAVs_DX11[i]);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the Texture2D could not be created!");
}
}
@@ -1854,7 +1854,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture2D(const TextureDesc* pDesc, const Sub
{
// Create main resource UAV:
uav_desc.Texture2D.MipSlice = 0;
hr = device->CreateUnorderedAccessView((*ppTexture2D)->texture2D_DX11, &uav_desc, &(*ppTexture2D)->UAV_DX11);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture2D)->resource_DX11, &uav_desc, &(*ppTexture2D)->UAV_DX11);
}
}
@@ -1887,7 +1887,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture3D(const TextureDesc* pDesc, const Sub
HRESULT hr = S_OK;
hr = device->CreateTexture3D(&desc, data, &((*ppTexture3D)->texture3D_DX11));
hr = device->CreateTexture3D(&desc, data, (ID3D11Texture3D**)&((*ppTexture3D)->resource_DX11));
SAFE_DELETE_ARRAY(data);
assert(SUCCEEDED(hr) && "Texture3D creation failed!");
if (FAILED(hr))
@@ -1919,7 +1919,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture3D(const TextureDesc* pDesc, const Sub
uav_desc.Texture3D.MipSlice = i;
(*ppTexture3D)->additionalUAVs_DX11.push_back(nullptr);
hr = device->CreateUnorderedAccessView((*ppTexture3D)->texture3D_DX11, &uav_desc, &(*ppTexture3D)->additionalUAVs_DX11[i]);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture3D)->resource_DX11, &uav_desc, &(*ppTexture3D)->additionalUAVs_DX11[i]);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the Texture3D could not be created!");
uav_desc.Texture3D.WSize /= 2;
@@ -1930,7 +1930,7 @@ HRESULT GraphicsDevice_DX11::CreateTexture3D(const TextureDesc* pDesc, const Sub
// Create main resource UAV:
uav_desc.Texture3D.MipSlice = 0;
uav_desc.Texture3D.WSize = desc.Depth;
hr = device->CreateUnorderedAccessView((*ppTexture3D)->texture3D_DX11, &uav_desc, &(*ppTexture3D)->UAV_DX11);
hr = device->CreateUnorderedAccessView((ID3D11Resource*)(*ppTexture3D)->resource_DX11, &uav_desc, &(*ppTexture3D)->UAV_DX11);
assert(SUCCEEDED(hr) && "UnorderedAccessView of the Texture3D could not be created!");
}
}
@@ -1968,7 +1968,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture1D* pTexture)
shaderResourceViewDesc.Texture1D.MipLevels = -1; //...to least detailed
}
hr = device->CreateShaderResourceView(pTexture->texture1D_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
@@ -2047,7 +2047,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
shaderResourceViewDesc.Texture2DArray.MipLevels = -1; //...to least detailed
}
}
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
@@ -2066,7 +2066,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
shaderResourceViewDesc.TextureCubeArray.MipLevels = 1;
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2084,7 +2084,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
shaderResourceViewDesc.Texture2DArray.MipLevels = 1;
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2106,7 +2106,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
shaderResourceViewDesc.TextureCubeArray.MipLevels = -1; //...to least detailed
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2133,7 +2133,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
}
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2146,7 +2146,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
if (multisampled)
{
shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DMS;
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
else
@@ -2163,7 +2163,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
shaderResourceViewDesc.Texture2D.MipLevels = 1;
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11.back());
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
}
@@ -2172,7 +2172,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture2D* pTexture)
// Create full-resource SRV:
shaderResourceViewDesc.Texture2D.MostDetailedMip = 0; //from most detailed...
shaderResourceViewDesc.Texture2D.MipLevels = -1; //...to least detailed
hr = device->CreateShaderResourceView(pTexture->texture2D_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
}
@@ -2207,7 +2207,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture3D* pTexture)
shaderResourceViewDesc.Texture3D.MipLevels = 1;
pTexture->additionalSRVs_DX11.push_back(nullptr);
hr = device->CreateShaderResourceView(pTexture->texture3D_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11[i]);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->additionalSRVs_DX11[i]);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
}
@@ -2217,7 +2217,7 @@ HRESULT GraphicsDevice_DX11::CreateShaderResourceView(Texture3D* pTexture)
shaderResourceViewDesc.Texture3D.MostDetailedMip = 0; //from most detailed...
shaderResourceViewDesc.Texture3D.MipLevels = -1; //...to least detailed
hr = device->CreateShaderResourceView(pTexture->texture3D_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
hr = device->CreateShaderResourceView((ID3D11Resource*)pTexture->resource_DX11, &shaderResourceViewDesc, &pTexture->SRV_DX11);
assert(SUCCEEDED(hr) && "ShaderResourceView Creation failed!");
}
@@ -2261,7 +2261,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
renderTargetViewDesc.Texture2DArray.ArraySize = 1;
pTexture->additionalRTVs_DX11.push_back(nullptr);
hr = device->CreateRenderTargetView(pTexture->texture2D_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2274,7 +2274,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
renderTargetViewDesc.Texture2DArray.ArraySize = 6;
pTexture->additionalRTVs_DX11.push_back(nullptr);
hr = device->CreateRenderTargetView(pTexture->texture2D_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2284,7 +2284,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
renderTargetViewDesc.Texture2DArray.FirstArraySlice = 0;
renderTargetViewDesc.Texture2DArray.ArraySize = arraySize;
hr = device->CreateRenderTargetView(pTexture->texture2D_DX11, &renderTargetViewDesc, &pTexture->RTV_DX11);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->RTV_DX11);
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2311,7 +2311,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
}
pTexture->additionalRTVs_DX11.push_back(nullptr);
hr = device->CreateRenderTargetView(pTexture->texture2D_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2347,7 +2347,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture2D* pTexture)
}
}
hr = device->CreateRenderTargetView(pTexture->texture2D_DX11, &renderTargetViewDesc, &pTexture->RTV_DX11);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->RTV_DX11);
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
}
}
@@ -2381,7 +2381,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture3D* pTexture)
renderTargetViewDesc.Texture3D.WSize = 1;
pTexture->additionalRTVs_DX11.push_back(nullptr);
hr = device->CreateRenderTargetView(pTexture->texture3D_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[i]);
}
}
@@ -2393,7 +2393,7 @@ HRESULT GraphicsDevice_DX11::CreateRenderTargetView(Texture3D* pTexture)
renderTargetViewDesc.Texture3D.WSize = -1;
pTexture->additionalRTVs_DX11.push_back(nullptr);
hr = device->CreateRenderTargetView(pTexture->texture3D_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[0]);
hr = device->CreateRenderTargetView((ID3D11Resource*)pTexture->resource_DX11, &renderTargetViewDesc, &pTexture->additionalRTVs_DX11[0]);
}
assert(SUCCEEDED(hr) && "RenderTargetView Creation failed!");
@@ -2457,7 +2457,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilView(Texture2D* pTexture)
depthStencilViewDesc.Texture2DArray.ArraySize = 1;
pTexture->additionalDSVs_DX11.push_back(nullptr);
hr = device->CreateDepthStencilView(pTexture->texture2D_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
hr = device->CreateDepthStencilView((ID3D11Resource*)pTexture->resource_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
}
}
else if (pTexture->independentRTVArraySlices)
@@ -2469,7 +2469,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilView(Texture2D* pTexture)
depthStencilViewDesc.Texture2DArray.ArraySize = 6;
pTexture->additionalDSVs_DX11.push_back(nullptr);
hr = device->CreateDepthStencilView(pTexture->texture2D_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
hr = device->CreateDepthStencilView((ID3D11Resource*)pTexture->resource_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
}
}
@@ -2478,7 +2478,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilView(Texture2D* pTexture)
depthStencilViewDesc.Texture2DArray.FirstArraySlice = 0;
depthStencilViewDesc.Texture2DArray.ArraySize = arraySize;
hr = device->CreateDepthStencilView(pTexture->texture2D_DX11, &depthStencilViewDesc, &pTexture->DSV_DX11);
hr = device->CreateDepthStencilView((ID3D11Resource*)pTexture->resource_DX11, &depthStencilViewDesc, &pTexture->DSV_DX11);
}
}
else
@@ -2504,7 +2504,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilView(Texture2D* pTexture)
}
pTexture->additionalDSVs_DX11.push_back(nullptr);
hr = device->CreateDepthStencilView(pTexture->texture2D_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
hr = device->CreateDepthStencilView((ID3D11Resource*)pTexture->resource_DX11, &depthStencilViewDesc, &pTexture->additionalDSVs_DX11[i]);
}
}
else
@@ -2539,7 +2539,7 @@ HRESULT GraphicsDevice_DX11::CreateDepthStencilView(Texture2D* pTexture)
}
}
hr = device->CreateDepthStencilView(pTexture->texture2D_DX11, &depthStencilViewDesc, &pTexture->DSV_DX11);
hr = device->CreateDepthStencilView((ID3D11Resource*)pTexture->resource_DX11, &depthStencilViewDesc, &pTexture->DSV_DX11);
}
}
@@ -2840,6 +2840,11 @@ HRESULT GraphicsDevice_DX11::CreateComputePSO(const ComputePSODesc* pDesc, Compu
void GraphicsDevice_DX11::DestroyResource(GPUResource* pResource)
{
if (pResource->resource_DX11 != WI_NULL_HANDLE)
{
((ID3D11Resource*)pResource->resource_DX11)->Release();
}
SAFE_RELEASE(pResource->SRV_DX11);
for (auto& x : pResource->additionalSRVs_DX11)
{
@@ -2854,12 +2859,9 @@ void GraphicsDevice_DX11::DestroyResource(GPUResource* pResource)
}
void GraphicsDevice_DX11::DestroyBuffer(GPUBuffer *pBuffer)
{
SAFE_RELEASE(pBuffer->resource_DX11);
}
void GraphicsDevice_DX11::DestroyTexture1D(Texture1D *pTexture1D)
{
SAFE_RELEASE(pTexture1D->texture1D_DX11);
SAFE_RELEASE(pTexture1D->RTV_DX11);
for (ID3D11RenderTargetView* x : pTexture1D->additionalRTVs_DX11)
{
@@ -2868,8 +2870,6 @@ void GraphicsDevice_DX11::DestroyTexture1D(Texture1D *pTexture1D)
}
void GraphicsDevice_DX11::DestroyTexture2D(Texture2D *pTexture2D)
{
SAFE_RELEASE(pTexture2D->texture2D_DX11);
SAFE_RELEASE(pTexture2D->RTV_DX11);
for (ID3D11RenderTargetView* x : pTexture2D->additionalRTVs_DX11)
{
@@ -2884,8 +2884,6 @@ void GraphicsDevice_DX11::DestroyTexture2D(Texture2D *pTexture2D)
}
void GraphicsDevice_DX11::DestroyTexture3D(Texture3D *pTexture3D)
{
SAFE_RELEASE(pTexture3D->texture3D_DX11);
SAFE_RELEASE(pTexture3D->RTV_DX11);
for (ID3D11RenderTargetView* x : pTexture3D->additionalRTVs_DX11)
{
@@ -2950,6 +2948,10 @@ void GraphicsDevice_DX11::DestroyComputePSO(ComputePSO* pso)
{
}
void GraphicsDevice_DX11::SetName(GPUResource* pResource, const std::string& name)
{
((ID3D11Resource*)pResource->resource_DX11)->SetPrivateData(WKPDID_D3DDebugObjectName, name.length(), name.c_str());
}
void GraphicsDevice_DX11::PresentBegin()
{
@@ -3350,7 +3352,7 @@ void GraphicsDevice_DX11::BindSampler(SHADERSTAGE stage, Sampler* sampler, int s
}
void GraphicsDevice_DX11::BindConstantBuffer(SHADERSTAGE stage, GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID)
{
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
ID3D11Buffer* res = buffer ? (ID3D11Buffer*)buffer->resource_DX11 : nullptr;
switch (stage)
{
case wiGraphicsTypes::VS:
@@ -3382,13 +3384,13 @@ void GraphicsDevice_DX11::BindVertexBuffers(GPUBuffer* const *vertexBuffers, int
ID3D11Buffer* res[8] = { 0 };
for (int i = 0; i < count; ++i)
{
res[i] = vertexBuffers[i] != nullptr ? vertexBuffers[i]->resource_DX11 : nullptr;
res[i] = vertexBuffers[i] != nullptr ? (ID3D11Buffer*)vertexBuffers[i]->resource_DX11 : nullptr;
}
deviceContexts[threadID]->IASetVertexBuffers(static_cast<UINT>(slot), static_cast<UINT>(count), res, strides, (offsets != nullptr ? offsets : reinterpret_cast<const UINT*>(__nullBlob)));
}
void GraphicsDevice_DX11::BindIndexBuffer(GPUBuffer* indexBuffer, const INDEXBUFFER_FORMAT format, UINT offset, GRAPHICSTHREAD threadID)
{
ID3D11Buffer* res = indexBuffer != nullptr ? indexBuffer->resource_DX11 : nullptr;
ID3D11Buffer* res = indexBuffer != nullptr ? (ID3D11Buffer*)indexBuffer->resource_DX11 : nullptr;
deviceContexts[threadID]->IASetIndexBuffer(res, (format == INDEXBUFFER_FORMAT::INDEXFORMAT_16BIT ? DXGI_FORMAT_R16_UINT : DXGI_FORMAT_R32_UINT), offset);
}
void GraphicsDevice_DX11::BindStencilRef(UINT value, GRAPHICSTHREAD threadID)
@@ -3540,13 +3542,13 @@ void GraphicsDevice_DX11::DrawInstancedIndirect(GPUBuffer* args, UINT args_offse
{
validate_raster_uavs(threadID);
deviceContexts[threadID]->DrawInstancedIndirect(args->resource_DX11, args_offset);
deviceContexts[threadID]->DrawInstancedIndirect((ID3D11Buffer*)args->resource_DX11, args_offset);
}
void GraphicsDevice_DX11::DrawIndexedInstancedIndirect(GPUBuffer* args, UINT args_offset, GRAPHICSTHREAD threadID)
{
validate_raster_uavs(threadID);
deviceContexts[threadID]->DrawIndexedInstancedIndirect(args->resource_DX11, args_offset);
deviceContexts[threadID]->DrawIndexedInstancedIndirect((ID3D11Buffer*)args->resource_DX11, args_offset);
}
void GraphicsDevice_DX11::Dispatch(UINT threadGroupCountX, UINT threadGroupCountY, UINT threadGroupCountZ, GRAPHICSTHREAD threadID)
{
@@ -3554,21 +3556,21 @@ void GraphicsDevice_DX11::Dispatch(UINT threadGroupCountX, UINT threadGroupCount
}
void GraphicsDevice_DX11::DispatchIndirect(GPUBuffer* args, UINT args_offset, GRAPHICSTHREAD threadID)
{
deviceContexts[threadID]->DispatchIndirect(args->resource_DX11, args_offset);
deviceContexts[threadID]->DispatchIndirect((ID3D11Buffer*)args->resource_DX11, args_offset);
}
void GraphicsDevice_DX11::CopyTexture2D(Texture2D* pDst, Texture2D* pSrc, GRAPHICSTHREAD threadID)
{
deviceContexts[threadID]->CopyResource(pDst->texture2D_DX11, pSrc->texture2D_DX11);
deviceContexts[threadID]->CopyResource((ID3D11Resource*)pDst->resource_DX11, (ID3D11Resource*)pSrc->resource_DX11);
}
void GraphicsDevice_DX11::CopyTexture2D_Region(Texture2D* pDst, UINT dstMip, UINT dstX, UINT dstY, Texture2D* pSrc, UINT srcMip, GRAPHICSTHREAD threadID)
{
deviceContexts[threadID]->CopySubresourceRegion(pDst->texture2D_DX11, D3D11CalcSubresource(dstMip, 0, pDst->GetDesc().MipLevels), dstX, dstY, 0,
pSrc->texture2D_DX11, D3D11CalcSubresource(srcMip, 0, pSrc->GetDesc().MipLevels), nullptr);
deviceContexts[threadID]->CopySubresourceRegion((ID3D11Resource*)pDst->resource_DX11, D3D11CalcSubresource(dstMip, 0, pDst->GetDesc().MipLevels), dstX, dstY, 0,
(ID3D11Resource*)pSrc->resource_DX11, D3D11CalcSubresource(srcMip, 0, pSrc->GetDesc().MipLevels), nullptr);
}
void GraphicsDevice_DX11::MSAAResolve(Texture2D* pDst, Texture2D* pSrc, GRAPHICSTHREAD threadID)
{
assert(pDst != nullptr && pSrc != nullptr);
deviceContexts[threadID]->ResolveSubresource(pDst->texture2D_DX11, 0, pSrc->texture2D_DX11, 0, _ConvertFormat(pDst->desc.Format));
deviceContexts[threadID]->ResolveSubresource((ID3D11Resource*)pDst->resource_DX11, 0, (ID3D11Resource*)pSrc->resource_DX11, 0, _ConvertFormat(pDst->desc.Format));
}
void GraphicsDevice_DX11::UpdateBuffer(GPUBuffer* buffer, const void* data, GRAPHICSTHREAD threadID, int dataSize)
{
@@ -3585,14 +3587,14 @@ void GraphicsDevice_DX11::UpdateBuffer(GPUBuffer* buffer, const void* data, GRAP
if (buffer->desc.Usage == USAGE_DYNAMIC)
{
D3D11_MAPPED_SUBRESOURCE mappedResource;
HRESULT hr = deviceContexts[threadID]->Map(buffer->resource_DX11, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
HRESULT hr = deviceContexts[threadID]->Map((ID3D11Resource*)buffer->resource_DX11, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
assert(SUCCEEDED(hr) && "GPUBuffer mapping failed!");
memcpy(mappedResource.pData, data, (dataSize >= 0 ? dataSize : buffer->desc.ByteWidth));
deviceContexts[threadID]->Unmap(buffer->resource_DX11, 0);
deviceContexts[threadID]->Unmap((ID3D11Resource*)buffer->resource_DX11, 0);
}
else if (buffer->desc.BindFlags & BIND_CONSTANT_BUFFER || dataSize < 0)
{
deviceContexts[threadID]->UpdateSubresource(buffer->resource_DX11, 0, nullptr, data, 0, 0);
deviceContexts[threadID]->UpdateSubresource((ID3D11Resource*)buffer->resource_DX11, 0, nullptr, data, 0, 0);
}
else
{
@@ -3603,7 +3605,7 @@ void GraphicsDevice_DX11::UpdateBuffer(GPUBuffer* buffer, const void* data, GRAP
box.bottom = 1;
box.front = 0;
box.back = 1;
deviceContexts[threadID]->UpdateSubresource(buffer->resource_DX11, 0, &box, data, 0, 0);
deviceContexts[threadID]->UpdateSubresource((ID3D11Resource*)buffer->resource_DX11, 0, &box, data, 0, 0);
}
}
void* GraphicsDevice_DX11::AllocateFromRingBuffer(GPURingBuffer* buffer, size_t dataSize, UINT& offsetIntoBuffer, GRAPHICSTHREAD threadID)
@@ -3625,7 +3627,7 @@ void* GraphicsDevice_DX11::AllocateFromRingBuffer(GPURingBuffer* buffer, size_t
// Issue buffer rename (realloc) on wrap, otherwise just append data:
D3D11_MAP mapping = wrap ? D3D11_MAP_WRITE_DISCARD : D3D11_MAP_WRITE_NO_OVERWRITE;
D3D11_MAPPED_SUBRESOURCE mappedResource;
HRESULT hr = deviceContexts[threadID]->Map(buffer->resource_DX11, 0, mapping, 0, &mappedResource);
HRESULT hr = deviceContexts[threadID]->Map((ID3D11Resource*)buffer->resource_DX11, 0, mapping, 0, &mappedResource);
assert(SUCCEEDED(hr) && "GPUBuffer mapping failed!");
// Thread safety is compromised!
@@ -3637,7 +3639,7 @@ void* GraphicsDevice_DX11::AllocateFromRingBuffer(GPURingBuffer* buffer, size_t
}
void GraphicsDevice_DX11::InvalidateBufferAccess(GPUBuffer* buffer, GRAPHICSTHREAD threadID)
{
deviceContexts[threadID]->Unmap(buffer->resource_DX11, 0);
deviceContexts[threadID]->Unmap((ID3D11Resource*)buffer->resource_DX11, 0);
}
bool GraphicsDevice_DX11::DownloadBuffer(GPUBuffer* bufferToDownload, GPUBuffer* bufferDest, void* dataDest, GRAPHICSTHREAD threadID)
{
@@ -3645,15 +3647,15 @@ bool GraphicsDevice_DX11::DownloadBuffer(GPUBuffer* bufferToDownload, GPUBuffer*
assert(bufferDest->desc.Usage & USAGE_STAGING);
assert(dataDest != nullptr);
deviceContexts[threadID]->CopyResource(bufferDest->resource_DX11, bufferToDownload->resource_DX11);
deviceContexts[threadID]->CopyResource((ID3D11Resource*)bufferDest->resource_DX11, (ID3D11Resource*)bufferToDownload->resource_DX11);
D3D11_MAPPED_SUBRESOURCE mappedResource = {};
HRESULT hr = deviceContexts[threadID]->Map(bufferDest->resource_DX11, 0, D3D11_MAP_READ, /*async ? D3D11_MAP_FLAG_DO_NOT_WAIT :*/ 0, &mappedResource);
HRESULT hr = deviceContexts[threadID]->Map((ID3D11Resource*)bufferDest->resource_DX11, 0, D3D11_MAP_READ, /*async ? D3D11_MAP_FLAG_DO_NOT_WAIT :*/ 0, &mappedResource);
bool result = SUCCEEDED(hr);
if (result)
{
memcpy(dataDest, mappedResource.pData, bufferToDownload->desc.ByteWidth);
deviceContexts[threadID]->Unmap(bufferDest->resource_DX11, 0);
deviceContexts[threadID]->Unmap((ID3D11Resource*)bufferDest->resource_DX11, 0);
}
return result;
@@ -3722,7 +3724,7 @@ HRESULT GraphicsDevice_DX11::SaveTexturePNG(const std::string& fileName, Texture
Texture2D* tex2D = dynamic_cast<Texture2D*>(pTexture);
if (tex2D != nullptr)
{
return SaveWICTextureToFile(deviceContexts[threadID], pTexture->texture2D_DX11, GUID_ContainerFormatPng, wstring(fileName.begin(), fileName.end()).c_str());
return SaveWICTextureToFile(deviceContexts[threadID], (ID3D11Resource*)pTexture->resource_DX11, GUID_ContainerFormatPng, wstring(fileName.begin(), fileName.end()).c_str());
}
return E_FAIL;
}
@@ -3731,7 +3733,7 @@ HRESULT GraphicsDevice_DX11::SaveTextureDDS(const std::string& fileName, Texture
Texture2D* tex2D = dynamic_cast<Texture2D*>(pTexture);
if (tex2D != nullptr)
{
return SaveDDSTextureToFile(deviceContexts[threadID], tex2D->texture2D_DX11, wstring(fileName.begin(), fileName.end()).c_str());
return SaveDDSTextureToFile(deviceContexts[threadID], (ID3D11Resource*)tex2D->resource_DX11, wstring(fileName.begin(), fileName.end()).c_str());
}
return E_FAIL;
}
+5
View File
@@ -13,6 +13,8 @@ struct ID3DUserDefinedAnnotation;
enum D3D_DRIVER_TYPE;
enum D3D_FEATURE_LEVEL;
struct ID3D11Texture2D;
namespace wiGraphicsTypes
{
@@ -98,6 +100,9 @@ namespace wiGraphicsTypes
virtual void DestroyGraphicsPSO(GraphicsPSO* pso) override;
virtual void DestroyComputePSO(ComputePSO* pso) override;
virtual void SetName(GPUResource* pResource, const std::string& name) override;
virtual void PresentBegin() override;
virtual void PresentEnd() override;
+6
View File
@@ -3272,6 +3272,12 @@ namespace wiGraphicsTypes
}
void GraphicsDevice_DX12::SetName(GPUResource* pResource, const std::string& name)
{
((ID3D12Resource*)pResource->resource_DX12)->SetName(wstring(name.begin(), name.end()).c_str());
}
void GraphicsDevice_DX12::PresentBegin()
{
// Sync up copy queue:
+2
View File
@@ -194,6 +194,8 @@ namespace wiGraphicsTypes
virtual void DestroyGraphicsPSO(GraphicsPSO* pso) override;
virtual void DestroyComputePSO(ComputePSO* pso) override;
virtual void SetName(GPUResource* pResource, const std::string& name) override;
virtual void PresentBegin() override;
virtual void PresentEnd() override;
+6
View File
@@ -4133,6 +4133,12 @@ namespace wiGraphicsTypes
}
void GraphicsDevice_Vulkan::SetName(GPUResource* pResource, const std::string& name)
{
}
void GraphicsDevice_Vulkan::PresentBegin()
{
// Sync up copy queue:
+2
View File
@@ -234,6 +234,8 @@ namespace wiGraphicsTypes
virtual void DestroyGraphicsPSO(GraphicsPSO* pso) override;
virtual void DestroyComputePSO(ComputePSO* pso) override;
virtual void SetName(GPUResource* pResource, const std::string& name) override;
virtual void PresentBegin() override;
virtual void PresentEnd() override;
+1 -4
View File
@@ -97,6 +97,7 @@ namespace wiGraphicsTypes
SAFE_INIT(UAV_DX11);
UAV_DX12 = WI_NULL_HANDLE;
UAV_Vulkan = WI_NULL_HANDLE;
resource_DX11 = WI_NULL_HANDLE;
resource_DX12 = WI_NULL_HANDLE;
resource_Vulkan = WI_NULL_HANDLE;
resourceMemory_Vulkan = WI_NULL_HANDLE;
@@ -111,7 +112,6 @@ namespace wiGraphicsTypes
GPUBuffer::GPUBuffer() : GPUResource()
{
SAFE_INIT(resource_DX11);
CBV_DX12 = WI_NULL_HANDLE;
}
GPUBuffer::~GPUBuffer()
@@ -204,7 +204,6 @@ namespace wiGraphicsTypes
Texture1D::Texture1D() :Texture()
{
SAFE_INIT(texture1D_DX11);
}
Texture1D::~Texture1D()
{
@@ -216,7 +215,6 @@ namespace wiGraphicsTypes
Texture2D::Texture2D() :Texture()
{
SAFE_INIT(texture2D_DX11);
SAFE_INIT(DSV_DX11);
DSV_DX12 = WI_NULL_HANDLE;
DSV_Vulkan = WI_NULL_HANDLE;
@@ -231,7 +229,6 @@ namespace wiGraphicsTypes
Texture3D::Texture3D() :Texture()
{
SAFE_INIT(texture3D_DX11);
}
Texture3D::~Texture3D()
{
+2 -9
View File
@@ -15,7 +15,6 @@ struct ID3D11ComputeShader;
struct ID3D11SamplerState;
struct ID3D11ShaderResourceView;
struct ID3D11UnorderedAccessView;
struct ID3D11Buffer;
struct ID3D11InputLayout;
struct ID3D11BlendState;
struct ID3D11DepthStencilState;
@@ -23,9 +22,6 @@ struct ID3D11RasterizerState;
struct ID3D11RasterizerState2;
struct ID3D11RenderTargetView;
struct ID3D11DepthStencilView;
struct ID3D11Texture1D;
struct ID3D11Texture2D;
struct ID3D11Texture3D;
struct ID3D11Query;
struct ID3D11Predicate;
@@ -173,6 +169,7 @@ namespace wiGraphicsTypes
wiCPUHandle UAV_Vulkan; // main resource UAV
std::vector<wiCPUHandle> additionalUAVs_Vulkan; // can be used for sub-resources if requested
wiCPUHandle resource_DX11;
wiCPUHandle resource_DX12;
wiCPUHandle resource_Vulkan;
wiCPUHandle resourceMemory_Vulkan;
@@ -187,14 +184,13 @@ namespace wiGraphicsTypes
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Buffer* resource_DX11;
wiCPUHandle CBV_DX12;
GPUBufferDesc desc;
public:
GPUBuffer();
virtual ~GPUBuffer();
bool IsValid() { return resource_DX11 != nullptr || resource_DX12 != WI_NULL_HANDLE || resource_Vulkan != WI_NULL_HANDLE; }
bool IsValid() { return resource_DX11 != WI_NULL_HANDLE || resource_DX12 != WI_NULL_HANDLE || resource_Vulkan != WI_NULL_HANDLE; }
GPUBufferDesc GetDesc() { return desc; }
};
@@ -315,7 +311,6 @@ namespace wiGraphicsTypes
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Texture1D* texture1D_DX11;
public:
Texture1D();
virtual ~Texture1D();
@@ -334,7 +329,6 @@ namespace wiGraphicsTypes
wiCPUHandle DSV_Vulkan;
std::vector<wiCPUHandle> additionalDSVs_Vulkan;
ID3D11Texture2D* texture2D_DX11;
public:
Texture2D();
virtual ~Texture2D();
@@ -346,7 +340,6 @@ namespace wiGraphicsTypes
friend class GraphicsDevice_DX12;
friend class GraphicsDevice_Vulkan;
private:
ID3D11Texture3D* texture3D_DX11;
public:
Texture3D();
virtual ~Texture3D();
+17
View File
@@ -552,6 +552,7 @@ void wiRenderer::LoadBuffers()
bd.CPUAccessFlags = CPU_ACCESS_WRITE;
bd.MiscFlags = 0;
GetDevice()->CreateBuffer(&bd, nullptr, dynamicVertexBufferPool);
GetDevice()->SetName(dynamicVertexBufferPool, "DynamicVertexBufferPool");
for (int i = 0; i < CBTYPE_LAST; ++i)
@@ -569,9 +570,11 @@ void wiRenderer::LoadBuffers()
bd.Usage = USAGE_DEFAULT;
bd.ByteWidth = sizeof(WorldCB);
GetDevice()->CreateBuffer(&bd, nullptr, constantBuffers[CBTYPE_WORLD]);
GetDevice()->SetName(constantBuffers[CBTYPE_WORLD], "PerWorldConstantBuffer");
bd.ByteWidth = sizeof(FrameCB);
GetDevice()->CreateBuffer(&bd, nullptr, constantBuffers[CBTYPE_FRAME]);
GetDevice()->SetName(constantBuffers[CBTYPE_FRAME], "PerFrameConstantBuffer");
// The other constant buffers will be updated frequently (> per frame) so they should reside in DYNAMIC GPU memory!
bd.Usage = USAGE_DYNAMIC;
@@ -579,12 +582,15 @@ void wiRenderer::LoadBuffers()
bd.ByteWidth = sizeof(CameraCB);
GetDevice()->CreateBuffer(&bd, nullptr, constantBuffers[CBTYPE_CAMERA]);
GetDevice()->SetName(constantBuffers[CBTYPE_FRAME], "PerFrameConstantBuffer");
bd.ByteWidth = sizeof(MiscCB);
GetDevice()->CreateBuffer(&bd, nullptr, constantBuffers[CBTYPE_MISC]);
GetDevice()->SetName(constantBuffers[CBTYPE_MISC], "MiscConstantBuffer");
bd.ByteWidth = sizeof(APICB);
GetDevice()->CreateBuffer(&bd, nullptr, constantBuffers[CBTYPE_API]);
GetDevice()->SetName(constantBuffers[CBTYPE_API], "APIConstantBuffer");
// On demand buffers...
@@ -6668,6 +6674,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, bvhNodeBuffer);
assert(SUCCEEDED(hr));
device->SetName(bvhNodeBuffer, "BVHNodeBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(BVHAABB);
@@ -6678,6 +6685,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, bvhAABBBuffer);
assert(SUCCEEDED(hr));
device->SetName(bvhAABBBuffer, "BVHAABBBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(uint);
@@ -6688,6 +6696,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, bvhFlagBuffer);
assert(SUCCEEDED(hr));
device->SetName(bvhFlagBuffer, "BVHFlagBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(BVHMeshTriangle);
@@ -6698,6 +6707,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, triangleBuffer);
assert(SUCCEEDED(hr));
device->SetName(triangleBuffer, "BVHTriangleBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(uint);
@@ -6708,6 +6718,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, clusterCounterBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterCounterBuffer, "BVHClusterCounterBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(uint);
@@ -6718,6 +6729,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, clusterIndexBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterIndexBuffer, "BVHClusterIndexBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(uint);
@@ -6729,6 +6741,8 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
hr = device->CreateBuffer(&desc, nullptr, clusterMortonBuffer);
hr = device->CreateBuffer(&desc, nullptr, clusterSortedMortonBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterMortonBuffer, "BVHClusterMortonBuffer");
device->SetName(clusterSortedMortonBuffer, "BVHSortedClusterMortonBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(uint2);
@@ -6739,6 +6753,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, clusterOffsetBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterOffsetBuffer, "BVHClusterOffsetBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(BVHAABB);
@@ -6749,6 +6764,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, clusterAABBBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterAABBBuffer, "BVHClusterAABBBuffer");
desc.BindFlags = BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS;
desc.StructureByteStride = sizeof(ClusterCone);
@@ -6759,6 +6775,7 @@ void wiRenderer::BuildSceneBVH(GRAPHICSTHREAD threadID)
desc.Usage = USAGE_DEFAULT;
hr = device->CreateBuffer(&desc, nullptr, clusterConeBuffer);
assert(SUCCEEDED(hr));
device->SetName(clusterConeBuffer, "BVHClusterConeBuffer");
}
static GPUBuffer* indirectBuffer = nullptr; // GPU job kicks
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wiVersion
// minor features, major updates
const int minor = 19;
// minor bug fixes, alterations, refactors, updates
const int revision = 6;
const int revision = 7;
long GetVersion()