Commit 7004523a by Jamie Madill Committed by Commit Bot

KHR_debug: Fix off-by-one message length.

The dEQP tests were timing out due to the "get message" call skipping messages. The get call had a bufSize that ANGLE was rejecting as too small because it didn't include the null terminator. The dEQP test would pass but would always take ten seconds. I noticed this when debugging the ANGLE test launcher and seeing batch timeouts. Bug: angleproject:5130 Change-Id: Ie9f949218590b98a11f6c10b1f86074e90dbca17 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2447039 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
parent 9214fc18
...@@ -271,7 +271,7 @@ size_t Debug::getMessages(GLuint count, ...@@ -271,7 +271,7 @@ size_t Debug::getMessages(GLuint count,
if (lengths != nullptr) if (lengths != nullptr)
{ {
lengths[messageCount] = static_cast<GLsizei>(m.message.length()); lengths[messageCount] = static_cast<GLsizei>(m.message.length()) + 1;
} }
mMessages.pop_front(); mMessages.pop_front();
...@@ -284,7 +284,7 @@ size_t Debug::getMessages(GLuint count, ...@@ -284,7 +284,7 @@ size_t Debug::getMessages(GLuint count,
size_t Debug::getNextMessageLength() const size_t Debug::getNextMessageLength() const
{ {
return mMessages.empty() ? 0 : mMessages.front().message.length(); return mMessages.empty() ? 0 : mMessages.front().message.length() + 1;
} }
size_t Debug::getMessageCount() const size_t Debug::getMessageCount() const
......
...@@ -108,14 +108,14 @@ TEST_P(DebugTest, InsertMessage) ...@@ -108,14 +108,14 @@ TEST_P(DebugTest, InsertMessage)
GLint messageLength = 0; GLint messageLength = 0;
glGetIntegerv(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, &messageLength); glGetIntegerv(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, &messageLength);
EXPECT_EQ(static_cast<GLint>(message.length()), messageLength); EXPECT_EQ(static_cast<GLint>(message.length()) + 1, messageLength);
GLenum sourceBuf = 0; GLenum sourceBuf = 0;
GLenum typeBuf = 0; GLenum typeBuf = 0;
GLenum idBuf = 0; GLenum idBuf = 0;
GLenum severityBuf = 0; GLenum severityBuf = 0;
GLsizei lengthBuf = 0; GLsizei lengthBuf = 0;
std::vector<char> messageBuf(messageLength + 1); std::vector<char> messageBuf(messageLength);
GLuint ret = GLuint ret =
glGetDebugMessageLogKHR(1, static_cast<GLsizei>(messageBuf.size()), &sourceBuf, &typeBuf, glGetDebugMessageLogKHR(1, static_cast<GLsizei>(messageBuf.size()), &sourceBuf, &typeBuf,
&idBuf, &severityBuf, &lengthBuf, messageBuf.data()); &idBuf, &severityBuf, &lengthBuf, messageBuf.data());
...@@ -165,14 +165,14 @@ TEST_P(DebugTest, InsertMessageMultiple) ...@@ -165,14 +165,14 @@ TEST_P(DebugTest, InsertMessageMultiple)
GLint messageLength = 0; GLint messageLength = 0;
glGetIntegerv(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, &messageLength); glGetIntegerv(GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH, &messageLength);
EXPECT_EQ(static_cast<GLint>(expectedMessage.length()), messageLength); EXPECT_EQ(static_cast<GLint>(expectedMessage.length()) + 1, messageLength);
GLenum sourceBuf = 0; GLenum sourceBuf = 0;
GLenum typeBuf = 0; GLenum typeBuf = 0;
GLenum idBuf = 0; GLenum idBuf = 0;
GLenum severityBuf = 0; GLenum severityBuf = 0;
GLsizei lengthBuf = 0; GLsizei lengthBuf = 0;
std::vector<char> messageBuf(messageLength + 1); std::vector<char> messageBuf(messageLength);
GLuint ret = GLuint ret =
glGetDebugMessageLogKHR(1, static_cast<GLsizei>(messageBuf.size()), &sourceBuf, glGetDebugMessageLogKHR(1, static_cast<GLsizei>(messageBuf.size()), &sourceBuf,
&typeBuf, &idBuf, &severityBuf, &lengthBuf, messageBuf.data()); &typeBuf, &idBuf, &severityBuf, &lengthBuf, messageBuf.data());
......
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