@@ -27,14 +27,17 @@ ProgramExecutable::ProgramExecutable()
2727 mActiveImagesMask (0 ),
2828 mCanDrawWith(false ),
2929 mTransformFeedbackBufferMode(GL_INTERLEAVED_ATTRIBS),
30+ mDefaultUniformRange(0 , 0 ),
3031 mSamplerUniformRange(0 , 0 ),
3132 mImageUniformRange(0 , 0 ),
3233 mPipelineHasGraphicsUniformBuffers(false ),
3334 mPipelineHasComputeUniformBuffers(false ),
3435 mPipelineHasGraphicsStorageBuffers(false ),
3536 mPipelineHasComputeStorageBuffers(false ),
3637 mPipelineHasGraphicsAtomicCounterBuffers(false ),
37- mPipelineHasComputeAtomicCounterBuffers(false )
38+ mPipelineHasComputeAtomicCounterBuffers(false ),
39+ mPipelineHasGraphicsDefaultUniforms(false ),
40+ mPipelineHasComputeDefaultUniforms(false )
3841{
3942 reset ();
4043}
@@ -63,6 +66,7 @@ ProgramExecutable::ProgramExecutable(const ProgramExecutable &other)
6366 mTransformFeedbackStrides(other.mTransformFeedbackStrides ),
6467 mTransformFeedbackBufferMode(other.mTransformFeedbackBufferMode ),
6568 mUniforms(other.mUniforms ),
69+ mDefaultUniformRange(other.mDefaultUniformRange ),
6670 mSamplerUniformRange(other.mSamplerUniformRange ),
6771 mUniformBlocks(other.mUniformBlocks ),
6872 mAtomicCounterBuffers(other.mAtomicCounterBuffers ),
@@ -73,7 +77,9 @@ ProgramExecutable::ProgramExecutable(const ProgramExecutable &other)
7377 mPipelineHasGraphicsStorageBuffers(other.mPipelineHasGraphicsStorageBuffers ),
7478 mPipelineHasComputeStorageBuffers(other.mPipelineHasComputeStorageBuffers ),
7579 mPipelineHasGraphicsAtomicCounterBuffers(other.mPipelineHasGraphicsAtomicCounterBuffers ),
76- mPipelineHasComputeAtomicCounterBuffers(other.mPipelineHasComputeAtomicCounterBuffers )
80+ mPipelineHasComputeAtomicCounterBuffers(other.mPipelineHasComputeAtomicCounterBuffers ),
81+ mPipelineHasGraphicsDefaultUniforms(other.mPipelineHasGraphicsDefaultUniforms ),
82+ mPipelineHasComputeDefaultUniforms(other.mPipelineHasComputeDefaultUniforms )
7783{
7884 reset ();
7985}
@@ -110,6 +116,8 @@ void ProgramExecutable::reset()
110116 mPipelineHasComputeStorageBuffers = false ;
111117 mPipelineHasGraphicsAtomicCounterBuffers = false ;
112118 mPipelineHasComputeAtomicCounterBuffers = false ;
119+ mPipelineHasGraphicsDefaultUniforms = false ;
120+ mPipelineHasComputeDefaultUniforms = false ;
113121}
114122
115123void ProgramExecutable::load (gl::BinaryInputStream *stream)
@@ -131,6 +139,8 @@ void ProgramExecutable::load(gl::BinaryInputStream *stream)
131139 mPipelineHasComputeStorageBuffers = stream->readBool ();
132140 mPipelineHasGraphicsAtomicCounterBuffers = stream->readBool ();
133141 mPipelineHasComputeAtomicCounterBuffers = stream->readBool ();
142+ mPipelineHasGraphicsDefaultUniforms = stream->readBool ();
143+ mPipelineHasComputeDefaultUniforms = stream->readBool ();
134144}
135145
136146void ProgramExecutable::save (gl::BinaryOutputStream *stream) const
@@ -151,6 +161,8 @@ void ProgramExecutable::save(gl::BinaryOutputStream *stream) const
151161 stream->writeInt (static_cast <bool >(mPipelineHasComputeStorageBuffers ));
152162 stream->writeInt (static_cast <bool >(mPipelineHasGraphicsAtomicCounterBuffers ));
153163 stream->writeInt (static_cast <bool >(mPipelineHasComputeAtomicCounterBuffers ));
164+ stream->writeInt (static_cast <bool >(mPipelineHasGraphicsDefaultUniforms ));
165+ stream->writeInt (static_cast <bool >(mPipelineHasComputeDefaultUniforms ));
154166}
155167
156168const ProgramState *ProgramExecutable::getProgramState (ShaderType shaderType) const
@@ -223,16 +235,10 @@ AttributesMask ProgramExecutable::getAttributesMask() const
223235 return mAttributesMask ;
224236}
225237
226- // TODO: http://anglebug.com/4520: Needs mDefaultUniformRange moved to ProgramExecutable
227238bool ProgramExecutable::hasDefaultUniforms () const
228239{
229- ASSERT (mProgramState || mProgramPipelineState );
230- if (mProgramState )
231- {
232- return mProgramState ->hasDefaultUniforms ();
233- }
234-
235- return mProgramPipelineState ->hasDefaultUniforms ();
240+ return !getDefaultUniformRange ().empty () ||
241+ (isCompute () ? mPipelineHasComputeDefaultUniforms : mPipelineHasGraphicsDefaultUniforms );
236242}
237243
238244// TODO: http://anglebug.com/4520: Needs mSamplerBindings moved to ProgramExecutable
0 commit comments