Commit a0691b77 by Jamie Madill Committed by Commit Bot

Pass Context to Fence Impl methods.

This is needed for the error refactoring and also for the Vulkan implementation. Bug: angleproject:2738 Change-Id: I4e1bed7f67ef17feb5554b5838a2ed5feb22bba0 Reviewed-on: https://chromium-review.googlesource.com/1150091Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 76301e09
...@@ -4987,7 +4987,7 @@ void Context::renderbufferStorageMultisample(GLenum target, ...@@ -4987,7 +4987,7 @@ void Context::renderbufferStorageMultisample(GLenum target,
void Context::getSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) void Context::getSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{ {
const Sync *syncObject = getSync(sync); const Sync *syncObject = getSync(sync);
handleError(QuerySynciv(syncObject, pname, bufSize, length, values)); handleError(QuerySynciv(this, syncObject, pname, bufSize, length, values));
} }
void Context::getFramebufferParameteriv(GLenum target, GLenum pname, GLint *params) void Context::getFramebufferParameteriv(GLenum target, GLenum pname, GLint *params)
...@@ -6119,7 +6119,7 @@ GLsync Context::fenceSync(GLenum condition, GLbitfield flags) ...@@ -6119,7 +6119,7 @@ GLsync Context::fenceSync(GLenum condition, GLbitfield flags)
GLsync syncHandle = reinterpret_cast<GLsync>(static_cast<uintptr_t>(handle)); GLsync syncHandle = reinterpret_cast<GLsync>(static_cast<uintptr_t>(handle));
Sync *syncObject = getSync(syncHandle); Sync *syncObject = getSync(syncHandle);
Error error = syncObject->set(condition, flags); Error error = syncObject->set(this, condition, flags);
if (error.isError()) if (error.isError())
{ {
deleteSync(syncHandle); deleteSync(syncHandle);
...@@ -6140,14 +6140,14 @@ GLenum Context::clientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) ...@@ -6140,14 +6140,14 @@ GLenum Context::clientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
Sync *syncObject = getSync(sync); Sync *syncObject = getSync(sync);
GLenum result = GL_WAIT_FAILED; GLenum result = GL_WAIT_FAILED;
handleError(syncObject->clientWait(flags, timeout, &result)); handleError(syncObject->clientWait(this, flags, timeout, &result));
return result; return result;
} }
void Context::waitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) void Context::waitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
{ {
Sync *syncObject = getSync(sync); Sync *syncObject = getSync(sync);
handleError(syncObject->serverWait(flags, timeout)); handleError(syncObject->serverWait(this, flags, timeout));
} }
void Context::getInteger64v(GLenum pname, GLint64 *params) void Context::getInteger64v(GLenum pname, GLint64 *params)
...@@ -6550,7 +6550,7 @@ void Context::finishFenceNV(GLuint fence) ...@@ -6550,7 +6550,7 @@ void Context::finishFenceNV(GLuint fence)
FenceNV *fenceObject = getFenceNV(fence); FenceNV *fenceObject = getFenceNV(fence);
ASSERT(fenceObject && fenceObject->isSet()); ASSERT(fenceObject && fenceObject->isSet());
handleError(fenceObject->finish()); handleError(fenceObject->finish(this));
} }
void Context::getFenceivNV(GLuint fence, GLenum pname, GLint *params) void Context::getFenceivNV(GLuint fence, GLenum pname, GLint *params)
...@@ -6570,7 +6570,7 @@ void Context::getFenceivNV(GLuint fence, GLenum pname, GLint *params) ...@@ -6570,7 +6570,7 @@ void Context::getFenceivNV(GLuint fence, GLenum pname, GLint *params)
GLboolean status = GL_TRUE; GLboolean status = GL_TRUE;
if (fenceObject->getStatus() != GL_TRUE) if (fenceObject->getStatus() != GL_TRUE)
{ {
ANGLE_CONTEXT_TRY(fenceObject->test(&status)); ANGLE_CONTEXT_TRY(fenceObject->test(this, &status));
} }
*params = status; *params = status;
break; break;
...@@ -6673,7 +6673,7 @@ void Context::setFenceNV(GLuint fence, GLenum condition) ...@@ -6673,7 +6673,7 @@ void Context::setFenceNV(GLuint fence, GLenum condition)
FenceNV *fenceObject = getFenceNV(fence); FenceNV *fenceObject = getFenceNV(fence);
ASSERT(fenceObject != nullptr); ASSERT(fenceObject != nullptr);
handleError(fenceObject->set(condition)); handleError(fenceObject->set(this, condition));
} }
GLboolean Context::testFenceNV(GLuint fence) GLboolean Context::testFenceNV(GLuint fence)
...@@ -6684,7 +6684,7 @@ GLboolean Context::testFenceNV(GLuint fence) ...@@ -6684,7 +6684,7 @@ GLboolean Context::testFenceNV(GLuint fence)
ASSERT(fenceObject->isSet() == GL_TRUE); ASSERT(fenceObject->isSet() == GL_TRUE);
GLboolean result = GL_TRUE; GLboolean result = GL_TRUE;
Error error = fenceObject->test(&result); Error error = fenceObject->test(this, &result);
if (error.isError()) if (error.isError())
{ {
handleError(error); handleError(error);
......
...@@ -31,13 +31,9 @@ FenceNV::~FenceNV() ...@@ -31,13 +31,9 @@ FenceNV::~FenceNV()
SafeDelete(mFence); SafeDelete(mFence);
} }
Error FenceNV::set(GLenum condition) Error FenceNV::set(const Context *context, GLenum condition)
{ {
Error error = mFence->set(condition); ANGLE_TRY(mFence->set(context, condition));
if (error.isError())
{
return error;
}
mCondition = condition; mCondition = condition;
mStatus = GL_FALSE; mStatus = GL_FALSE;
...@@ -46,28 +42,20 @@ Error FenceNV::set(GLenum condition) ...@@ -46,28 +42,20 @@ Error FenceNV::set(GLenum condition)
return NoError(); return NoError();
} }
Error FenceNV::test(GLboolean *outResult) Error FenceNV::test(const Context *context, GLboolean *outResult)
{ {
// Flush the command buffer by default // Flush the command buffer by default
Error error = mFence->test(&mStatus); ANGLE_TRY(mFence->test(context, &mStatus));
if (error.isError())
{
return error;
}
*outResult = mStatus; *outResult = mStatus;
return NoError(); return NoError();
} }
Error FenceNV::finish() Error FenceNV::finish(const Context *context)
{ {
ASSERT(mIsSet); ASSERT(mIsSet);
gl::Error error = mFence->finish(); ANGLE_TRY(mFence->finish(context));
if (error.isError())
{
return error;
}
mStatus = GL_TRUE; mStatus = GL_TRUE;
...@@ -103,33 +91,32 @@ const std::string &Sync::getLabel() const ...@@ -103,33 +91,32 @@ const std::string &Sync::getLabel() const
return mLabel; return mLabel;
} }
Error Sync::set(GLenum condition, GLbitfield flags) Error Sync::set(const Context *context, GLenum condition, GLbitfield flags)
{ {
Error error = mFence->set(condition, flags); ANGLE_TRY(mFence->set(context, condition, flags));
if (error.isError())
{
return error;
}
mCondition = condition; mCondition = condition;
mFlags = flags; mFlags = flags;
return NoError(); return NoError();
} }
Error Sync::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) Error Sync::clientWait(const Context *context,
GLbitfield flags,
GLuint64 timeout,
GLenum *outResult)
{ {
ASSERT(mCondition != GL_NONE); ASSERT(mCondition != GL_NONE);
return mFence->clientWait(flags, timeout, outResult); return mFence->clientWait(context, flags, timeout, outResult);
} }
Error Sync::serverWait(GLbitfield flags, GLuint64 timeout) Error Sync::serverWait(const Context *context, GLbitfield flags, GLuint64 timeout)
{ {
return mFence->serverWait(flags, timeout); return mFence->serverWait(context, flags, timeout);
} }
Error Sync::getStatus(GLint *outResult) const Error Sync::getStatus(const Context *context, GLint *outResult) const
{ {
return mFence->getStatus(outResult); return mFence->getStatus(context, outResult);
} }
} // namespace gl } // namespace gl
...@@ -31,9 +31,9 @@ class FenceNV final : angle::NonCopyable ...@@ -31,9 +31,9 @@ class FenceNV final : angle::NonCopyable
explicit FenceNV(rx::FenceNVImpl *impl); explicit FenceNV(rx::FenceNVImpl *impl);
virtual ~FenceNV(); virtual ~FenceNV();
Error set(GLenum condition); Error set(const Context *context, GLenum condition);
Error test(GLboolean *outResult); Error test(const Context *context, GLboolean *outResult);
Error finish(); Error finish(const Context *context);
bool isSet() const { return mIsSet; } bool isSet() const { return mIsSet; }
GLboolean getStatus() const { return mStatus; } GLboolean getStatus() const { return mStatus; }
...@@ -59,10 +59,10 @@ class Sync final : public RefCountObject, public LabeledObject ...@@ -59,10 +59,10 @@ class Sync final : public RefCountObject, public LabeledObject
void setLabel(const std::string &label) override; void setLabel(const std::string &label) override;
const std::string &getLabel() const override; const std::string &getLabel() const override;
Error set(GLenum condition, GLbitfield flags); Error set(const Context *context, GLenum condition, GLbitfield flags);
Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult); Error clientWait(const Context *context, GLbitfield flags, GLuint64 timeout, GLenum *outResult);
Error serverWait(GLbitfield flags, GLuint64 timeout); Error serverWait(const Context *context, GLbitfield flags, GLuint64 timeout);
Error getStatus(GLint *outResult) const; Error getStatus(const Context *context, GLint *outResult) const;
GLenum getCondition() const { return mCondition; } GLenum getCondition() const { return mCondition; }
GLbitfield getFlags() const { return mFlags; } GLbitfield getFlags() const { return mFlags; }
......
...@@ -25,9 +25,9 @@ class MockFenceNVImpl : public rx::FenceNVImpl ...@@ -25,9 +25,9 @@ class MockFenceNVImpl : public rx::FenceNVImpl
public: public:
virtual ~MockFenceNVImpl() { destroy(); } virtual ~MockFenceNVImpl() { destroy(); }
MOCK_METHOD1(set, gl::Error(GLenum)); MOCK_METHOD2(set, gl::Error(const gl::Context *, GLenum));
MOCK_METHOD1(test, gl::Error(GLboolean *)); MOCK_METHOD2(test, gl::Error(const gl::Context *, GLboolean *));
MOCK_METHOD0(finish, gl::Error()); MOCK_METHOD1(finish, gl::Error(const gl::Context *));
MOCK_METHOD0(destroy, void()); MOCK_METHOD0(destroy, void());
}; };
...@@ -67,19 +67,19 @@ TEST_F(FenceNVTest, DestructionDeletesImpl) ...@@ -67,19 +67,19 @@ TEST_F(FenceNVTest, DestructionDeletesImpl)
TEST_F(FenceNVTest, SetAndTestBehavior) TEST_F(FenceNVTest, SetAndTestBehavior)
{ {
EXPECT_CALL(*mImpl, set(_)).WillOnce(Return(gl::NoError())).RetiresOnSaturation(); EXPECT_CALL(*mImpl, set(_, _)).WillOnce(Return(gl::NoError())).RetiresOnSaturation();
EXPECT_FALSE(mFence->isSet()); EXPECT_FALSE(mFence->isSet());
EXPECT_FALSE(mFence->set(GL_ALL_COMPLETED_NV).isError()); EXPECT_FALSE(mFence->set(nullptr, GL_ALL_COMPLETED_NV).isError());
EXPECT_TRUE(mFence->isSet()); EXPECT_TRUE(mFence->isSet());
// Fake the behavior of testing the fence before and after it's passed. // Fake the behavior of testing the fence before and after it's passed.
EXPECT_CALL(*mImpl, test(_)) EXPECT_CALL(*mImpl, test(_, _))
.WillOnce(DoAll(SetArgumentPointee<0>(GL_FALSE), Return(gl::NoError()))) .WillOnce(DoAll(SetArgumentPointee<1>(GL_FALSE), Return(gl::NoError())))
.WillOnce(DoAll(SetArgumentPointee<0>(GL_TRUE), Return(gl::NoError()))) .WillOnce(DoAll(SetArgumentPointee<1>(GL_TRUE), Return(gl::NoError())))
.RetiresOnSaturation(); .RetiresOnSaturation();
GLboolean out; GLboolean out;
EXPECT_FALSE(mFence->test(&out).isError()); EXPECT_FALSE(mFence->test(nullptr, &out).isError());
EXPECT_EQ(GL_FALSE, out); EXPECT_EQ(GL_FALSE, out);
EXPECT_FALSE(mFence->test(&out).isError()); EXPECT_FALSE(mFence->test(nullptr, &out).isError());
EXPECT_EQ(GL_TRUE, out); EXPECT_EQ(GL_TRUE, out);
} }
...@@ -92,10 +92,10 @@ class MockSyncImpl : public rx::SyncImpl ...@@ -92,10 +92,10 @@ class MockSyncImpl : public rx::SyncImpl
public: public:
virtual ~MockSyncImpl() { destroy(); } virtual ~MockSyncImpl() { destroy(); }
MOCK_METHOD2(set, gl::Error(GLenum, GLbitfield)); MOCK_METHOD3(set, gl::Error(const gl::Context *, GLenum, GLbitfield));
MOCK_METHOD3(clientWait, gl::Error(GLbitfield, GLuint64, GLenum *)); MOCK_METHOD4(clientWait, gl::Error(const gl::Context *, GLbitfield, GLuint64, GLenum *));
MOCK_METHOD2(serverWait, gl::Error(GLbitfield, GLuint64)); MOCK_METHOD3(serverWait, gl::Error(const gl::Context *, GLbitfield, GLuint64));
MOCK_METHOD1(getStatus, gl::Error(GLint *)); MOCK_METHOD2(getStatus, gl::Error(const gl::Context *, GLint *));
MOCK_METHOD0(destroy, void()); MOCK_METHOD0(destroy, void());
}; };
...@@ -134,18 +134,18 @@ TEST_F(FenceSyncTest, DestructionDeletesImpl) ...@@ -134,18 +134,18 @@ TEST_F(FenceSyncTest, DestructionDeletesImpl)
TEST_F(FenceSyncTest, SetAndGetStatusBehavior) TEST_F(FenceSyncTest, SetAndGetStatusBehavior)
{ {
EXPECT_CALL(*mImpl, set(_, _)).WillOnce(Return(gl::NoError())).RetiresOnSaturation(); EXPECT_CALL(*mImpl, set(_, _, _)).WillOnce(Return(gl::NoError())).RetiresOnSaturation();
EXPECT_FALSE(mFence->set(GL_SYNC_GPU_COMMANDS_COMPLETE, 0).isError()); EXPECT_FALSE(mFence->set(nullptr, GL_SYNC_GPU_COMMANDS_COMPLETE, 0).isError());
EXPECT_EQ(static_cast<GLenum>(GL_SYNC_GPU_COMMANDS_COMPLETE), mFence->getCondition()); EXPECT_EQ(static_cast<GLenum>(GL_SYNC_GPU_COMMANDS_COMPLETE), mFence->getCondition());
// Fake the behavior of testing the fence before and after it's passed. // Fake the behavior of testing the fence before and after it's passed.
EXPECT_CALL(*mImpl, getStatus(_)) EXPECT_CALL(*mImpl, getStatus(_, _))
.WillOnce(DoAll(SetArgumentPointee<0>(GL_UNSIGNALED), Return(gl::NoError()))) .WillOnce(DoAll(SetArgumentPointee<1>(GL_UNSIGNALED), Return(gl::NoError())))
.WillOnce(DoAll(SetArgumentPointee<0>(GL_SIGNALED), Return(gl::NoError()))) .WillOnce(DoAll(SetArgumentPointee<1>(GL_SIGNALED), Return(gl::NoError())))
.RetiresOnSaturation(); .RetiresOnSaturation();
GLint out; GLint out;
EXPECT_FALSE(mFence->getStatus(&out).isError()); EXPECT_FALSE(mFence->getStatus(nullptr, &out).isError());
EXPECT_EQ(GL_UNSIGNALED, out); EXPECT_EQ(GL_UNSIGNALED, out);
EXPECT_FALSE(mFence->getStatus(&out).isError()); EXPECT_FALSE(mFence->getStatus(nullptr, &out).isError());
EXPECT_EQ(GL_SIGNALED, out); EXPECT_EQ(GL_SIGNALED, out);
} }
......
...@@ -1330,7 +1330,12 @@ void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, G ...@@ -1330,7 +1330,12 @@ void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, G
} }
} }
Error QuerySynciv(const Sync *sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) Error QuerySynciv(const Context *context,
const Sync *sync,
GLenum pname,
GLsizei bufSize,
GLsizei *length,
GLint *values)
{ {
ASSERT(sync); ASSERT(sync);
...@@ -1356,7 +1361,7 @@ Error QuerySynciv(const Sync *sync, GLenum pname, GLsizei bufSize, GLsizei *leng ...@@ -1356,7 +1361,7 @@ Error QuerySynciv(const Sync *sync, GLenum pname, GLsizei bufSize, GLsizei *leng
*values = clampCast<GLint>(sync->getFlags()); *values = clampCast<GLint>(sync->getFlags());
break; break;
case GL_SYNC_STATUS: case GL_SYNC_STATUS:
ANGLE_TRY(sync->getStatus(values)); ANGLE_TRY(sync->getStatus(context, values));
break; break;
default: default:
......
...@@ -100,7 +100,12 @@ void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufS ...@@ -100,7 +100,12 @@ void QueryInternalFormativ(const TextureCaps &format, GLenum pname, GLsizei bufS
void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params); void QueryFramebufferParameteriv(const Framebuffer *framebuffer, GLenum pname, GLint *params);
Error QuerySynciv(const Sync *sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); Error QuerySynciv(const Context *context,
const Sync *sync,
GLenum pname,
GLsizei bufSize,
GLsizei *length,
GLint *values);
void SetTexParameterf(Context *context, Texture *texture, GLenum pname, GLfloat param); void SetTexParameterf(Context *context, Texture *texture, GLenum pname, GLfloat param);
void SetTexParameterfv(Context *context, Texture *texture, GLenum pname, const GLfloat *params); void SetTexParameterfv(Context *context, Texture *texture, GLenum pname, const GLfloat *params);
......
...@@ -15,20 +15,23 @@ ...@@ -15,20 +15,23 @@
#include "angle_gl.h" #include "angle_gl.h"
namespace rx namespace gl
{ {
class Context;
} // namespace gl
namespace rx
{
class FenceNVImpl : angle::NonCopyable class FenceNVImpl : angle::NonCopyable
{ {
public: public:
FenceNVImpl() { }; FenceNVImpl() { };
virtual ~FenceNVImpl() { }; virtual ~FenceNVImpl() { };
virtual gl::Error set(GLenum condition) = 0; virtual gl::Error set(const gl::Context *context, GLenum condition) = 0;
virtual gl::Error test(GLboolean *outFinished) = 0; virtual gl::Error test(const gl::Context *context, GLboolean *outFinished) = 0;
virtual gl::Error finish() = 0; virtual gl::Error finish(const gl::Context *context) = 0;
}; };
} // namespace rx
}
#endif // LIBANGLE_RENDERER_FENCENVIMPL_H_ #endif // LIBANGLE_RENDERER_FENCENVIMPL_H_
...@@ -15,20 +15,29 @@ ...@@ -15,20 +15,29 @@
#include "angle_gl.h" #include "angle_gl.h"
namespace rx namespace gl
{ {
class Context;
} // namespace gl
namespace rx
{
class SyncImpl : angle::NonCopyable class SyncImpl : angle::NonCopyable
{ {
public: public:
SyncImpl(){}; SyncImpl(){};
virtual ~SyncImpl(){}; virtual ~SyncImpl(){};
virtual gl::Error set(GLenum condition, GLbitfield flags) = 0; virtual gl::Error set(const gl::Context *context, GLenum condition, GLbitfield flags) = 0;
virtual gl::Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) = 0; virtual gl::Error clientWait(const gl::Context *context,
virtual gl::Error serverWait(GLbitfield flags, GLuint64 timeout) = 0; GLbitfield flags,
virtual gl::Error getStatus(GLint *outResult) = 0; GLuint64 timeout,
GLenum *outResult) = 0;
virtual gl::Error serverWait(const gl::Context *context,
GLbitfield flags,
GLuint64 timeout) = 0;
virtual gl::Error getStatus(const gl::Context *context, GLint *outResult) = 0;
}; };
} } // namespace rx
#endif // LIBANGLE_RENDERER_FENCESYNCIMPL_H_ #endif // LIBANGLE_RENDERER_FENCESYNCIMPL_H_
...@@ -71,17 +71,17 @@ FenceNV11::~FenceNV11() ...@@ -71,17 +71,17 @@ FenceNV11::~FenceNV11()
SafeRelease(mQuery); SafeRelease(mQuery);
} }
gl::Error FenceNV11::set(GLenum condition) gl::Error FenceNV11::set(const gl::Context *context, GLenum condition)
{ {
return FenceSetHelper(this); return FenceSetHelper(this);
} }
gl::Error FenceNV11::test(GLboolean *outFinished) gl::Error FenceNV11::test(const gl::Context *context, GLboolean *outFinished)
{ {
return FenceTestHelper(this, true, outFinished); return FenceTestHelper(this, true, outFinished);
} }
gl::Error FenceNV11::finish() gl::Error FenceNV11::finish(const gl::Context *context)
{ {
GLboolean finished = GL_FALSE; GLboolean finished = GL_FALSE;
...@@ -132,13 +132,16 @@ Sync11::~Sync11() ...@@ -132,13 +132,16 @@ Sync11::~Sync11()
SafeRelease(mQuery); SafeRelease(mQuery);
} }
gl::Error Sync11::set(GLenum condition, GLbitfield flags) gl::Error Sync11::set(const gl::Context *context, GLenum condition, GLbitfield flags)
{ {
ASSERT(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0); ASSERT(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0);
return FenceSetHelper(this); return FenceSetHelper(this);
} }
gl::Error Sync11::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) gl::Error Sync11::clientWait(const gl::Context *context,
GLbitfield flags,
GLuint64 timeout,
GLenum *outResult)
{ {
ASSERT(outResult); ASSERT(outResult);
...@@ -212,7 +215,7 @@ gl::Error Sync11::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResu ...@@ -212,7 +215,7 @@ gl::Error Sync11::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResu
return gl::NoError(); return gl::NoError();
} }
gl::Error Sync11::serverWait(GLbitfield flags, GLuint64 timeout) gl::Error Sync11::serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout)
{ {
// Because our API is currently designed to be called from a single thread, we don't need to do // Because our API is currently designed to be called from a single thread, we don't need to do
// extra work for a server-side fence. GPU commands issued after the fence is created will // extra work for a server-side fence. GPU commands issued after the fence is created will
...@@ -220,7 +223,7 @@ gl::Error Sync11::serverWait(GLbitfield flags, GLuint64 timeout) ...@@ -220,7 +223,7 @@ gl::Error Sync11::serverWait(GLbitfield flags, GLuint64 timeout)
return gl::NoError(); return gl::NoError();
} }
gl::Error Sync11::getStatus(GLint *outResult) gl::Error Sync11::getStatus(const gl::Context *context, GLint *outResult)
{ {
GLboolean result = GL_FALSE; GLboolean result = GL_FALSE;
gl::Error error = FenceTestHelper(this, false, &result); gl::Error error = FenceTestHelper(this, false, &result);
......
...@@ -23,9 +23,9 @@ class FenceNV11 : public FenceNVImpl ...@@ -23,9 +23,9 @@ class FenceNV11 : public FenceNVImpl
explicit FenceNV11(Renderer11 *renderer); explicit FenceNV11(Renderer11 *renderer);
~FenceNV11() override; ~FenceNV11() override;
gl::Error set(GLenum condition) override; gl::Error set(const gl::Context *context, GLenum condition) override;
gl::Error test(GLboolean *outFinished) override; gl::Error test(const gl::Context *context, GLboolean *outFinished) override;
gl::Error finish() override; gl::Error finish(const gl::Context *context) override;
private: private:
template<class T> friend gl::Error FenceSetHelper(T *fence); template<class T> friend gl::Error FenceSetHelper(T *fence);
...@@ -41,10 +41,13 @@ class Sync11 : public SyncImpl ...@@ -41,10 +41,13 @@ class Sync11 : public SyncImpl
explicit Sync11(Renderer11 *renderer); explicit Sync11(Renderer11 *renderer);
~Sync11() override; ~Sync11() override;
gl::Error set(GLenum condition, GLbitfield flags) override; gl::Error set(const gl::Context *context, GLenum condition, GLbitfield flags) override;
gl::Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) override; gl::Error clientWait(const gl::Context *context,
gl::Error serverWait(GLbitfield flags, GLuint64 timeout) override; GLbitfield flags,
gl::Error getStatus(GLint *outResult) override; GLuint64 timeout,
GLenum *outResult) override;
gl::Error serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout) override;
gl::Error getStatus(const gl::Context *context, GLint *outResult) override;
private: private:
template<class T> friend gl::Error FenceSetHelper(T *fence); template<class T> friend gl::Error FenceSetHelper(T *fence);
......
...@@ -22,7 +22,7 @@ FenceNV9::~FenceNV9() ...@@ -22,7 +22,7 @@ FenceNV9::~FenceNV9()
SafeRelease(mQuery); SafeRelease(mQuery);
} }
gl::Error FenceNV9::set(GLenum condition) gl::Error FenceNV9::set(const gl::Context *context, GLenum condition)
{ {
if (!mQuery) if (!mQuery)
{ {
...@@ -44,12 +44,12 @@ gl::Error FenceNV9::set(GLenum condition) ...@@ -44,12 +44,12 @@ gl::Error FenceNV9::set(GLenum condition)
return gl::NoError(); return gl::NoError();
} }
gl::Error FenceNV9::test(GLboolean *outFinished) gl::Error FenceNV9::test(const gl::Context *context, GLboolean *outFinished)
{ {
return testHelper(true, outFinished); return testHelper(true, outFinished);
} }
gl::Error FenceNV9::finish() gl::Error FenceNV9::finish(const gl::Context *context)
{ {
GLboolean finished = GL_FALSE; GLboolean finished = GL_FALSE;
while (finished != GL_TRUE) while (finished != GL_TRUE)
...@@ -88,4 +88,4 @@ gl::Error FenceNV9::testHelper(bool flushCommandBuffer, GLboolean *outFinished) ...@@ -88,4 +88,4 @@ gl::Error FenceNV9::testHelper(bool flushCommandBuffer, GLboolean *outFinished)
return gl::NoError(); return gl::NoError();
} }
} } // namespace rx
...@@ -22,9 +22,9 @@ class FenceNV9 : public FenceNVImpl ...@@ -22,9 +22,9 @@ class FenceNV9 : public FenceNVImpl
explicit FenceNV9(Renderer9 *renderer); explicit FenceNV9(Renderer9 *renderer);
~FenceNV9() override; ~FenceNV9() override;
gl::Error set(GLenum condition) override; gl::Error set(const gl::Context *context, GLenum condition) override;
gl::Error test(GLboolean *outFinished) override; gl::Error test(const gl::Context *context, GLboolean *outFinished) override;
gl::Error finish() override; gl::Error finish(const gl::Context *context) override;
private: private:
gl::Error testHelper(bool flushCommandBuffer, GLboolean *outFinished); gl::Error testHelper(bool flushCommandBuffer, GLboolean *outFinished);
...@@ -32,7 +32,6 @@ class FenceNV9 : public FenceNVImpl ...@@ -32,7 +32,6 @@ class FenceNV9 : public FenceNVImpl
Renderer9 *mRenderer; Renderer9 *mRenderer;
IDirect3DQuery9 *mQuery; IDirect3DQuery9 *mQuery;
}; };
} // namespace rx
}
#endif // LIBANGLE_RENDERER_D3D_D3D9_FENCE9_H_ #endif // LIBANGLE_RENDERER_D3D_D3D9_FENCE9_H_
...@@ -28,21 +28,21 @@ FenceNVGL::~FenceNVGL() ...@@ -28,21 +28,21 @@ FenceNVGL::~FenceNVGL()
mFence = 0; mFence = 0;
} }
gl::Error FenceNVGL::set(GLenum condition) gl::Error FenceNVGL::set(const gl::Context *context, GLenum condition)
{ {
ASSERT(condition == GL_ALL_COMPLETED_NV); ASSERT(condition == GL_ALL_COMPLETED_NV);
mFunctions->setFenceNV(mFence, condition); mFunctions->setFenceNV(mFence, condition);
return gl::NoError(); return gl::NoError();
} }
gl::Error FenceNVGL::test(GLboolean *outFinished) gl::Error FenceNVGL::test(const gl::Context *context, GLboolean *outFinished)
{ {
ASSERT(outFinished); ASSERT(outFinished);
*outFinished = mFunctions->testFenceNV(mFence); *outFinished = mFunctions->testFenceNV(mFence);
return gl::NoError(); return gl::NoError();
} }
gl::Error FenceNVGL::finish() gl::Error FenceNVGL::finish(const gl::Context *context)
{ {
mFunctions->finishFenceNV(mFence); mFunctions->finishFenceNV(mFence);
return gl::NoError(); return gl::NoError();
......
...@@ -21,9 +21,9 @@ class FenceNVGL : public FenceNVImpl ...@@ -21,9 +21,9 @@ class FenceNVGL : public FenceNVImpl
explicit FenceNVGL(const FunctionsGL *functions); explicit FenceNVGL(const FunctionsGL *functions);
~FenceNVGL() override; ~FenceNVGL() override;
gl::Error set(GLenum condition) override; gl::Error set(const gl::Context *context, GLenum condition) override;
gl::Error test(GLboolean *outFinished) override; gl::Error test(const gl::Context *context, GLboolean *outFinished) override;
gl::Error finish() override; gl::Error finish(const gl::Context *context) override;
private: private:
GLuint mFence; GLuint mFence;
......
...@@ -27,7 +27,7 @@ SyncGL::~SyncGL() ...@@ -27,7 +27,7 @@ SyncGL::~SyncGL()
} }
} }
gl::Error SyncGL::set(GLenum condition, GLbitfield flags) gl::Error SyncGL::set(const gl::Context *context, GLenum condition, GLbitfield flags)
{ {
ASSERT(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0); ASSERT(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0);
mSyncObject = mFunctions->fenceSync(condition, flags); mSyncObject = mFunctions->fenceSync(condition, flags);
...@@ -40,21 +40,24 @@ gl::Error SyncGL::set(GLenum condition, GLbitfield flags) ...@@ -40,21 +40,24 @@ gl::Error SyncGL::set(GLenum condition, GLbitfield flags)
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncGL::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) gl::Error SyncGL::clientWait(const gl::Context *context,
GLbitfield flags,
GLuint64 timeout,
GLenum *outResult)
{ {
ASSERT(mSyncObject != 0); ASSERT(mSyncObject != 0);
*outResult = mFunctions->clientWaitSync(mSyncObject, flags, timeout); *outResult = mFunctions->clientWaitSync(mSyncObject, flags, timeout);
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncGL::serverWait(GLbitfield flags, GLuint64 timeout) gl::Error SyncGL::serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout)
{ {
ASSERT(mSyncObject != 0); ASSERT(mSyncObject != 0);
mFunctions->waitSync(mSyncObject, flags, timeout); mFunctions->waitSync(mSyncObject, flags, timeout);
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncGL::getStatus(GLint *outResult) gl::Error SyncGL::getStatus(const gl::Context *context, GLint *outResult)
{ {
ASSERT(mSyncObject != 0); ASSERT(mSyncObject != 0);
mFunctions->getSynciv(mSyncObject, GL_SYNC_STATUS, 1, nullptr, outResult); mFunctions->getSynciv(mSyncObject, GL_SYNC_STATUS, 1, nullptr, outResult);
......
...@@ -21,10 +21,13 @@ class SyncGL : public SyncImpl ...@@ -21,10 +21,13 @@ class SyncGL : public SyncImpl
explicit SyncGL(const FunctionsGL *functions); explicit SyncGL(const FunctionsGL *functions);
~SyncGL() override; ~SyncGL() override;
gl::Error set(GLenum condition, GLbitfield flags) override; gl::Error set(const gl::Context *context, GLenum condition, GLbitfield flags) override;
gl::Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) override; gl::Error clientWait(const gl::Context *context,
gl::Error serverWait(GLbitfield flags, GLuint64 timeout) override; GLbitfield flags,
gl::Error getStatus(GLint *outResult) override; GLuint64 timeout,
GLenum *outResult) override;
gl::Error serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout) override;
gl::Error getStatus(const gl::Context *context, GLint *outResult) override;
private: private:
const FunctionsGL *mFunctions; const FunctionsGL *mFunctions;
......
...@@ -22,18 +22,18 @@ FenceNVNULL::~FenceNVNULL() ...@@ -22,18 +22,18 @@ FenceNVNULL::~FenceNVNULL()
{ {
} }
gl::Error FenceNVNULL::set(GLenum condition) gl::Error FenceNVNULL::set(const gl::Context *context, GLenum condition)
{ {
return gl::NoError(); return gl::NoError();
} }
gl::Error FenceNVNULL::test(GLboolean *outFinished) gl::Error FenceNVNULL::test(const gl::Context *context, GLboolean *outFinished)
{ {
*outFinished = GL_TRUE; *outFinished = GL_TRUE;
return gl::NoError(); return gl::NoError();
} }
gl::Error FenceNVNULL::finish() gl::Error FenceNVNULL::finish(const gl::Context *context)
{ {
return gl::NoError(); return gl::NoError();
} }
......
...@@ -14,18 +14,16 @@ ...@@ -14,18 +14,16 @@
namespace rx namespace rx
{ {
class FenceNVNULL : public FenceNVImpl class FenceNVNULL : public FenceNVImpl
{ {
public: public:
FenceNVNULL(); FenceNVNULL();
~FenceNVNULL() override; ~FenceNVNULL() override;
gl::Error set(GLenum condition) override; gl::Error set(const gl::Context *context, GLenum condition) override;
gl::Error test(GLboolean *outFinished) override; gl::Error test(const gl::Context *context, GLboolean *outFinished) override;
gl::Error finish() override; gl::Error finish(const gl::Context *context) override;
}; };
} // namespace rx } // namespace rx
#endif // LIBANGLE_RENDERER_NULL_FENCENVNULL_H_ #endif // LIBANGLE_RENDERER_NULL_FENCENVNULL_H_
...@@ -22,23 +22,26 @@ SyncNULL::~SyncNULL() ...@@ -22,23 +22,26 @@ SyncNULL::~SyncNULL()
{ {
} }
gl::Error SyncNULL::set(GLenum condition, GLbitfield flags) gl::Error SyncNULL::set(const gl::Context *context, GLenum condition, GLbitfield flags)
{ {
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncNULL::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) gl::Error SyncNULL::clientWait(const gl::Context *context,
GLbitfield flags,
GLuint64 timeout,
GLenum *outResult)
{ {
*outResult = GL_ALREADY_SIGNALED; *outResult = GL_ALREADY_SIGNALED;
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncNULL::serverWait(GLbitfield flags, GLuint64 timeout) gl::Error SyncNULL::serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout)
{ {
return gl::NoError(); return gl::NoError();
} }
gl::Error SyncNULL::getStatus(GLint *outResult) gl::Error SyncNULL::getStatus(const gl::Context *context, GLint *outResult)
{ {
*outResult = GL_SIGNALED; *outResult = GL_SIGNALED;
return gl::NoError(); return gl::NoError();
......
...@@ -14,19 +14,20 @@ ...@@ -14,19 +14,20 @@
namespace rx namespace rx
{ {
class SyncNULL : public SyncImpl class SyncNULL : public SyncImpl
{ {
public: public:
SyncNULL(); SyncNULL();
~SyncNULL() override; ~SyncNULL() override;
gl::Error set(GLenum condition, GLbitfield flags) override; gl::Error set(const gl::Context *context, GLenum condition, GLbitfield flags) override;
gl::Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) override; gl::Error clientWait(const gl::Context *context,
gl::Error serverWait(GLbitfield flags, GLuint64 timeout) override; GLbitfield flags,
gl::Error getStatus(GLint *outResult) override; GLuint64 timeout,
GLenum *outResult) override;
gl::Error serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout) override;
gl::Error getStatus(const gl::Context *context, GLint *outResult) override;
}; };
} // namespace rx } // namespace rx
#endif // LIBANGLE_RENDERER_NULL_FENCESYNCNULL_H_ #endif // LIBANGLE_RENDERER_NULL_FENCESYNCNULL_H_
...@@ -22,19 +22,19 @@ FenceNVVk::~FenceNVVk() ...@@ -22,19 +22,19 @@ FenceNVVk::~FenceNVVk()
{ {
} }
gl::Error FenceNVVk::set(GLenum condition) gl::Error FenceNVVk::set(const gl::Context *context, GLenum condition)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
} }
gl::Error FenceNVVk::test(GLboolean *outFinished) gl::Error FenceNVVk::test(const gl::Context *context, GLboolean *outFinished)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
} }
gl::Error FenceNVVk::finish() gl::Error FenceNVVk::finish(const gl::Context *context)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
......
...@@ -14,18 +14,16 @@ ...@@ -14,18 +14,16 @@
namespace rx namespace rx
{ {
class FenceNVVk : public FenceNVImpl class FenceNVVk : public FenceNVImpl
{ {
public: public:
FenceNVVk(); FenceNVVk();
~FenceNVVk() override; ~FenceNVVk() override;
gl::Error set(GLenum condition) override; gl::Error set(const gl::Context *context, GLenum condition) override;
gl::Error test(GLboolean *outFinished) override; gl::Error test(const gl::Context *context, GLboolean *outFinished) override;
gl::Error finish() override; gl::Error finish(const gl::Context *context) override;
}; };
} // namespace rx } // namespace rx
#endif // LIBANGLE_RENDERER_VULKAN_FENCENVVK_H_ #endif // LIBANGLE_RENDERER_VULKAN_FENCENVVK_H_
...@@ -22,25 +22,28 @@ SyncVk::~SyncVk() ...@@ -22,25 +22,28 @@ SyncVk::~SyncVk()
{ {
} }
gl::Error SyncVk::set(GLenum condition, GLbitfield flags) gl::Error SyncVk::set(const gl::Context *context, GLenum condition, GLbitfield flags)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
} }
gl::Error SyncVk::clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) gl::Error SyncVk::clientWait(const gl::Context *context,
GLbitfield flags,
GLuint64 timeout,
GLenum *outResult)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
} }
gl::Error SyncVk::serverWait(GLbitfield flags, GLuint64 timeout) gl::Error SyncVk::serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
} }
gl::Error SyncVk::getStatus(GLint *outResult) gl::Error SyncVk::getStatus(const gl::Context *context, GLint *outResult)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
return gl::InternalError(); return gl::InternalError();
......
...@@ -14,19 +14,20 @@ ...@@ -14,19 +14,20 @@
namespace rx namespace rx
{ {
class SyncVk : public SyncImpl class SyncVk : public SyncImpl
{ {
public: public:
SyncVk(); SyncVk();
~SyncVk() override; ~SyncVk() override;
gl::Error set(GLenum condition, GLbitfield flags) override; gl::Error set(const gl::Context *context, GLenum condition, GLbitfield flags) override;
gl::Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult) override; gl::Error clientWait(const gl::Context *context,
gl::Error serverWait(GLbitfield flags, GLuint64 timeout) override; GLbitfield flags,
gl::Error getStatus(GLint *outResult) override; GLuint64 timeout,
GLenum *outResult) override;
gl::Error serverWait(const gl::Context *context, GLbitfield flags, GLuint64 timeout) override;
gl::Error getStatus(const gl::Context *context, GLint *outResult) override;
}; };
} // namespace rx } // namespace rx
#endif // LIBANGLE_RENDERER_VULKAN_FENCESYNCVK_H_ #endif // LIBANGLE_RENDERER_VULKAN_FENCESYNCVK_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment