summaryrefslogtreecommitdiffstats
path: root/tools/render-test/render-d3d11.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2018-06-01 10:41:13 -0400
committerTim Foley <tfoleyNV@users.noreply.github.com>2018-06-01 07:41:13 -0700
commit698ba86962d10d927d7ac4eb781e05e33f08c9eb (patch)
tree0c014c388a52c8eb571f548227696bd6e638178f /tools/render-test/render-d3d11.cpp
parent8d77db3c4e357329c8693457d37b99fc1f48a9f7 (diff)
1st stage renderer binding refactor (#587)
* First pass at support for textures in vulkan. * Binding state has first pass support for VkImageView VkSampler. * Split out _calcImageViewType * Fix bug in debug build around constant buffer being added but not part of the binding description for the test. * Offset recalculated for vk texture construction just store the texture size for each mip level. * When outputing a vector type with a size of 1 in GLSL, it needs to be output as the underlying type. For example vector<float,1> should be output as float in GLSL. * Vulkan render-test produces right output for the test tests/compute/textureSamplingTest.slang -slang -gcompute -o tests/compute/textureSamplingTest.slang.actual.txt -vk * Small improvement around xml encoding a string. * More generalized test synthesis. * Fix image usage flags for Vulkan. * Improvements to what gets synthesized vulkan tests. * Do transition on all mip levels. * Fixing problems appearing from vulkan debug layer. * Disable Vulkan synthesized tests for now. * Add Resource::Type member to Resource::DescBase. * Removed the CompactIndexSlice from binding. Just bind the indices needed. * BindingRegister -> RegisterSet * RegisterSet -> RegisterRange * Typo fix for debug build. * Remove comment that no longer applied.
Diffstat (limited to 'tools/render-test/render-d3d11.cpp')
-rw-r--r--tools/render-test/render-d3d11.cpp56
1 files changed, 28 insertions, 28 deletions
diff --git a/tools/render-test/render-d3d11.cpp b/tools/render-test/render-d3d11.cpp
index 9523d37cd..d47a4a559 100644
--- a/tools/render-test/render-d3d11.cpp
+++ b/tools/render-test/render-d3d11.cpp
@@ -50,7 +50,7 @@ public:
virtual void setClearColor(const float color[4]) override;
virtual void clearFrame() override;
virtual void presentFrame() override;
- virtual TextureResource* createTextureResource(Resource::Type type, Resource::Usage initialUsage, const TextureResource::Desc& desc, const TextureResource::Data* initData) override;
+ virtual TextureResource* createTextureResource(Resource::Usage initialUsage, const TextureResource::Desc& desc, const TextureResource::Data* initData) override;
virtual BufferResource* createBufferResource(Resource::Usage initialUsage, const BufferResource::Desc& bufferDesc, const void* initData) override;
virtual SlangResult captureScreenSurface(Surface& surfaceOut) override;
virtual InputLayout* createInputLayout( const InputElementDesc* inputElements, UInt inputElementCount) override;
@@ -79,8 +79,6 @@ public:
ComPtr<ID3D11ShaderResourceView> m_srv;
ComPtr<ID3D11UnorderedAccessView> m_uav;
ComPtr<ID3D11SamplerState> m_samplerState;
-
- int m_binding = 0;
};
class BindingStateImpl: public BindingState
@@ -125,8 +123,8 @@ public:
public:
typedef TextureResource Parent;
- TextureResourceImpl(Type type, const Desc& desc, Usage initialUsage) :
- Parent(type, desc),
+ TextureResourceImpl(const Desc& desc, Usage initialUsage) :
+ Parent(desc),
m_initialUsage(initialUsage)
{
}
@@ -431,12 +429,12 @@ static int _calcResourceAccessFlags(int accessFlags)
}
}
-TextureResource* D3D11Renderer::createTextureResource(Resource::Type type, Resource::Usage initialUsage, const TextureResource::Desc& descIn, const TextureResource::Data* initData)
+TextureResource* D3D11Renderer::createTextureResource(Resource::Usage initialUsage, const TextureResource::Desc& descIn, const TextureResource::Data* initData)
{
TextureResource::Desc srcDesc(descIn);
- srcDesc.setDefaults(type, initialUsage);
+ srcDesc.setDefaults(initialUsage);
- const int effectiveArraySize = srcDesc.calcEffectiveArraySize(type);
+ const int effectiveArraySize = srcDesc.calcEffectiveArraySize();
assert(initData);
assert(initData->numSubResources == srcDesc.numMipLevels * effectiveArraySize * srcDesc.size.depth);
@@ -474,9 +472,9 @@ TextureResource* D3D11Renderer::createTextureResource(Resource::Type type, Resou
const int accessFlags = _calcResourceAccessFlags(srcDesc.cpuAccessFlags);
- RefPtr<TextureResourceImpl> texture(new TextureResourceImpl(type, srcDesc, initialUsage));
+ RefPtr<TextureResourceImpl> texture(new TextureResourceImpl(srcDesc, initialUsage));
- switch (type)
+ switch (srcDesc.type)
{
case Resource::Type::Texture1D:
{
@@ -513,7 +511,7 @@ TextureResource* D3D11Renderer::createTextureResource(Resource::Type type, Resou
desc.SampleDesc.Count = srcDesc.sampleDesc.numSamples;
desc.SampleDesc.Quality = srcDesc.sampleDesc.quality;
- if (type == Resource::Type::TextureCube)
+ if (srcDesc.type == Resource::Type::TextureCube)
{
desc.MiscFlags |= D3D11_RESOURCE_MISC_TEXTURECUBE;
}
@@ -840,7 +838,7 @@ BindingState* D3D11Renderer::createBindingState(const BindingState::Desc& bindin
auto& dstDetail = dstDetails[i];
const auto& srcBinding = srcBindings[i];
- dstDetail.m_binding = bindingStateDesc.getFirst(BindingState::ShaderStyle::Hlsl, srcBinding.shaderBindSet);
+ assert(srcBinding.registerRange.isSingle());
switch (srcBinding.bindingType)
{
@@ -1028,6 +1026,8 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
const auto& binding = bindings[i];
const auto& detail = details[i];
+ const int bindingIndex = binding.registerRange.getSingleIndex();
+
switch (binding.bindingType)
{
case BindingType::Buffer:
@@ -1037,29 +1037,29 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
{
ID3D11Buffer* buffer = static_cast<BufferResourceImpl*>(binding.resource.Ptr())->m_buffer;
if (isCompute)
- context->CSSetConstantBuffers(detail.m_binding, 1, &buffer);
+ context->CSSetConstantBuffers(bindingIndex, 1, &buffer);
else
{
- context->VSSetConstantBuffers(detail.m_binding, 1, &buffer);
- context->PSSetConstantBuffers(detail.m_binding, 1, &buffer);
+ context->VSSetConstantBuffers(bindingIndex, 1, &buffer);
+ context->PSSetConstantBuffers(bindingIndex, 1, &buffer);
}
}
else if (detail.m_uav)
{
if (isCompute)
- context->CSSetUnorderedAccessViews(detail.m_binding, 1, detail.m_uav.readRef(), nullptr);
+ context->CSSetUnorderedAccessViews(bindingIndex, 1, detail.m_uav.readRef(), nullptr);
else
context->OMSetRenderTargetsAndUnorderedAccessViews(m_currentBindings->getDesc().m_numRenderTargets,
- m_renderTargetViews.Buffer()->readRef(), nullptr, detail.m_binding, 1, detail.m_uav.readRef(), nullptr);
+ m_renderTargetViews.Buffer()->readRef(), nullptr, bindingIndex, 1, detail.m_uav.readRef(), nullptr);
}
else
{
if (isCompute)
- context->CSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
+ context->CSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
else
{
- context->PSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
- context->VSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
+ context->PSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
+ context->VSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
}
}
break;
@@ -1069,19 +1069,19 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
if (detail.m_uav)
{
if (isCompute)
- context->CSSetUnorderedAccessViews(detail.m_binding, 1, detail.m_uav.readRef(), nullptr);
+ context->CSSetUnorderedAccessViews(bindingIndex, 1, detail.m_uav.readRef(), nullptr);
else
context->OMSetRenderTargetsAndUnorderedAccessViews(D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL,
- nullptr, nullptr, detail.m_binding, 1, detail.m_uav.readRef(), nullptr);
+ nullptr, nullptr, bindingIndex, 1, detail.m_uav.readRef(), nullptr);
}
else
{
if (isCompute)
- context->CSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
+ context->CSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
else
{
- context->PSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
- context->VSSetShaderResources(detail.m_binding, 1, detail.m_srv.readRef());
+ context->PSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
+ context->VSSetShaderResources(bindingIndex, 1, detail.m_srv.readRef());
}
}
break;
@@ -1089,11 +1089,11 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
case BindingType::Sampler:
{
if (isCompute)
- context->CSSetSamplers(detail.m_binding, 1, detail.m_samplerState.readRef());
+ context->CSSetSamplers(bindingIndex, 1, detail.m_samplerState.readRef());
else
{
- context->PSSetSamplers(detail.m_binding, 1, detail.m_samplerState.readRef());
- context->VSSetSamplers(detail.m_binding, 1, detail.m_samplerState.readRef());
+ context->PSSetSamplers(bindingIndex, 1, detail.m_samplerState.readRef());
+ context->VSSetSamplers(bindingIndex, 1, detail.m_samplerState.readRef());
}
break;
}