a few more tweaks for #3681
expose TIoMapper::setAutoPushConstantBlock() add overload for MapToSpirvToolsEnv() that takes TIntermediate instead of SpvVersion.
This commit is contained in:
parent
96899e0f47
commit
4a9f088915
5 changed files with 24 additions and 16 deletions
|
|
@ -82,6 +82,11 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog
|
||||||
return spv_target_env::SPV_ENV_UNIVERSAL_1_0;
|
return spv_target_env::SPV_ENV_UNIVERSAL_1_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger)
|
||||||
|
{
|
||||||
|
return MapToSpirvToolsEnv(intermediate.getSpv(), logger);
|
||||||
|
}
|
||||||
|
|
||||||
// Callback passed to spvtools::Optimizer::SetMessageConsumer
|
// Callback passed to spvtools::Optimizer::SetMessageConsumer
|
||||||
void OptimizerMesssageConsumer(spv_message_level_t level, const char *source,
|
void OptimizerMesssageConsumer(spv_message_level_t level, const char *source,
|
||||||
const spv_position_t &position, const char *message)
|
const spv_position_t &position, const char *message)
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ class TIntermediate;
|
||||||
|
|
||||||
// Translate glslang's view of target versioning to what SPIRV-Tools uses.
|
// Translate glslang's view of target versioning to what SPIRV-Tools uses.
|
||||||
GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger);
|
GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger);
|
||||||
|
GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger);
|
||||||
|
|
||||||
// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
|
// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment.
|
||||||
GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv);
|
GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector<unsigned int>& spirv);
|
||||||
|
|
|
||||||
|
|
@ -307,21 +307,6 @@ typedef TVector<TTypeLoc> TTypeList;
|
||||||
|
|
||||||
typedef TVector<TString*> TIdentifierList;
|
typedef TVector<TString*> TIdentifierList;
|
||||||
|
|
||||||
//
|
|
||||||
// Following are a series of helper enums for managing layouts and qualifiers,
|
|
||||||
// used for TPublicType, TType, others.
|
|
||||||
//
|
|
||||||
|
|
||||||
enum TLayoutPacking {
|
|
||||||
ElpNone,
|
|
||||||
ElpShared, // default, but different than saying nothing
|
|
||||||
ElpStd140,
|
|
||||||
ElpStd430,
|
|
||||||
ElpPacked,
|
|
||||||
ElpScalar,
|
|
||||||
ElpCount // If expanding, see bitfield width below
|
|
||||||
};
|
|
||||||
|
|
||||||
enum TLayoutMatrix {
|
enum TLayoutMatrix {
|
||||||
ElmNone,
|
ElmNone,
|
||||||
ElmRowMajor,
|
ElmRowMajor,
|
||||||
|
|
|
||||||
|
|
@ -196,10 +196,11 @@ public:
|
||||||
virtual ~TGlslIoMapper();
|
virtual ~TGlslIoMapper();
|
||||||
// If set, the uniform block with the given name will be changed to be backed by
|
// If set, the uniform block with the given name will be changed to be backed by
|
||||||
// push_constant if it's size is <= maxSize
|
// push_constant if it's size is <= maxSize
|
||||||
void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) {
|
bool setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) override {
|
||||||
autoPushConstantBlockName = name;
|
autoPushConstantBlockName = name;
|
||||||
autoPushConstantMaxSize = maxSize;
|
autoPushConstantMaxSize = maxSize;
|
||||||
autoPushConstantBlockPacking = packing;
|
autoPushConstantBlockPacking = packing;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
// grow the reflection stage by stage
|
// grow the reflection stage by stage
|
||||||
bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override;
|
bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override;
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,21 @@ typedef enum {
|
||||||
LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7),
|
LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7),
|
||||||
} EShTargetLanguageVersion;
|
} EShTargetLanguageVersion;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Following are a series of helper enums for managing layouts and qualifiers,
|
||||||
|
// used for TPublicType, TType, others.
|
||||||
|
//
|
||||||
|
|
||||||
|
enum TLayoutPacking {
|
||||||
|
ElpNone,
|
||||||
|
ElpShared, // default, but different than saying nothing
|
||||||
|
ElpStd140,
|
||||||
|
ElpStd430,
|
||||||
|
ElpPacked,
|
||||||
|
ElpScalar,
|
||||||
|
ElpCount // If expanding, see bitfield width below
|
||||||
|
};
|
||||||
|
|
||||||
struct TInputLanguage {
|
struct TInputLanguage {
|
||||||
EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone
|
EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone
|
||||||
EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone
|
EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone
|
||||||
|
|
@ -847,6 +862,7 @@ public:
|
||||||
// grow the reflection stage by stage
|
// grow the reflection stage by stage
|
||||||
bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*);
|
bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*);
|
||||||
bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }
|
bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }
|
||||||
|
bool virtual setAutoPushConstantBlock(const char*, unsigned int, TLayoutPacking) { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the default GLSL IO mapper
|
// Get the default GLSL IO mapper
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue