Commit bf6cc88a by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Remove duplicate shaderType parameter to SPIR-V transformer

The passed-in GlslangSpirvOptions already has the shaderType, so this extra parameter was not necessary. Bug: angleproject:4524 Change-Id: Ibbc7442b3173b26825f3cb9e2365789fade92cfc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2611311Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent a8b962b7
...@@ -1457,14 +1457,12 @@ class SpirvTransformer final : public SpirvTransformerBase ...@@ -1457,14 +1457,12 @@ class SpirvTransformer final : public SpirvTransformerBase
{ {
public: public:
SpirvTransformer(const std::vector<uint32_t> &spirvBlobIn, SpirvTransformer(const std::vector<uint32_t> &spirvBlobIn,
gl::ShaderType shaderType,
GlslangSpirvOptions options, GlslangSpirvOptions options,
const ShaderInterfaceVariableInfoMap &variableInfoMap, const ShaderInterfaceVariableInfoMap &variableInfoMap,
SpirvBlob *spirvBlobOut) SpirvBlob *spirvBlobOut)
: SpirvTransformerBase(spirvBlobIn, variableInfoMap, spirvBlobOut), : SpirvTransformerBase(spirvBlobIn, variableInfoMap, spirvBlobOut),
mOptions(options), mOptions(options),
mHasTransformFeedbackOutput(false), mHasTransformFeedbackOutput(false),
mShaderType(shaderType),
mOutputPerVertex{}, mOutputPerVertex{},
mInputPerVertex{} mInputPerVertex{}
{} {}
...@@ -1510,8 +1508,6 @@ class SpirvTransformer final : public SpirvTransformerBase ...@@ -1510,8 +1508,6 @@ class SpirvTransformer final : public SpirvTransformerBase
GlslangSpirvOptions mOptions; GlslangSpirvOptions mOptions;
bool mHasTransformFeedbackOutput; bool mHasTransformFeedbackOutput;
gl::ShaderType mShaderType;
// Traversal state: // Traversal state:
bool mInsertFunctionVariables = false; bool mInsertFunctionVariables = false;
uint32_t mEntryPointId = 0; uint32_t mEntryPointId = 0;
...@@ -1823,7 +1819,7 @@ void SpirvTransformer::visitDecorate(const uint32_t *instruction) ...@@ -1823,7 +1819,7 @@ void SpirvTransformer::visitDecorate(const uint32_t *instruction)
const char *name = mNamesById[id]; const char *name = mNamesById[id];
ASSERT(name != nullptr); ASSERT(name != nullptr);
const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mShaderType, name); const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name);
mVariableInfoById[id] = &info; mVariableInfoById[id] = &info;
} }
} }
...@@ -1871,12 +1867,12 @@ void SpirvTransformer::visitMemberName(const uint32_t *instruction) ...@@ -1871,12 +1867,12 @@ void SpirvTransformer::visitMemberName(const uint32_t *instruction)
return; return;
} }
if (!mVariableInfoMap.contains(mShaderType, name)) if (!mVariableInfoMap.contains(mOptions.shaderType, name))
{ {
return; return;
} }
const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mShaderType, name); const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name);
// Assume output gl_PerVertex is encountered first. When the storage class of these types are // Assume output gl_PerVertex is encountered first. When the storage class of these types are
// determined, the variables can be swapped if this assumption was incorrect. // determined, the variables can be swapped if this assumption was incorrect.
...@@ -2020,7 +2016,7 @@ void SpirvTransformer::visitVariable(const uint32_t *instruction) ...@@ -2020,7 +2016,7 @@ void SpirvTransformer::visitVariable(const uint32_t *instruction)
} }
// Every shader interface variable should have an associated data. // Every shader interface variable should have an associated data.
const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mShaderType, name); const ShaderInterfaceVariableInfo &info = mVariableInfoMap.get(mOptions.shaderType, name);
// Associate the id of this name with its info. // Associate the id of this name with its info.
mVariableInfoById[id] = &info; mVariableInfoById[id] = &info;
...@@ -3923,7 +3919,6 @@ void GlslangGetShaderSource(const GlslangSourceOptions &options, ...@@ -3923,7 +3919,6 @@ void GlslangGetShaderSource(const GlslangSourceOptions &options,
angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback, angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback,
const GlslangSpirvOptions &options, const GlslangSpirvOptions &options,
gl::ShaderType shaderType,
const ShaderInterfaceVariableInfoMap &variableInfoMap, const ShaderInterfaceVariableInfoMap &variableInfoMap,
const SpirvBlob &initialSpirvBlob, const SpirvBlob &initialSpirvBlob,
SpirvBlob *spirvBlobOut) SpirvBlob *spirvBlobOut)
...@@ -3942,8 +3937,7 @@ angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback, ...@@ -3942,8 +3937,7 @@ angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback,
#endif // defined(ANGLE_DEBUG_SPIRV_TRANSFORMER) && ANGLE_DEBUG_SPIRV_TRANSFORMER #endif // defined(ANGLE_DEBUG_SPIRV_TRANSFORMER) && ANGLE_DEBUG_SPIRV_TRANSFORMER
// Transform the SPIR-V code by assigning location/set/binding values. // Transform the SPIR-V code by assigning location/set/binding values.
SpirvTransformer transformer(initialSpirvBlob, shaderType, options, variableInfoMap, SpirvTransformer transformer(initialSpirvBlob, options, variableInfoMap, spirvBlobOut);
spirvBlobOut);
ANGLE_GLSLANG_CHECK(callback, transformer.transform(), GlslangError::InvalidSpirv); ANGLE_GLSLANG_CHECK(callback, transformer.transform(), GlslangError::InvalidSpirv);
// If there are aliasing vertex attributes, transform the SPIR-V again to remove them. // If there are aliasing vertex attributes, transform the SPIR-V again to remove them.
......
...@@ -191,7 +191,6 @@ void GlslangGetShaderSource(const GlslangSourceOptions &options, ...@@ -191,7 +191,6 @@ void GlslangGetShaderSource(const GlslangSourceOptions &options,
angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback, angle::Result GlslangTransformSpirvCode(const GlslangErrorCallback &callback,
const GlslangSpirvOptions &options, const GlslangSpirvOptions &options,
gl::ShaderType shaderType,
const ShaderInterfaceVariableInfoMap &variableInfoMap, const ShaderInterfaceVariableInfoMap &variableInfoMap,
const SpirvBlob &initialSpirvBlob, const SpirvBlob &initialSpirvBlob,
SpirvBlob *spirvBlobOut); SpirvBlob *spirvBlobOut);
......
...@@ -458,8 +458,7 @@ angle::Result GlslangGetShaderSpirvCode(ErrorHandler *context, ...@@ -458,8 +458,7 @@ angle::Result GlslangGetShaderSpirvCode(ErrorHandler *context,
angle::Result status = GlslangTransformSpirvCode( angle::Result status = GlslangTransformSpirvCode(
[context](GlslangError error) { return HandleError(context, error); }, options, [context](GlslangError error) { return HandleError(context, error); }, options,
shaderType, variableInfoMap, initialSpirvBlobs[shaderType], variableInfoMap, initialSpirvBlobs[shaderType], &(*shaderCodeOut)[shaderType]);
&(*shaderCodeOut)[shaderType]);
if (status != angle::Result::Continue) if (status != angle::Result::Continue)
{ {
return status; return status;
......
...@@ -85,13 +85,12 @@ angle::Result GlslangWrapperVk::GetShaderCode(vk::Context *context, ...@@ -85,13 +85,12 @@ angle::Result GlslangWrapperVk::GetShaderCode(vk::Context *context,
angle::Result GlslangWrapperVk::TransformSpirV( angle::Result GlslangWrapperVk::TransformSpirV(
vk::Context *context, vk::Context *context,
const GlslangSpirvOptions &options, const GlslangSpirvOptions &options,
gl::ShaderType shaderType,
const ShaderInterfaceVariableInfoMap &variableInfoMap, const ShaderInterfaceVariableInfoMap &variableInfoMap,
const SpirvBlob &initialSpirvBlob, const SpirvBlob &initialSpirvBlob,
SpirvBlob *shaderCodeOut) SpirvBlob *shaderCodeOut)
{ {
return GlslangTransformSpirvCode( return GlslangTransformSpirvCode(
[context](GlslangError error) { return ErrorHandler(context, error); }, options, shaderType, [context](GlslangError error) { return ErrorHandler(context, error); }, options,
variableInfoMap, initialSpirvBlob, shaderCodeOut); variableInfoMap, initialSpirvBlob, shaderCodeOut);
} }
......
...@@ -45,7 +45,6 @@ class GlslangWrapperVk ...@@ -45,7 +45,6 @@ class GlslangWrapperVk
static angle::Result TransformSpirV(vk::Context *context, static angle::Result TransformSpirV(vk::Context *context,
const GlslangSpirvOptions &options, const GlslangSpirvOptions &options,
gl::ShaderType shaderType,
const ShaderInterfaceVariableInfoMap &variableInfoMap, const ShaderInterfaceVariableInfoMap &variableInfoMap,
const SpirvBlob &initialSpirvBlob, const SpirvBlob &initialSpirvBlob,
SpirvBlob *shaderCodeOut); SpirvBlob *shaderCodeOut);
......
...@@ -36,7 +36,7 @@ bool ValidateTransformedSpirV(ContextVk *contextVk, ...@@ -36,7 +36,7 @@ bool ValidateTransformedSpirV(ContextVk *contextVk,
options.isTransformFeedbackStage = shaderType == gl::ShaderType::Vertex; options.isTransformFeedbackStage = shaderType == gl::ShaderType::Vertex;
SpirvBlob transformed; SpirvBlob transformed;
if (GlslangWrapperVk::TransformSpirV(contextVk, options, shaderType, variableInfoMap, if (GlslangWrapperVk::TransformSpirV(contextVk, options, variableInfoMap,
spirvBlobs[shaderType], spirvBlobs[shaderType],
&transformed) != angle::Result::Continue) &transformed) != angle::Result::Continue)
{ {
...@@ -133,7 +133,7 @@ angle::Result ProgramInfo::initProgram(ContextVk *contextVk, ...@@ -133,7 +133,7 @@ angle::Result ProgramInfo::initProgram(ContextVk *contextVk,
options.removeDebugInfo = !contextVk->getRenderer()->getEnableValidationLayers(); options.removeDebugInfo = !contextVk->getRenderer()->getEnableValidationLayers();
options.isTransformFeedbackStage = shaderType == gl::ShaderType::Vertex; options.isTransformFeedbackStage = shaderType == gl::ShaderType::Vertex;
ANGLE_TRY(GlslangWrapperVk::TransformSpirV(contextVk, options, shaderType, variableInfoMap, ANGLE_TRY(GlslangWrapperVk::TransformSpirV(contextVk, options, variableInfoMap,
originalSpirvBlob, &transformedSpirvBlob)); originalSpirvBlob, &transformedSpirvBlob));
ANGLE_TRY(vk::InitShaderAndSerial(contextVk, &mShaders[shaderType].get(), ANGLE_TRY(vk::InitShaderAndSerial(contextVk, &mShaders[shaderType].get(),
transformedSpirvBlob.data(), transformedSpirvBlob.data(),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment