HLSL: add readonly qualifier to tbuffer, so they end up as SRV
This commit is contained in:
parent
be28355019
commit
7b1dcd6693
7 changed files with 101 additions and 29 deletions
|
|
@ -1555,14 +1555,23 @@ void TShader::setSourceEntryPoint(const char* name)
|
|||
sourceEntryPointName = name;
|
||||
}
|
||||
|
||||
// Set binding base for sampler types
|
||||
void TShader::setShiftSamplerBinding(unsigned int base) { intermediate->setShiftSamplerBinding(base); }
|
||||
// Set binding base for texture types (SRV)
|
||||
void TShader::setShiftTextureBinding(unsigned int base) { intermediate->setShiftTextureBinding(base); }
|
||||
// Set binding base for image types
|
||||
void TShader::setShiftImageBinding(unsigned int base) { intermediate->setShiftImageBinding(base); }
|
||||
// Set binding base for uniform buffer objects (CBV)
|
||||
void TShader::setShiftUboBinding(unsigned int base) { intermediate->setShiftUboBinding(base); }
|
||||
// Synonym for setShiftUboBinding, to match HLSL language.
|
||||
void TShader::setShiftCbufferBinding(unsigned int base) { intermediate->setShiftUboBinding(base); }
|
||||
// Set binding base for UAV (unordered access view)
|
||||
void TShader::setShiftUavBinding(unsigned int base) { intermediate->setShiftUavBinding(base); }
|
||||
// Set binding base for SSBOs
|
||||
void TShader::setShiftSsboBinding(unsigned int base) { intermediate->setShiftSsboBinding(base); }
|
||||
// Enables binding automapping using TIoMapper
|
||||
void TShader::setAutoMapBindings(bool map) { intermediate->setAutoMapBindings(map); }
|
||||
// See comment above TDefaultHlslIoMapper in iomapper.cpp:
|
||||
void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); }
|
||||
void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlattenUniformArrays(flatten); }
|
||||
void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); }
|
||||
|
|
|
|||
|
|
@ -491,6 +491,48 @@ protected:
|
|||
}
|
||||
};
|
||||
|
||||
/********************************************************************************
|
||||
The following IO resolver maps types in HLSL register space, as follows:
|
||||
|
||||
t – for shader resource views (SRV)
|
||||
TEXTURE1D
|
||||
TEXTURE1DARRAY
|
||||
TEXTURE2D
|
||||
TEXTURE2DARRAY
|
||||
TEXTURE3D
|
||||
TEXTURECUBE
|
||||
TEXTURECUBEARRAY
|
||||
TEXTURE2DMS
|
||||
TEXTURE2DMSARRAY
|
||||
STRUCTUREDBUFFER
|
||||
BYTEADDRESSBUFFER
|
||||
BUFFER
|
||||
TBUFFER
|
||||
|
||||
s – for samplers
|
||||
SAMPLER
|
||||
SAMPLER1D
|
||||
SAMPLER2D
|
||||
SAMPLER3D
|
||||
SAMPLERCUBE
|
||||
SAMPLERSTATE
|
||||
SAMPLERCOMPARISONSTATE
|
||||
|
||||
u – for unordered access views (UAV)
|
||||
RWBYTEADDRESSBUFFER
|
||||
RWSTRUCTUREDBUFFER
|
||||
APPENDSTRUCTUREDBUFFER
|
||||
CONSUMESTRUCTUREDBUFFER
|
||||
RWBUFFER
|
||||
RWTEXTURE1D
|
||||
RWTEXTURE1DARRAY
|
||||
RWTEXTURE2D
|
||||
RWTEXTURE2DARRAY
|
||||
RWTEXTURE3D
|
||||
|
||||
b – for constant buffer views (CBV)
|
||||
CBUFFER
|
||||
********************************************************************************/
|
||||
struct TDefaultHlslIoResolver : public TDefaultIoResolverBase
|
||||
{
|
||||
bool validateBinding(EShLanguage /*stage*/, const char* /*name*/, const glslang::TType& type, bool /*is_live*/) override
|
||||
|
|
@ -498,7 +540,6 @@ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase
|
|||
if (type.getQualifier().hasBinding()) {
|
||||
const int set = getLayoutSet(type);
|
||||
|
||||
// Use Uav binding if requested: else will pass through to old behavior
|
||||
if (isUavType(type))
|
||||
return checkEmpty(set, baseUavBinding + type.getQualifier().layoutBinding);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue