Pass Context to Framebuffer::invalidateCompletenessCache.
This will be useful for validation state caching.
Bug: angleproject:2747
Change-Id: I0737adca7406f79b9e15429f30ae22e1299cd7e4
Reviewed-on: https://chromium-review.googlesource.com/1158611
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/Framebuffer.cpp b/src/libANGLE/Framebuffer.cpp
index 77fce7e..c479bc1 100644
--- a/src/libANGLE/Framebuffer.cpp
+++ b/src/libANGLE/Framebuffer.cpp
@@ -994,7 +994,7 @@
return false;
}
-void Framebuffer::invalidateCompletenessCache()
+void Framebuffer::invalidateCompletenessCache(const Context *context)
{
if (mState.mId != 0)
{
@@ -1812,7 +1812,7 @@
mState.mResourceNeedsInit.set(dirtyBit, attachment->initState() == InitState::MayNeedInit);
onDirtyBinding->bind(resource ? resource->getSubject() : nullptr);
- invalidateCompletenessCache();
+ invalidateCompletenessCache(context);
}
void Framebuffer::resetAttachment(const Context *context, GLenum binding)
@@ -1844,13 +1844,7 @@
return;
}
- // Only reset the cached status if this is not the default framebuffer. The default framebuffer
- // will still use this channel to mark itself dirty.
- if (mState.mId != 0)
- {
- // TOOD(jmadill): Make this only update individual attachments to do less work.
- mCachedStatus.reset();
- }
+ invalidateCompletenessCache(context);
FramebufferAttachment *attachment = getAttachmentFromSubjectIndex(index);
@@ -1987,32 +1981,33 @@
return mState.getDefaultLayers();
}
-void Framebuffer::setDefaultWidth(GLint defaultWidth)
+void Framebuffer::setDefaultWidth(const Context *context, GLint defaultWidth)
{
mState.mDefaultWidth = defaultWidth;
mDirtyBits.set(DIRTY_BIT_DEFAULT_WIDTH);
- invalidateCompletenessCache();
+ invalidateCompletenessCache(context);
}
-void Framebuffer::setDefaultHeight(GLint defaultHeight)
+void Framebuffer::setDefaultHeight(const Context *context, GLint defaultHeight)
{
mState.mDefaultHeight = defaultHeight;
mDirtyBits.set(DIRTY_BIT_DEFAULT_HEIGHT);
- invalidateCompletenessCache();
+ invalidateCompletenessCache(context);
}
-void Framebuffer::setDefaultSamples(GLint defaultSamples)
+void Framebuffer::setDefaultSamples(const Context *context, GLint defaultSamples)
{
mState.mDefaultSamples = defaultSamples;
mDirtyBits.set(DIRTY_BIT_DEFAULT_SAMPLES);
- invalidateCompletenessCache();
+ invalidateCompletenessCache(context);
}
-void Framebuffer::setDefaultFixedSampleLocations(bool defaultFixedSampleLocations)
+void Framebuffer::setDefaultFixedSampleLocations(const Context *context,
+ bool defaultFixedSampleLocations)
{
mState.mDefaultFixedSampleLocations = defaultFixedSampleLocations;
mDirtyBits.set(DIRTY_BIT_DEFAULT_FIXED_SAMPLE_LOCATIONS);
- invalidateCompletenessCache();
+ invalidateCompletenessCache(context);
}
void Framebuffer::setDefaultLayers(GLint defaultLayers)