@@ -443,6 +443,7 @@ void State::initialize(Context *context)
443443 caps.maxCombinedTextureImageUnits );
444444
445445 mAtomicCounterBuffers .resize (caps.maxAtomicCounterBufferBindings );
446+ mValidAtomicCounterBufferCount = 0 ;
446447 mShaderStorageBuffers .resize (caps.maxShaderStorageBufferBindings );
447448 mImageUnits .resize (caps.maxImageUnits );
448449 }
@@ -565,6 +566,7 @@ void State::reset(const Context *context)
565566 {
566567 UpdateIndexedBufferBinding (context, &buf, nullptr , BufferBinding::AtomicCounter, 0 , 0 );
567568 }
569+ mValidAtomicCounterBufferCount = 0 ;
568570
569571 for (OffsetBindingPointer<Buffer> &buf : mShaderStorageBuffers )
570572 {
@@ -1973,6 +1975,10 @@ angle::Result State::setIndexedBufferBinding(const Context *context,
19731975 case BufferBinding::AtomicCounter:
19741976 UpdateIndexedBufferBinding (context, &mAtomicCounterBuffers [index], buffer, target,
19751977 offset, size);
1978+ if (buffer)
1979+ {
1980+ mValidAtomicCounterBufferCount ++;
1981+ }
19761982 break ;
19771983 case BufferBinding::ShaderStorage:
19781984 UpdateIndexedBufferBinding (context, &mShaderStorageBuffers [index], buffer, target,
@@ -2044,6 +2050,7 @@ angle::Result State::detachBuffer(Context *context, const Buffer *buffer)
20442050 if (buf.id () == bufferID)
20452051 {
20462052 UpdateIndexedBufferBinding (context, &buf, nullptr , BufferBinding::AtomicCounter, 0 , 0 );
2053+ mValidAtomicCounterBufferCount --;
20472054 }
20482055 }
20492056
0 commit comments