Skip to content

Commit 6c01509

Browse files
committed
more changes to spirvintrospector + added helper function to preprocess for CCompilerSet
1 parent b7de778 commit 6c01509

File tree

5 files changed

+107
-77
lines changed

5 files changed

+107
-77
lines changed

include/nbl/asset/utils/CCompilerSet.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ namespace nbl::asset
1919
, m_GLSLCompiler(core::make_smart_refctd_ptr<CGLSLCompiler>(core::smart_refctd_ptr(sys)))
2020
{}
2121

22-
core::smart_refctd_ptr<const ICPUShader> compileToSPIRV(const asset::ICPUShader* shader, const IShaderCompiler::SCompilerOptions& options);
22+
core::smart_refctd_ptr<ICPUShader> compileToSPIRV(const asset::ICPUShader* shader, const IShaderCompiler::SCompilerOptions& options) const;
23+
24+
core::smart_refctd_ptr<ICPUShader> preprocessShader(const asset::ICPUShader* shader, const IShaderCompiler::SPreprocessorOptions& preprocessOptions) const;
2325

2426
inline core::smart_refctd_ptr<IShaderCompiler> getShaderCompiler(IShader::E_CONTENT_TYPE contentType) const
2527
{

include/nbl/asset/utils/CSPIRVIntrospector.h

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// This file is part of the "Nabla Engine".
33
// For conditions of distribution and use, see copyright notice in nabla.h
44

5-
#ifndef __NBL_ASSET_C_SHADER_INTROSPECTOR_H_INCLUDED__
6-
#define __NBL_ASSET_C_SHADER_INTROSPECTOR_H_INCLUDED__
5+
#ifndef __NBL_ASSET_C_SPIRV_INTROSPECTOR_H_INCLUDED__
6+
#define __NBL_ASSET_C_SPIRV_INTROSPECTOR_H_INCLUDED__
77

88
#include "nbl/core/declarations.h"
99

@@ -30,94 +30,92 @@ namespace spirv_cross
3030

3131
namespace nbl::asset
3232
{
33-
34-
class NBL_API CIntrospectionData : public core::IReferenceCounted
33+
class NBL_API2 CSPIRVIntrospector : public core::Uncopyable
3534
{
36-
protected:
37-
~CIntrospectionData();
38-
3935
public:
40-
struct SSpecConstant
41-
{
42-
uint32_t id;
43-
size_t byteSize;
44-
E_GLSL_VAR_TYPE type;
45-
std::string name;
46-
union {
47-
uint64_t u64;
48-
int64_t i64;
49-
uint32_t u32;
50-
int32_t i32;
51-
double f64;
52-
float f32;
53-
} defaultValue;
54-
};
55-
//! Sorted by `id`
56-
core::vector<SSpecConstant> specConstants;
57-
//! Each vector is sorted by `binding`
58-
core::vector<SShaderResourceVariant> descriptorSetBindings[4];
59-
//! Sorted by `location`
60-
core::vector<SShaderInfoVariant> inputOutput;
61-
62-
struct {
63-
bool present;
64-
SShaderPushConstant info;
65-
} pushConstant;
66-
67-
bool canSpecializationlesslyCreateDescSetFrom() const
36+
37+
class NBL_API2 CIntrospectionData : public core::IReferenceCounted
6838
{
69-
for (const auto& descSet : descriptorSetBindings)
39+
protected:
40+
~CIntrospectionData();
41+
42+
public:
43+
struct SSpecConstant
7044
{
71-
auto found = std::find_if(descSet.begin(), descSet.end(), [](const SShaderResourceVariant& bnd) { return bnd.descCountIsSpecConstant; });
72-
if (found != descSet.end())
73-
return false;
45+
uint32_t id;
46+
size_t byteSize;
47+
E_GLSL_VAR_TYPE type;
48+
std::string name;
49+
union {
50+
uint64_t u64;
51+
int64_t i64;
52+
uint32_t u32;
53+
int32_t i32;
54+
double f64;
55+
float f32;
56+
} defaultValue;
57+
};
58+
//! Sorted by `id`
59+
core::vector<SSpecConstant> specConstants;
60+
//! Each vector is sorted by `binding`
61+
core::vector<SShaderResourceVariant> descriptorSetBindings[4];
62+
//! Sorted by `location`
63+
core::vector<SShaderInfoVariant> inputOutput;
64+
65+
struct {
66+
bool present;
67+
SShaderPushConstant info;
68+
} pushConstant;
69+
70+
bool canSpecializationlesslyCreateDescSetFrom() const
71+
{
72+
for (const auto& descSet : descriptorSetBindings)
73+
{
74+
auto found = std::find_if(descSet.begin(), descSet.end(), [](const SShaderResourceVariant& bnd) { return bnd.descCountIsSpecConstant; });
75+
if (found != descSet.end())
76+
return false;
77+
}
78+
return true;
7479
}
75-
return true;
76-
}
77-
};
78-
79-
class NBL_API CSPIRVIntrospector : public core::Uncopyable
80-
{
81-
using mapId2SpecConst_t = core::unordered_map<uint32_t, const CIntrospectionData::SSpecConstant*>;
80+
};
8281

83-
public:
8482
struct SIntrospectionParams
8583
{
8684
std::string entryPoint;
8785
core::smart_refctd_ptr<const ICPUShader> cpuShader;
8886

89-
bool operator==(const SIntrospectionParams& rhs) const { return false; /*TODO*/ }
87+
bool operator==(const SIntrospectionParams& rhs) const { return true; /*TODO*/ }
9088
};
9189

9290
//In the future there's also going list of enabled extensions
9391
CSPIRVIntrospector() = default;
9492

9593
//! params.cpuShader.contentType should be ECT_SPIRV
96-
//! the compiled SPIRV must be compiled with IShaderCompiler::SCompilerOptions::genDebugInfo in order to include names in introspection data
97-
const core::smart_refctd_ptr<CIntrospectionData> introspect(const SIntrospectionParams& params, bool insertToCache = true);
94+
//! the compiled SPIRV must be compiled with IShaderCompiler::SCompilerOptions::genDebugInfo with no `spirvOptimizer` used in order to include names in introspection data
95+
core::smart_refctd_ptr<const CIntrospectionData> introspect(const SIntrospectionParams& params, bool insertToCache = true);
9896

9997
//
10098
std::pair<bool/*is shadow sampler*/, IImageView<ICPUImage>::E_TYPE> getImageInfoFromIntrospection(uint32_t set, uint32_t binding, const core::SRange<const ICPUSpecializedShader* const>& _shaders);
10199

102100
inline core::smart_refctd_dynamic_array<SPushConstantRange> createPushConstantRangesFromIntrospection(const core::SRange<const ICPUSpecializedShader* const>& _shaders)
103101
{
104-
core::smart_refctd_ptr<CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
102+
core::smart_refctd_ptr<const CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
105103
if (!introspectAllShaders(introspections,_shaders))
106104
return nullptr;
107105

108106
return createPushConstantRangesFromIntrospection_impl(introspections,_shaders);
109107
}
110108
inline core::smart_refctd_ptr<ICPUDescriptorSetLayout> createApproximateDescriptorSetLayoutFromIntrospection(uint32_t set, const core::SRange<const ICPUSpecializedShader* const>& _shaders)
111109
{
112-
core::smart_refctd_ptr<CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
110+
core::smart_refctd_ptr<const CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
113111
if (!introspectAllShaders(introspections,_shaders))
114112
return nullptr;
115113

116114
return createApproximateDescriptorSetLayoutFromIntrospection_impl(set,introspections,_shaders);
117115
}
118116
inline core::smart_refctd_ptr<ICPUPipelineLayout> createApproximatePipelineLayoutFromIntrospection(const core::SRange<const ICPUSpecializedShader* const>& _shaders)
119117
{
120-
core::smart_refctd_ptr<CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
118+
core::smart_refctd_ptr<const CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
121119
if (!introspectAllShaders(introspections,_shaders))
122120
return nullptr;
123121

@@ -131,7 +129,7 @@ class NBL_API CSPIRVIntrospector : public core::Uncopyable
131129
return nullptr;
132130

133131
const core::SRange<const ICPUSpecializedShader* const> shaders = {&shader,&shader+1};
134-
core::smart_refctd_ptr<CIntrospectionData> introspection = nullptr;
132+
core::smart_refctd_ptr<const CIntrospectionData> introspection = nullptr;
135133
if (!introspectAllShaders(&introspection,shaders))
136134
return nullptr;
137135

@@ -146,14 +144,16 @@ class NBL_API CSPIRVIntrospector : public core::Uncopyable
146144
core::smart_refctd_ptr<ICPURenderpassIndependentPipeline> createApproximateRenderpassIndependentPipelineFromIntrospection(const core::SRange<ICPUSpecializedShader* const>& _shaders);
147145

148146
private:
149-
core::smart_refctd_dynamic_array<SPushConstantRange> createPushConstantRangesFromIntrospection_impl(core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
150-
core::smart_refctd_ptr<ICPUDescriptorSetLayout> createApproximateDescriptorSetLayoutFromIntrospection_impl(uint32_t _set, core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
151-
core::smart_refctd_ptr<ICPUPipelineLayout> createApproximatePipelineLayoutFromIntrospection_impl(core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
147+
using mapId2SpecConst_t = core::unordered_map<uint32_t, const CIntrospectionData::SSpecConstant*>;
148+
149+
core::smart_refctd_dynamic_array<SPushConstantRange> createPushConstantRangesFromIntrospection_impl(core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
150+
core::smart_refctd_ptr<ICPUDescriptorSetLayout> createApproximateDescriptorSetLayoutFromIntrospection_impl(uint32_t _set, core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
151+
core::smart_refctd_ptr<ICPUPipelineLayout> createApproximatePipelineLayoutFromIntrospection_impl(core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders);
152152

153153
_NBL_STATIC_INLINE_CONSTEXPR size_t MAX_STAGE_COUNT = 14ull;
154-
bool introspectAllShaders(core::smart_refctd_ptr<CIntrospectionData>* introspection, const core::SRange<const ICPUSpecializedShader* const>& _shaders);
154+
bool introspectAllShaders(core::smart_refctd_ptr<const CIntrospectionData>* introspection, const core::SRange<const ICPUSpecializedShader* const>& _shaders);
155155

156-
core::smart_refctd_ptr<CIntrospectionData> doIntrospection(spirv_cross::Compiler& _comp, const std::string& entryPoint, const IShader::E_SHADER_STAGE stage) const;
156+
core::smart_refctd_ptr<const CIntrospectionData> doIntrospection(spirv_cross::Compiler& _comp, const std::string& entryPoint, const IShader::E_SHADER_STAGE stage) const;
157157
void shaderMemBlockIntrospection(spirv_cross::Compiler& _comp, impl::SShaderMemoryBlock& _res, uint32_t _blockBaseTypeID, uint32_t _varID, const mapId2SpecConst_t& _sortedId2sconst) const;
158158
size_t calcBytesizeforType(spirv_cross::Compiler& _comp, const spirv_cross::SPIRType& _type) const;
159159

@@ -164,7 +164,7 @@ class NBL_API CSPIRVIntrospector : public core::Uncopyable
164164
std::size_t operator()(const SIntrospectionParams& t) const { return 0; /*TODO*/ }
165165
};
166166

167-
using ParamsToDataMap = core::unordered_map<SIntrospectionParams,core::smart_refctd_ptr<CIntrospectionData>, KeyHasher>;
167+
using ParamsToDataMap = core::unordered_map<SIntrospectionParams,core::smart_refctd_ptr<const CIntrospectionData>, KeyHasher>;
168168
ParamsToDataMap m_introspectionCache;
169169
};
170170

src/nbl/asset/utils/CCompilerSet.cpp

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
using namespace nbl;
77
using namespace nbl::asset;
88

9-
core::smart_refctd_ptr<const ICPUShader> CCompilerSet::compileToSPIRV(const ICPUShader* shader, const IShaderCompiler::SCompilerOptions& options)
9+
core::smart_refctd_ptr<ICPUShader> CCompilerSet::compileToSPIRV(const ICPUShader* shader, const IShaderCompiler::SCompilerOptions& options) const
1010
{
11-
core::smart_refctd_ptr<const ICPUShader> outSpirvShader = nullptr;
11+
core::smart_refctd_ptr<ICPUShader> outSpirvShader = nullptr;
1212
if (shader)
1313
{
1414
switch (shader->getContentType())
@@ -27,10 +27,38 @@ core::smart_refctd_ptr<const ICPUShader> CCompilerSet::compileToSPIRV(const ICPU
2727
break;
2828
case IShader::E_CONTENT_TYPE::ECT_SPIRV:
2929
{
30-
outSpirvShader = core::smart_refctd_ptr<const ICPUShader>(shader);
30+
outSpirvShader = core::smart_refctd_ptr<ICPUShader>(const_cast<ICPUShader*>(shader));
3131
}
3232
break;
3333
}
3434
}
3535
return outSpirvShader;
36+
}
37+
38+
core::smart_refctd_ptr<ICPUShader> CCompilerSet::preprocessShader(const ICPUShader* shader, const IShaderCompiler::SPreprocessorOptions& preprocessOptions) const
39+
{
40+
if (shader)
41+
{
42+
switch (shader->getContentType())
43+
{
44+
case IShader::E_CONTENT_TYPE::ECT_HLSL:
45+
{
46+
const char* code = reinterpret_cast<const char*>(shader->getContent()->getPointer());
47+
auto resolvedCode = m_HLSLCompiler->preprocessShader(code, shader->getStage(), preprocessOptions);
48+
return core::make_smart_refctd_ptr<ICPUShader>(resolvedCode.c_str(), shader->getStage(), IShader::E_CONTENT_TYPE::ECT_HLSL, std::string(shader->getFilepathHint()));
49+
}
50+
break;
51+
case IShader::E_CONTENT_TYPE::ECT_GLSL:
52+
{
53+
const char* code = reinterpret_cast<const char*>(shader->getContent()->getPointer());
54+
auto resolvedCode = m_GLSLCompiler->preprocessShader(code, shader->getStage(), preprocessOptions);
55+
return core::make_smart_refctd_ptr<ICPUShader>(resolvedCode.c_str(), shader->getStage(), IShader::E_CONTENT_TYPE::ECT_GLSL, std::string(shader->getFilepathHint()));
56+
}
57+
break;
58+
default:
59+
return nullptr;
60+
}
61+
}
62+
else
63+
return nullptr;
3664
}

src/nbl/asset/utils/CSPIRVIntrospector.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ E_FORMAT spvImageFormat2E_FORMAT(spv::ImageFormat _imgfmt)
6666
}
6767
}//anonymous ns
6868

69-
const core::smart_refctd_ptr<CIntrospectionData> CSPIRVIntrospector::introspect(const SIntrospectionParams& params, bool insertToCache)
69+
core::smart_refctd_ptr<const CSPIRVIntrospector::CIntrospectionData> CSPIRVIntrospector::introspect(const SIntrospectionParams& params, bool insertToCache)
7070
{
7171
if (!params.cpuShader)
7272
return nullptr;
@@ -88,7 +88,7 @@ const core::smart_refctd_ptr<CIntrospectionData> CSPIRVIntrospector::introspect(
8888
return introspection;
8989
}
9090

91-
bool CSPIRVIntrospector::introspectAllShaders(core::smart_refctd_ptr<CIntrospectionData>* outIntrospections, const core::SRange<const ICPUSpecializedShader* const>& _shaders)
91+
bool CSPIRVIntrospector::introspectAllShaders(core::smart_refctd_ptr<const CIntrospectionData>* outIntrospections, const core::SRange<const ICPUSpecializedShader* const>& _shaders)
9292
{
9393
auto it = outIntrospections;
9494
for (auto shader : _shaders)
@@ -140,7 +140,7 @@ std::pair<bool, IImageView<ICPUImage>::E_TYPE> CSPIRVIntrospector::getImageInfoF
140140
{
141141
std::pair<bool, IImageView<ICPUImage>::E_TYPE> fail = { false, IImageView<ICPUImage>::ET_COUNT };
142142

143-
core::smart_refctd_ptr<CIntrospectionData> introspections[MAX_STAGE_COUNT] = {nullptr};
143+
core::smart_refctd_ptr<const CIntrospectionData> introspections[MAX_STAGE_COUNT] = {nullptr};
144144
if (!introspectAllShaders(introspections,_shaders))
145145
return fail;
146146

@@ -156,7 +156,7 @@ std::pair<bool, IImageView<ICPUImage>::E_TYPE> CSPIRVIntrospector::getImageInfoF
156156
return fail;
157157
}
158158

159-
core::smart_refctd_dynamic_array<SPushConstantRange> CSPIRVIntrospector::createPushConstantRangesFromIntrospection_impl(core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
159+
core::smart_refctd_dynamic_array<SPushConstantRange> CSPIRVIntrospector::createPushConstantRangesFromIntrospection_impl(core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
160160
{
161161
core::vector<SPushConstantRange> ranges[MAX_STAGE_COUNT];
162162
{
@@ -233,7 +233,7 @@ core::smart_refctd_dynamic_array<SPushConstantRange> CSPIRVIntrospector::createP
233233
return rngsArray;
234234
}
235235

236-
core::smart_refctd_ptr<ICPUDescriptorSetLayout> CSPIRVIntrospector::createApproximateDescriptorSetLayoutFromIntrospection_impl(uint32_t _set, core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
236+
core::smart_refctd_ptr<ICPUDescriptorSetLayout> CSPIRVIntrospector::createApproximateDescriptorSetLayoutFromIntrospection_impl(uint32_t _set, core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
237237
{
238238
uint32_t checkedDescsCnt[MAX_STAGE_COUNT]{};
239239

@@ -263,7 +263,7 @@ core::smart_refctd_ptr<ICPUDescriptorSetLayout> CSPIRVIntrospector::createApprox
263263

264264
const ICPUSpecializedShader* refShader = nullptr;
265265
uint32_t refIndex = ~0u;
266-
core::smart_refctd_ptr<CIntrospectionData> refIntro = nullptr;
266+
core::smart_refctd_ptr<const CIntrospectionData> refIntro = nullptr;
267267
{
268268
auto checkedDescsCntIt = checkedDescsCnt;
269269
auto introspectionIt = introspections;
@@ -306,7 +306,7 @@ core::smart_refctd_ptr<ICPUDescriptorSetLayout> CSPIRVIntrospector::createApprox
306306
return nullptr; //returns nullptr if no descriptors are bound in set number `_set`
307307
}
308308

309-
core::smart_refctd_ptr<ICPUPipelineLayout> CSPIRVIntrospector::createApproximatePipelineLayoutFromIntrospection_impl(core::smart_refctd_ptr<CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
309+
core::smart_refctd_ptr<ICPUPipelineLayout> CSPIRVIntrospector::createApproximatePipelineLayoutFromIntrospection_impl(core::smart_refctd_ptr<const CIntrospectionData>* const introspections, const core::SRange<const ICPUSpecializedShader* const>& shaders)
310310
{
311311
core::smart_refctd_ptr<ICPUDescriptorSetLayout> dsLayout[ICPUPipelineLayout::DESCRIPTOR_SET_COUNT];
312312
for (uint32_t i = 0u; i < ICPUPipelineLayout::DESCRIPTOR_SET_COUNT; ++i)
@@ -337,7 +337,7 @@ static E_FORMAT glslType2E_FORMAT(E_GLSL_VAR_TYPE _t, uint32_t _e)
337337

338338
core::smart_refctd_ptr<ICPURenderpassIndependentPipeline> CSPIRVIntrospector::createApproximateRenderpassIndependentPipelineFromIntrospection(const core::SRange<ICPUSpecializedShader* const>& _shaders)
339339
{
340-
core::smart_refctd_ptr<CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
340+
core::smart_refctd_ptr<const CIntrospectionData> introspections[MAX_STAGE_COUNT] = { nullptr };
341341
if (!introspectAllShaders(introspections,{_shaders.begin(),_shaders.end()}))
342342
return nullptr;
343343

@@ -428,7 +428,7 @@ static IImageView<ICPUImage>::E_TYPE spvcrossImageType2ImageView(const spirv_cro
428428
return viewType[_type.dim*2u + _type.arrayed];
429429
}
430430

431-
core::smart_refctd_ptr<CIntrospectionData> CSPIRVIntrospector::doIntrospection(
431+
core::smart_refctd_ptr<const CSPIRVIntrospector::CIntrospectionData> CSPIRVIntrospector::doIntrospection(
432432
spirv_cross::Compiler& _comp, const std::string& entryPoint, const IShader::E_SHADER_STAGE shaderStage) const
433433
{
434434
spv::ExecutionModel stage = ESS2spvExecModel(shaderStage);
@@ -625,7 +625,7 @@ namespace {
625625
const spirv_cross::SPIRType& parentType;
626626
uint32_t baseOffset;
627627
};
628-
using mapId2SpecConst_t = core::unordered_map<uint32_t, const CIntrospectionData::SSpecConstant*>;
628+
using mapId2SpecConst_t = core::unordered_map<uint32_t, const CSPIRVIntrospector::CIntrospectionData::SSpecConstant*>;
629629
}
630630
static void introspectStructType(spirv_cross::Compiler& _comp, impl::SShaderMemoryBlock::SMember::SMembers& _dstMembers, const spirv_cross::SPIRType& _parentType, const spirv_cross::SmallVector<spirv_cross::TypeID>& _allMembersTypes, uint32_t _baseOffset, const mapId2SpecConst_t& _mapId2sconst, core::stack<StackElement>& _pushStack) {
631631
using MembT = impl::SShaderMemoryBlock::SMember;
@@ -784,7 +784,7 @@ static void deinitShdrMemBlock(impl::SShaderMemoryBlock& _res)
784784
}
785785
}
786786

787-
static void deinitIntrospectionData(CIntrospectionData* _data)
787+
static void deinitIntrospectionData(CSPIRVIntrospector::CIntrospectionData* _data)
788788
{
789789
for (auto& descSet : _data->descriptorSetBindings)
790790
for (auto& res : descSet)
@@ -804,7 +804,7 @@ static void deinitIntrospectionData(CIntrospectionData* _data)
804804
deinitShdrMemBlock(static_cast<impl::SShaderMemoryBlock&>(_data->pushConstant.info));
805805
}
806806

807-
CIntrospectionData::~CIntrospectionData()
807+
CSPIRVIntrospector::CIntrospectionData::~CIntrospectionData()
808808
{
809809
deinitIntrospectionData(this);
810810
}

src/nbl/video/COpenGLSpecializedShader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class COpenGLSpecializedShader : public core::impl::ResolveAlignment<IGPUSpecial
4343
SMember m;
4444
};
4545

46-
static inline bool getUniformsFromPushConstants(core::vector<SUniform>* uniformList,const asset::CIntrospectionData* _introspection, system::ILogger* logger)
46+
static inline bool getUniformsFromPushConstants(core::vector<SUniform>* uniformList,const asset::CSPIRVIntrospector::CIntrospectionData* _introspection, system::ILogger* logger)
4747
{
4848
assert(_introspection);
4949
const auto& pc = _introspection->pushConstant;

0 commit comments

Comments
 (0)