std::once_flag ShaderPrecompiler::mOnceFlag;
ShaderPrecompiler::ShaderPrecompiler()
-: mRawShaderList(),
+: mRawShaderData(),
mPrecompiled(false),
mEnabled(false)
{
return *(mInstance.get());
}
-void ShaderPrecompiler::GetPrecompileShaderList(std::vector<RawShaderData>& shaderList)
+void ShaderPrecompiler::GetPrecompileShaderList(RawShaderData& shaders)
{
ConditionalWait::ScopedLock lock(mConditionalWait);
if(!IsReady())
}
// move shader list
- shaderList = mRawShaderList;
+ shaders = mRawShaderData;
}
-void ShaderPrecompiler::SavePrecomipleShaderList(std::vector<RawShaderData>& shaderList)
+void ShaderPrecompiler::SavePrecomipleShaderList(RawShaderData& shaders)
{
ConditionalWait::ScopedLock lock(mConditionalWait);
+ mRawShaderData.vertexPrefix = shaders.vertexPrefix;
+ mRawShaderData.fragmentPrefix = shaders.fragmentPrefix;
+ mRawShaderData.vertexShader = shaders.vertexShader;
+ mRawShaderData.fragmentShader = shaders.fragmentShader;
+ mRawShaderData.shaderCount = shaders.shaderCount;
- mRawShaderList = shaderList;
mPrecompiled = true;
mConditionalWait.Notify(lock);
}
* @SINCE_2_2.45
* @param[in] shaders shader data for precompile
*/
- void GetPrecompileShaderList(std::vector<RawShaderData>& shaders);
+ void GetPrecompileShaderList(RawShaderData& shaders);
/**
* @brief Save the precompile shader list.
* @SINCE_2_2.45
* @param[in] shaders shader data for precompile
*/
- void SavePrecomipleShaderList(std::vector<RawShaderData>& shaders);
+ void SavePrecomipleShaderList(RawShaderData& shaders);
/**
* @brief Check precompile list is ready or not
private:
static std::unique_ptr<ShaderPrecompiler> mInstance;
static std::once_flag mOnceFlag;
- std::vector<RawShaderData> mRawShaderList;
+ RawShaderData mRawShaderData;
ConditionalWait mConditionalWait;
bool mPrecompiled;
bool mEnabled;