Return an Error from ContextImpl::syncState.
This will allow the Vulkan back-end to call Vulkan commands that return
VkResult within syncState.
Bug: angleproject:2717
Change-Id: I05e1379e71acaac56bcc9493c8561e82da000934
Reviewed-on: https://chromium-review.googlesource.com/1120150
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index be15449..881b75a 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -3438,7 +3438,7 @@
Error Context::syncDirtyBits()
{
const State::DirtyBits &dirtyBits = mGLState.getDirtyBits();
- mImplementation->syncState(this, dirtyBits);
+ ANGLE_TRY(mImplementation->syncState(this, dirtyBits));
mGLState.clearDirtyBits();
return NoError();
}
@@ -3446,7 +3446,7 @@
Error Context::syncDirtyBits(const State::DirtyBits &bitMask)
{
const State::DirtyBits &dirtyBits = (mGLState.getDirtyBits() & bitMask);
- mImplementation->syncState(this, dirtyBits);
+ ANGLE_TRY(mImplementation->syncState(this, dirtyBits));
mGLState.clearDirtyBits(dirtyBits);
return NoError();
}
diff --git a/src/libANGLE/renderer/ContextImpl.h b/src/libANGLE/renderer/ContextImpl.h
index ec135a1..c0a2f2e 100644
--- a/src/libANGLE/renderer/ContextImpl.h
+++ b/src/libANGLE/renderer/ContextImpl.h
@@ -140,7 +140,8 @@
virtual void popDebugGroup() = 0;
// State sync with dirty bits.
- virtual void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) = 0;
+ virtual gl::Error syncState(const gl::Context *context,
+ const gl::State::DirtyBits &dirtyBits) = 0;
// Disjoint timer queries
virtual GLint getGPUDisjoint() = 0;
diff --git a/src/libANGLE/renderer/d3d/d3d11/Context11.cpp b/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
index e9e877f..de7c74c 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
@@ -403,9 +403,10 @@
popGroupMarker();
}
-void Context11::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
+gl::Error Context11::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(context, dirtyBits);
+ return gl::NoError();
}
GLint Context11::getGPUDisjoint()
diff --git a/src/libANGLE/renderer/d3d/d3d11/Context11.h b/src/libANGLE/renderer/d3d/d3d11/Context11.h
index 8542b62..3a55dc0 100644
--- a/src/libANGLE/renderer/d3d/d3d11/Context11.h
+++ b/src/libANGLE/renderer/d3d/d3d11/Context11.h
@@ -120,7 +120,7 @@
void popDebugGroup() override;
// State sync with dirty bits.
- void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
+ gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
// Disjoint timer queries
GLint getGPUDisjoint() override;
diff --git a/src/libANGLE/renderer/d3d/d3d9/Context9.cpp b/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
index 68342e1..01ecd90 100644
--- a/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
+++ b/src/libANGLE/renderer/d3d/d3d9/Context9.cpp
@@ -255,9 +255,10 @@
popGroupMarker();
}
-void Context9::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
+gl::Error Context9::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(mState.getState(), dirtyBits);
+ return gl::NoError();
}
GLint Context9::getGPUDisjoint()
diff --git a/src/libANGLE/renderer/d3d/d3d9/Context9.h b/src/libANGLE/renderer/d3d/d3d9/Context9.h
index f297729..b689d39 100644
--- a/src/libANGLE/renderer/d3d/d3d9/Context9.h
+++ b/src/libANGLE/renderer/d3d/d3d9/Context9.h
@@ -120,7 +120,7 @@
void popDebugGroup() override;
// State sync with dirty bits.
- void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
+ gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
// Disjoint timer queries
GLint getGPUDisjoint() override;
diff --git a/src/libANGLE/renderer/gl/ContextGL.cpp b/src/libANGLE/renderer/gl/ContextGL.cpp
index 00c1487..ae40d39 100644
--- a/src/libANGLE/renderer/gl/ContextGL.cpp
+++ b/src/libANGLE/renderer/gl/ContextGL.cpp
@@ -365,9 +365,10 @@
mRenderer->popDebugGroup();
}
-void ContextGL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
+gl::Error ContextGL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(context, dirtyBits);
+ return gl::NoError();
}
GLint ContextGL::getGPUDisjoint()
diff --git a/src/libANGLE/renderer/gl/ContextGL.h b/src/libANGLE/renderer/gl/ContextGL.h
index e5dfe92..85a0512 100644
--- a/src/libANGLE/renderer/gl/ContextGL.h
+++ b/src/libANGLE/renderer/gl/ContextGL.h
@@ -174,7 +174,7 @@
void popDebugGroup() override;
// State sync with dirty bits.
- void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
+ gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
// Disjoint timer queries
GLint getGPUDisjoint() override;
diff --git a/src/libANGLE/renderer/null/ContextNULL.cpp b/src/libANGLE/renderer/null/ContextNULL.cpp
index d7e5e6c..b288c23 100644
--- a/src/libANGLE/renderer/null/ContextNULL.cpp
+++ b/src/libANGLE/renderer/null/ContextNULL.cpp
@@ -295,8 +295,9 @@
{
}
-void ContextNULL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
+gl::Error ContextNULL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
+ return gl::NoError();
}
GLint ContextNULL::getGPUDisjoint()
diff --git a/src/libANGLE/renderer/null/ContextNULL.h b/src/libANGLE/renderer/null/ContextNULL.h
index 636e41f..760263c 100644
--- a/src/libANGLE/renderer/null/ContextNULL.h
+++ b/src/libANGLE/renderer/null/ContextNULL.h
@@ -142,7 +142,7 @@
void popDebugGroup() override;
// State sync with dirty bits.
- void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
+ gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
// Disjoint timer queries
GLint getGPUDisjoint() override;
diff --git a/src/libANGLE/renderer/vulkan/ContextVk.cpp b/src/libANGLE/renderer/vulkan/ContextVk.cpp
index 7f6fe31..3195b92 100644
--- a/src/libANGLE/renderer/vulkan/ContextVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ContextVk.cpp
@@ -414,7 +414,7 @@
}
}
-void ContextVk::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
+gl::Error ContextVk::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
if (dirtyBits.any())
{
@@ -655,6 +655,8 @@
programVk->invalidateTextures();
mTexturesDirty = true;
}
+
+ return gl::NoError();
}
GLint ContextVk::getGPUDisjoint()
diff --git a/src/libANGLE/renderer/vulkan/ContextVk.h b/src/libANGLE/renderer/vulkan/ContextVk.h
index c6b4097..936dc55 100644
--- a/src/libANGLE/renderer/vulkan/ContextVk.h
+++ b/src/libANGLE/renderer/vulkan/ContextVk.h
@@ -90,7 +90,7 @@
bool isViewportFlipEnabled();
// State sync with dirty bits.
- void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
+ gl::Error syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
// Disjoint timer queries
GLint getGPUDisjoint() override;