@@ -50,7 +50,7 @@ class D3D11Renderer : public Renderer, public ShaderCompiler
50
50
virtual void setClearColor (const float color[4 ]) override ;
51
51
virtual void clearFrame () override ;
52
52
virtual void presentFrame () override ;
53
- virtual TextureResource* createTextureResource (Resource::Type type, Resource:: Usage initialUsage, const TextureResource::Desc& desc, const TextureResource::Data* initData) override ;
53
+ virtual TextureResource* createTextureResource (Resource::Usage initialUsage, const TextureResource::Desc& desc, const TextureResource::Data* initData) override ;
54
54
virtual BufferResource* createBufferResource (Resource::Usage initialUsage, const BufferResource::Desc& bufferDesc, const void * initData) override ;
55
55
virtual SlangResult captureScreenSurface (Surface& surfaceOut) override ;
56
56
virtual InputLayout* createInputLayout ( const InputElementDesc* inputElements, UInt inputElementCount) override ;
@@ -79,8 +79,6 @@ class D3D11Renderer : public Renderer, public ShaderCompiler
79
79
ComPtr<ID3D11ShaderResourceView> m_srv;
80
80
ComPtr<ID3D11UnorderedAccessView> m_uav;
81
81
ComPtr<ID3D11SamplerState> m_samplerState;
82
-
83
- int m_binding = 0 ;
84
82
};
85
83
86
84
class BindingStateImpl : public BindingState
@@ -125,8 +123,8 @@ class D3D11Renderer : public Renderer, public ShaderCompiler
125
123
public:
126
124
typedef TextureResource Parent;
127
125
128
- TextureResourceImpl (Type type, const Desc& desc, Usage initialUsage) :
129
- Parent (type, desc),
126
+ TextureResourceImpl (const Desc& desc, Usage initialUsage) :
127
+ Parent (desc),
130
128
m_initialUsage (initialUsage)
131
129
{
132
130
}
@@ -431,12 +429,12 @@ static int _calcResourceAccessFlags(int accessFlags)
431
429
}
432
430
}
433
431
434
- TextureResource* D3D11Renderer::createTextureResource (Resource::Type type, Resource:: Usage initialUsage, const TextureResource::Desc& descIn, const TextureResource::Data* initData)
432
+ TextureResource* D3D11Renderer::createTextureResource (Resource::Usage initialUsage, const TextureResource::Desc& descIn, const TextureResource::Data* initData)
435
433
{
436
434
TextureResource::Desc srcDesc (descIn);
437
- srcDesc.setDefaults (type, initialUsage);
435
+ srcDesc.setDefaults (initialUsage);
438
436
439
- const int effectiveArraySize = srcDesc.calcEffectiveArraySize (type );
437
+ const int effectiveArraySize = srcDesc.calcEffectiveArraySize ();
440
438
441
439
assert (initData);
442
440
assert (initData->numSubResources == srcDesc.numMipLevels * effectiveArraySize * srcDesc.size .depth );
@@ -474,9 +472,9 @@ TextureResource* D3D11Renderer::createTextureResource(Resource::Type type, Resou
474
472
475
473
const int accessFlags = _calcResourceAccessFlags (srcDesc.cpuAccessFlags );
476
474
477
- RefPtr<TextureResourceImpl> texture (new TextureResourceImpl (type, srcDesc, initialUsage));
475
+ RefPtr<TextureResourceImpl> texture (new TextureResourceImpl (srcDesc, initialUsage));
478
476
479
- switch (type)
477
+ switch (srcDesc. type )
480
478
{
481
479
case Resource::Type::Texture1D:
482
480
{
@@ -513,7 +511,7 @@ TextureResource* D3D11Renderer::createTextureResource(Resource::Type type, Resou
513
511
desc.SampleDesc .Count = srcDesc.sampleDesc .numSamples ;
514
512
desc.SampleDesc .Quality = srcDesc.sampleDesc .quality ;
515
513
516
- if (type == Resource::Type::TextureCube)
514
+ if (srcDesc. type == Resource::Type::TextureCube)
517
515
{
518
516
desc.MiscFlags |= D3D11_RESOURCE_MISC_TEXTURECUBE;
519
517
}
@@ -840,7 +838,7 @@ BindingState* D3D11Renderer::createBindingState(const BindingState::Desc& bindin
840
838
auto & dstDetail = dstDetails[i];
841
839
const auto & srcBinding = srcBindings[i];
842
840
843
- dstDetail. m_binding = bindingStateDesc. getFirst (BindingState::ShaderStyle::Hlsl, srcBinding.shaderBindSet );
841
+ assert ( srcBinding.registerRange . isSingle () );
844
842
845
843
switch (srcBinding.bindingType )
846
844
{
@@ -1028,6 +1026,8 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
1028
1026
const auto & binding = bindings[i];
1029
1027
const auto & detail = details[i];
1030
1028
1029
+ const int bindingIndex = binding.registerRange .getSingleIndex ();
1030
+
1031
1031
switch (binding.bindingType )
1032
1032
{
1033
1033
case BindingType::Buffer:
@@ -1037,29 +1037,29 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
1037
1037
{
1038
1038
ID3D11Buffer* buffer = static_cast <BufferResourceImpl*>(binding.resource .Ptr ())->m_buffer ;
1039
1039
if (isCompute)
1040
- context->CSSetConstantBuffers (detail. m_binding , 1 , &buffer);
1040
+ context->CSSetConstantBuffers (bindingIndex , 1 , &buffer);
1041
1041
else
1042
1042
{
1043
- context->VSSetConstantBuffers (detail. m_binding , 1 , &buffer);
1044
- context->PSSetConstantBuffers (detail. m_binding , 1 , &buffer);
1043
+ context->VSSetConstantBuffers (bindingIndex , 1 , &buffer);
1044
+ context->PSSetConstantBuffers (bindingIndex , 1 , &buffer);
1045
1045
}
1046
1046
}
1047
1047
else if (detail.m_uav )
1048
1048
{
1049
1049
if (isCompute)
1050
- context->CSSetUnorderedAccessViews (detail. m_binding , 1 , detail.m_uav .readRef (), nullptr );
1050
+ context->CSSetUnorderedAccessViews (bindingIndex , 1 , detail.m_uav .readRef (), nullptr );
1051
1051
else
1052
1052
context->OMSetRenderTargetsAndUnorderedAccessViews (m_currentBindings->getDesc ().m_numRenderTargets ,
1053
- m_renderTargetViews.Buffer ()->readRef (), nullptr , detail. m_binding , 1 , detail.m_uav .readRef (), nullptr );
1053
+ m_renderTargetViews.Buffer ()->readRef (), nullptr , bindingIndex , 1 , detail.m_uav .readRef (), nullptr );
1054
1054
}
1055
1055
else
1056
1056
{
1057
1057
if (isCompute)
1058
- context->CSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1058
+ context->CSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1059
1059
else
1060
1060
{
1061
- context->PSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1062
- context->VSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1061
+ context->PSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1062
+ context->VSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1063
1063
}
1064
1064
}
1065
1065
break ;
@@ -1069,31 +1069,31 @@ void D3D11Renderer::_applyBindingState(bool isCompute)
1069
1069
if (detail.m_uav )
1070
1070
{
1071
1071
if (isCompute)
1072
- context->CSSetUnorderedAccessViews (detail. m_binding , 1 , detail.m_uav .readRef (), nullptr );
1072
+ context->CSSetUnorderedAccessViews (bindingIndex , 1 , detail.m_uav .readRef (), nullptr );
1073
1073
else
1074
1074
context->OMSetRenderTargetsAndUnorderedAccessViews (D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL,
1075
- nullptr , nullptr , detail. m_binding , 1 , detail.m_uav .readRef (), nullptr );
1075
+ nullptr , nullptr , bindingIndex , 1 , detail.m_uav .readRef (), nullptr );
1076
1076
}
1077
1077
else
1078
1078
{
1079
1079
if (isCompute)
1080
- context->CSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1080
+ context->CSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1081
1081
else
1082
1082
{
1083
- context->PSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1084
- context->VSSetShaderResources (detail. m_binding , 1 , detail.m_srv .readRef ());
1083
+ context->PSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1084
+ context->VSSetShaderResources (bindingIndex , 1 , detail.m_srv .readRef ());
1085
1085
}
1086
1086
}
1087
1087
break ;
1088
1088
}
1089
1089
case BindingType::Sampler:
1090
1090
{
1091
1091
if (isCompute)
1092
- context->CSSetSamplers (detail. m_binding , 1 , detail.m_samplerState .readRef ());
1092
+ context->CSSetSamplers (bindingIndex , 1 , detail.m_samplerState .readRef ());
1093
1093
else
1094
1094
{
1095
- context->PSSetSamplers (detail. m_binding , 1 , detail.m_samplerState .readRef ());
1096
- context->VSSetSamplers (detail. m_binding , 1 , detail.m_samplerState .readRef ());
1095
+ context->PSSetSamplers (bindingIndex , 1 , detail.m_samplerState .readRef ());
1096
+ context->VSSetSamplers (bindingIndex , 1 , detail.m_samplerState .readRef ());
1097
1097
}
1098
1098
break ;
1099
1099
}
0 commit comments