Commit 87b106a0 by Jamie Madill Committed by Commit Bot

Fix trace logging in Debug.

- fix crash when logging an invalid context - output to trace even when platform logging is on Bug: angleproject:3815 Change-Id: I725f5728e1d839e3d8458579ad1958cb775d9ecf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769505Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 27a8b32f
...@@ -54,10 +54,7 @@ void LoggingAnnotator::logMessage(const gl::LogMessage &msg) const ...@@ -54,10 +54,7 @@ void LoggingAnnotator::logMessage(const gl::LogMessage &msg) const
UNREACHABLE(); UNREACHABLE();
} }
} }
else gl::Trace(msg.getSeverity(), msg.getMessage().c_str());
{
gl::Trace(msg.getSeverity(), msg.getMessage().c_str());
}
} }
} // namespace angle } // namespace angle
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "common/PackedEnums.h" #include "common/PackedEnums.h"
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/mathutil.h" #include "common/mathutil.h"
#include "libANGLE/Display.h"
#include "libANGLE/entry_points_enum_autogen.h" #include "libANGLE/entry_points_enum_autogen.h"
namespace gl namespace gl
...@@ -98,9 +99,19 @@ inline int CID(const Context *context) ...@@ -98,9 +99,19 @@ inline int CID(const Context *context)
namespace egl namespace egl
{ {
inline int CID(EGLContext context) inline int CID(EGLDisplay display, EGLContext context)
{ {
return gl::CID(reinterpret_cast<const gl::Context *>(context)); auto *displayPtr = reinterpret_cast<const egl::Display *>(display);
if (!Display::isValidDisplay(displayPtr))
{
return -1;
}
auto *contextPtr = reinterpret_cast<const gl::Context *>(context);
if (!displayPtr->isValidContext(contextPtr))
{
return -1;
}
return gl::CID(contextPtr);
} }
} // namespace egl } // namespace egl
......
...@@ -368,7 +368,7 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy, ...@@ -368,7 +368,7 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy,
FUNC_EVENT("EGLDisplay dpy = 0x%016" PRIxPTR ", EGLConfig config = 0x%016" PRIxPTR FUNC_EVENT("EGLDisplay dpy = 0x%016" PRIxPTR ", EGLConfig config = 0x%016" PRIxPTR
", EGLContext share_context = %d, " ", EGLContext share_context = %d, "
"const EGLint *attrib_list = 0x%016" PRIxPTR, "const EGLint *attrib_list = 0x%016" PRIxPTR,
(uintptr_t)dpy, (uintptr_t)config, CID(share_context), (uintptr_t)attrib_list); (uintptr_t)dpy, (uintptr_t)config, CID(dpy, share_context), (uintptr_t)attrib_list);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
...@@ -393,7 +393,8 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy, ...@@ -393,7 +393,8 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy,
EGLBoolean EGLAPIENTRY EGL_DestroyContext(EGLDisplay dpy, EGLContext ctx) EGLBoolean EGLAPIENTRY EGL_DestroyContext(EGLDisplay dpy, EGLContext ctx)
{ {
ANGLE_SCOPED_GLOBAL_LOCK(); ANGLE_SCOPED_GLOBAL_LOCK();
FUNC_EVENT("EGLDisplay dpy = 0x%016" PRIxPTR ", EGLContext ctx = %d", (uintptr_t)dpy, CID(ctx)); FUNC_EVENT("EGLDisplay dpy = 0x%016" PRIxPTR ", EGLContext ctx = %d", (uintptr_t)dpy,
CID(dpy, ctx));
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
...@@ -426,7 +427,7 @@ EGLBoolean EGLAPIENTRY EGL_MakeCurrent(EGLDisplay dpy, ...@@ -426,7 +427,7 @@ EGLBoolean EGLAPIENTRY EGL_MakeCurrent(EGLDisplay dpy,
", EGLSurface read = 0x%016" PRIxPTR ", EGLSurface read = 0x%016" PRIxPTR
", " ", "
"EGLContext ctx = %d", "EGLContext ctx = %d",
(uintptr_t)dpy, (uintptr_t)draw, (uintptr_t)read, CID(ctx)); (uintptr_t)dpy, (uintptr_t)draw, (uintptr_t)read, CID(dpy, ctx));
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
...@@ -502,7 +503,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryContext(EGLDisplay dpy, ...@@ -502,7 +503,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryContext(EGLDisplay dpy,
", EGLContext ctx = %d" ", EGLContext ctx = %d"
", EGLint attribute = %d, EGLint *value " ", EGLint attribute = %d, EGLint *value "
"= 0x%016" PRIxPTR, "= 0x%016" PRIxPTR,
(uintptr_t)dpy, CID(ctx), attribute, (uintptr_t)value); (uintptr_t)dpy, CID(dpy, ctx), attribute, (uintptr_t)value);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
...@@ -934,7 +935,7 @@ EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy, ...@@ -934,7 +935,7 @@ EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy,
", EGLenum target = 0x%X, " ", EGLenum target = 0x%X, "
"EGLClientBuffer buffer = 0x%016" PRIxPTR "EGLClientBuffer buffer = 0x%016" PRIxPTR
", const EGLAttrib *attrib_list = 0x%016" PRIxPTR, ", const EGLAttrib *attrib_list = 0x%016" PRIxPTR,
(uintptr_t)dpy, CID(ctx), target, (uintptr_t)buffer, (uintptr_t)attrib_list); (uintptr_t)dpy, CID(dpy, ctx), target, (uintptr_t)buffer, (uintptr_t)attrib_list);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
......
...@@ -402,7 +402,7 @@ ANGLE_EXPORT EGLImageKHR EGLAPIENTRY EGL_CreateImageKHR(EGLDisplay dpy, ...@@ -402,7 +402,7 @@ ANGLE_EXPORT EGLImageKHR EGLAPIENTRY EGL_CreateImageKHR(EGLDisplay dpy,
", EGLenum target = 0x%X, " ", EGLenum target = 0x%X, "
"EGLClientBuffer buffer = 0x%016" PRIxPTR "EGLClientBuffer buffer = 0x%016" PRIxPTR
", const EGLAttrib *attrib_list = 0x%016" PRIxPTR, ", const EGLAttrib *attrib_list = 0x%016" PRIxPTR,
(uintptr_t)dpy, CID(ctx), target, (uintptr_t)buffer, (uintptr_t)attrib_list); (uintptr_t)dpy, CID(dpy, ctx), target, (uintptr_t)buffer, (uintptr_t)attrib_list);
Thread *thread = egl::GetCurrentThread(); Thread *thread = egl::GetCurrentThread();
egl::Display *display = static_cast<egl::Display *>(dpy); egl::Display *display = static_cast<egl::Display *>(dpy);
......
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