Commit 5d5253a3 by Geoff Lang Committed by Commit Bot

Clean up usage of EXT_debug_marker and KHR_debug in the backends.

In RendererGL, the EXT_debug_marker functions were calling the KHR_debug entry points, now they fall back only when EXT_debug_marker is missing. Separated the ContextImpl methods for the two extensions. BUG=781164 Change-Id: I615b5965b705e55eb730ebefa6e27e0ee6d86c31 Reviewed-on: https://chromium-review.googlesource.com/786337Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 1f73b7c6
......@@ -3936,11 +3936,13 @@ void Context::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLc
{
std::string msg(message, (length > 0) ? static_cast<size_t>(length) : strlen(message));
mGLState.getDebug().pushGroup(source, id, std::move(msg));
mImplementation->pushDebugGroup(source, id, length, message);
}
void Context::popDebugGroup()
{
mGLState.getDebug().popGroup();
mImplementation->popDebugGroup();
}
void Context::bufferData(BufferBinding target, GLsizeiptr size, const void *data, BufferUsage usage)
......
......@@ -130,11 +130,15 @@ class ContextImpl : public GLImplFactory
virtual std::string getVendorString() const = 0;
virtual std::string getRendererDescription() const = 0;
// Debug markers.
// EXT_debug_marker
virtual void insertEventMarker(GLsizei length, const char *marker) = 0;
virtual void pushGroupMarker(GLsizei length, const char *marker) = 0;
virtual void popGroupMarker() = 0;
// KHR_debug
virtual void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) = 0;
virtual void popDebugGroup() = 0;
// State sync with dirty bits.
virtual void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) = 0;
......
......@@ -261,6 +261,18 @@ void Context11::popGroupMarker()
mRenderer->getAnnotator()->endEvent();
}
void Context11::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
// Fall through to the EXT_debug_marker functions
pushGroupMarker(length, message);
}
void Context11::popDebugGroup()
{
// Fall through to the EXT_debug_marker functions
popGroupMarker();
}
void Context11::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(context, dirtyBits);
......
......@@ -110,11 +110,15 @@ class Context11 : public ContextImpl
std::string getVendorString() const override;
std::string getRendererDescription() const override;
// Debug markers.
// EXT_debug_marker
void insertEventMarker(GLsizei length, const char *marker) override;
void pushGroupMarker(GLsizei length, const char *marker) override;
void popGroupMarker() override;
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
void popDebugGroup() override;
// State sync with dirty bits.
void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
......
......@@ -240,6 +240,18 @@ void Context9::popGroupMarker()
mRenderer->getAnnotator()->endEvent();
}
void Context9::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
// Fall through to the EXT_debug_marker functions
pushGroupMarker(length, message);
}
void Context9::popDebugGroup()
{
// Fall through to the EXT_debug_marker functions
popGroupMarker();
}
void Context9::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(mState.getState(), dirtyBits);
......
......@@ -110,11 +110,15 @@ class Context9 : public ContextImpl
std::string getVendorString() const override;
std::string getRendererDescription() const override;
// Debug markers.
// EXT_debug_marker
void insertEventMarker(GLsizei length, const char *marker) override;
void pushGroupMarker(GLsizei length, const char *marker) override;
void popGroupMarker() override;
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
void popDebugGroup() override;
// State sync with dirty bits.
void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
......
......@@ -341,6 +341,16 @@ void ContextGL::popGroupMarker()
mRenderer->popGroupMarker();
}
void ContextGL::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
mRenderer->pushDebugGroup(source, id, length, message);
}
void ContextGL::popDebugGroup()
{
mRenderer->popDebugGroup();
}
void ContextGL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
mRenderer->getStateManager()->syncState(context, dirtyBits);
......
......@@ -162,11 +162,15 @@ class ContextGL : public ContextImpl
std::string getVendorString() const override;
std::string getRendererDescription() const override;
// Debug markers.
// EXT_debug_marker
void insertEventMarker(GLsizei length, const char *marker) override;
void pushGroupMarker(GLsizei length, const char *marker) override;
void popGroupMarker() override;
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
void popDebugGroup() override;
// State sync with dirty bits.
void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
......
......@@ -2624,6 +2624,13 @@ void DispatchTableGL::initProcsSharedExtensions(const std::set<std::string> &ext
ASSIGN("glGetObjectLabelEXT", getObjectLabel);
}
if (extensions.count("GL_EXT_debug_marker") != 0)
{
ASSIGN("glInsertEventMarkerEXT", insertEventMarkerEXT);
ASSIGN("glPopGroupMarkerEXT", popGroupMarkerEXT);
ASSIGN("glPushGroupMarkerEXT", pushGroupMarkerEXT);
}
if (extensions.count("GL_EXT_draw_instanced") != 0)
{
ASSIGN("glDrawArraysInstancedEXT", drawArraysInstanced);
......@@ -5331,6 +5338,13 @@ void DispatchTableGL::initProcsSharedExtensionsNULL(const std::set<std::string>
getObjectLabel = &glGetObjectLabelNULL;
}
if (extensions.count("GL_EXT_debug_marker") != 0)
{
insertEventMarkerEXT = &glInsertEventMarkerEXTNULL;
popGroupMarkerEXT = &glPopGroupMarkerEXTNULL;
pushGroupMarkerEXT = &glPushGroupMarkerEXTNULL;
}
if (extensions.count("GL_EXT_draw_instanced") != 0)
{
drawArraysInstanced = &glDrawArraysInstancedNULL;
......
......@@ -731,6 +731,11 @@ class DispatchTableGL : angle::NonCopyable
PFNGLBLENDBARRIERPROC blendBarrier = nullptr;
PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox = nullptr;
// EXT_debug_marker
PFNGLINSERTEVENTMARKEREXTPROC insertEventMarkerEXT = nullptr;
PFNGLPOPGROUPMARKEREXTPROC popGroupMarkerEXT = nullptr;
PFNGLPUSHGROUPMARKEREXTPROC pushGroupMarkerEXT = nullptr;
// GL_EXT_discard_framebuffer
PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebufferEXT = nullptr;
......
......@@ -548,18 +548,69 @@ ContextImpl *RendererGL::createContext(const gl::ContextState &state)
void RendererGL::insertEventMarker(GLsizei length, const char *marker)
{
mFunctions->debugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_MARKER, 0,
GL_DEBUG_SEVERITY_NOTIFICATION, length, marker);
if (mFunctions->insertEventMarkerEXT)
{
mFunctions->insertEventMarkerEXT(length, marker);
}
else if (mFunctions->debugMessageInsert)
{
mFunctions->debugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG_TYPE_MARKER, 0,
GL_DEBUG_SEVERITY_NOTIFICATION, length, marker);
}
else
{
UNREACHABLE();
}
}
void RendererGL::pushGroupMarker(GLsizei length, const char *marker)
{
mFunctions->pushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, length, marker);
if (mFunctions->pushGroupMarkerEXT)
{
mFunctions->pushGroupMarkerEXT(length, marker);
}
else if (mFunctions->pushDebugGroup)
{
// Fall back to KHR_debug to implement EXT_debug_marker
mFunctions->pushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, length, marker);
}
else
{
UNREACHABLE();
}
}
void RendererGL::popGroupMarker()
{
mFunctions->popDebugGroup();
if (mFunctions->popGroupMarkerEXT)
{
mFunctions->popGroupMarkerEXT();
}
else if (mFunctions->popDebugGroup)
{
// Fall back to KHR_debug to implement EXT_debug_marker
mFunctions->popDebugGroup();
}
else
{
UNREACHABLE();
}
}
void RendererGL::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
if (mFunctions->pushDebugGroup)
{
mFunctions->pushDebugGroup(source, id, length, message);
}
}
void RendererGL::popDebugGroup()
{
if (mFunctions->popDebugGroup)
{
mFunctions->popDebugGroup();
}
}
std::string RendererGL::getVendorString() const
......
......@@ -149,6 +149,10 @@ class RendererGL : angle::NonCopyable
void pushGroupMarker(GLsizei length, const char *marker);
void popGroupMarker();
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message);
void popDebugGroup();
std::string getVendorString() const;
std::string getRendererDescription() const;
......
......@@ -904,6 +904,13 @@ typedef void(INTERNAL_GL_APIENTRY *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum
GLenum pname,
GLsizei bufSize,
GLint *params);
// EXT_debug_marker
typedef void(INTERNAL_GL_APIENTRY *PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length,
const GLchar *marker);
typedef void(INTERNAL_GL_APIENTRY *PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length,
const GLchar *marker);
typedef void(INTERNAL_GL_APIENTRY *PFNGLPOPGROUPMARKEREXTPROC)(void);
}
#endif // LIBANGLE_RENDERER_GL_FUNCTIONSGLTYPEDEFS_H_
......@@ -783,5 +783,12 @@
"GL_NV_internalformat_sample_query":
[
"GetInternalformatSampleivNV"
],
"GL_EXT_debug_marker":
[
"InsertEventMarkerEXT",
"PushGroupMarkerEXT",
"PopGroupMarkerEXT"
]
}
......@@ -1960,6 +1960,10 @@ void INTERNAL_GL_APIENTRY glHintNULL(GLenum target, GLenum mode)
{
}
void INTERNAL_GL_APIENTRY glInsertEventMarkerEXTNULL(GLsizei length, const GLchar *marker)
{
}
void INTERNAL_GL_APIENTRY glInvalidateBufferDataNULL(GLuint buffer)
{
}
......@@ -2352,6 +2356,10 @@ void INTERNAL_GL_APIENTRY glPopDebugGroupNULL()
{
}
void INTERNAL_GL_APIENTRY glPopGroupMarkerEXTNULL()
{
}
void INTERNAL_GL_APIENTRY glPrimitiveBoundingBoxNULL(GLfloat minX,
GLfloat minY,
GLfloat minZ,
......@@ -2742,6 +2750,10 @@ void INTERNAL_GL_APIENTRY glPushDebugGroupNULL(GLenum source,
{
}
void INTERNAL_GL_APIENTRY glPushGroupMarkerEXTNULL(GLsizei length, const GLchar *marker)
{
}
void INTERNAL_GL_APIENTRY glQueryCounterNULL(GLuint id, GLenum target)
{
}
......
......@@ -972,6 +972,7 @@ void INTERNAL_GL_APIENTRY glGetnUniformuivNULL(GLuint program,
GLsizei bufSize,
GLuint *params);
void INTERNAL_GL_APIENTRY glHintNULL(GLenum target, GLenum mode);
void INTERNAL_GL_APIENTRY glInsertEventMarkerEXTNULL(GLsizei length, const GLchar *marker);
void INTERNAL_GL_APIENTRY glInvalidateBufferDataNULL(GLuint buffer);
void INTERNAL_GL_APIENTRY glInvalidateBufferSubDataNULL(GLuint buffer,
GLintptr offset,
......@@ -1133,6 +1134,7 @@ void INTERNAL_GL_APIENTRY glPointSizeNULL(GLfloat size);
void INTERNAL_GL_APIENTRY glPolygonModeNULL(GLenum face, GLenum mode);
void INTERNAL_GL_APIENTRY glPolygonOffsetNULL(GLfloat factor, GLfloat units);
void INTERNAL_GL_APIENTRY glPopDebugGroupNULL();
void INTERNAL_GL_APIENTRY glPopGroupMarkerEXTNULL();
void INTERNAL_GL_APIENTRY glPrimitiveBoundingBoxNULL(GLfloat minX,
GLfloat minY,
GLfloat minZ,
......@@ -1355,6 +1357,7 @@ void INTERNAL_GL_APIENTRY glPushDebugGroupNULL(GLenum source,
GLuint id,
GLsizei length,
const GLchar *message);
void INTERNAL_GL_APIENTRY glPushGroupMarkerEXTNULL(GLsizei length, const GLchar *marker);
void INTERNAL_GL_APIENTRY glQueryCounterNULL(GLuint id, GLenum target);
void INTERNAL_GL_APIENTRY glReadBufferNULL(GLenum src);
void INTERNAL_GL_APIENTRY glReadPixelsNULL(GLint x,
......
......@@ -935,9 +935,12 @@ void GenerateCaps(const FunctionsGL *functions,
extensions->packSubimage = functions->standard == STANDARD_GL_DESKTOP ||
functions->isAtLeastGLES(gl::Version(3, 0)) ||
functions->hasGLESExtension("GL_NV_pack_subimage");
extensions->debugMarker =
functions->isAtLeastGL(gl::Version(4, 3)) || functions->hasGLExtension("GL_KHR_debug") ||
functions->isAtLeastGLES(gl::Version(3, 2)) || functions->hasGLESExtension("GL_KHR_debug");
extensions->debugMarker = functions->isAtLeastGL(gl::Version(4, 3)) ||
functions->hasGLExtension("GL_KHR_debug") ||
functions->hasGLExtension("GL_EXT_debug_marker") ||
functions->isAtLeastGLES(gl::Version(3, 2)) ||
functions->hasGLESExtension("GL_KHR_debug") ||
functions->hasGLESExtension("GL_EXT_debug_marker");
if (functions->isAtLeastGL(gl::Version(3, 3)) ||
functions->hasGLExtension("GL_ARB_timer_query") ||
functions->hasGLESExtension("GL_EXT_disjoint_timer_query"))
......
......@@ -280,6 +280,14 @@ void ContextNULL::popGroupMarker()
{
}
void ContextNULL::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
}
void ContextNULL::popDebugGroup()
{
}
void ContextNULL::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
}
......
......@@ -132,11 +132,15 @@ class ContextNULL : public ContextImpl
std::string getVendorString() const override;
std::string getRendererDescription() const override;
// Debug markers.
// EXT_debug_marker
void insertEventMarker(GLsizei length, const char *marker) override;
void pushGroupMarker(GLsizei length, const char *marker) override;
void popGroupMarker() override;
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
void popDebugGroup() override;
// State sync with dirty bits.
void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
......
......@@ -503,6 +503,16 @@ void ContextVk::popGroupMarker()
UNIMPLEMENTED();
}
void ContextVk::pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message)
{
UNIMPLEMENTED();
}
void ContextVk::popDebugGroup()
{
UNIMPLEMENTED();
}
void ContextVk::syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits)
{
if (dirtyBits.any())
......
......@@ -77,11 +77,15 @@ class ContextVk : public ContextImpl, public ResourceVk
std::string getVendorString() const override;
std::string getRendererDescription() const override;
// Debug markers.
// EXT_debug_marker
void insertEventMarker(GLsizei length, const char *marker) override;
void pushGroupMarker(GLsizei length, const char *marker) override;
void popGroupMarker() override;
// KHR_debug
void pushDebugGroup(GLenum source, GLuint id, GLsizei length, const char *message) override;
void popDebugGroup() override;
// State sync with dirty bits.
void syncState(const gl::Context *context, const gl::State::DirtyBits &dirtyBits) override;
......
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