summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py64
-rw-r--r--gpu/command_buffer/client/gles2_c_lib_autogen.h9
-rw-r--r--gpu/command_buffer/client/gles2_cmd_helper_autogen.h22
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc193
-rw-r--r--gpu/command_buffer/client/gles2_implementation.h5
-rw-r--r--gpu/command_buffer/client/gles2_implementation_autogen.h6
-rw-r--r--gpu/command_buffer/client/gles2_implementation_unittest_autogen.h13
-rw-r--r--gpu/command_buffer/cmd_buffer_functions.txt4
-rw-r--r--gpu/command_buffer/common/debug_marker_manager.cc51
-rw-r--r--gpu/command_buffer/common/debug_marker_manager.h62
-rw-r--r--gpu/command_buffer/common/debug_marker_manager_unittest.cc63
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_autogen.h98
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_test_autogen.h37
-rw-r--r--gpu/command_buffer/common/gles2_cmd_ids_autogen.h59
-rw-r--r--gpu/command_buffer/service/feature_info.cc1
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc47
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_autogen.h36
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h15
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h5
-rw-r--r--gpu/command_buffer_common.gypi2
-rw-r--r--gpu/command_buffer_service.gypi4
-rw-r--r--gpu/gpu.gyp1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp1
23 files changed, 690 insertions, 108 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 103431c..d2b1fba 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1714,6 +1714,21 @@ _FUNCTION_INFO = {
'needs_size': True,
'gl_test_func': 'DoBindUniformLocationCHROMIUM',
},
+ 'InsertEventMarkerEXT': {
+ 'type': 'GLcharN',
+ 'decoder_func': 'DoInsertEventMarkerEXT',
+ 'expectation': False,
+ },
+ 'PushGroupMarkerEXT': {
+ 'type': 'GLcharN',
+ 'decoder_func': 'DoPushGroupMarkerEXT',
+ 'expectation': False,
+ },
+ 'PopGroupMarkerEXT': {
+ 'decoder_func': 'DoPopGroupMarkerEXT',
+ 'expectation': False,
+ 'impl_func': False,
+ },
}
@@ -2227,7 +2242,7 @@ TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
if len(func.GetOriginalArgs()):
comma = " << "
file.Write(
- ' GPU_CLIENT_LOG("[" << this << "] gl%s("%s%s << ")");\n' %
+ ' GPU_CLIENT_LOG("[" << GetLogPrefix() << "] gl%s("%s%s << ")");\n' %
(func.original_name, comma, func.MakeLogArgString()))
def WriteClientGLReturnLog(self, func, file):
@@ -4276,6 +4291,49 @@ TEST_F(GLES2FormatTest, %(func_name)s) {
})
+class GLcharNHandler(CustomHandler):
+ """Handler for functions that pass a single string with an optional len."""
+
+ def __init__(self):
+ CustomHandler.__init__(self)
+
+ def InitFunction(self, func):
+ """Overrriden from TypeHandler."""
+ func.cmd_args = []
+ func.AddCmdArg(Argument('bucket_id', 'GLuint'))
+
+ def AddImmediateFunction(self, generator, func):
+ """Overrriden from TypeHandler."""
+ pass
+
+ def AddBucketFunction(self, generator, func):
+ """Overrriden from TypeHandler."""
+ pass
+
+ def WriteServiceImplementation(self, func, file):
+ """Overrriden from TypeHandler."""
+ file.Write("""error::Error GLES2DecoderImpl::Handle%(name)s(
+ uint32 immediate_data_size, const gles2::%(name)s& c) {
+ GLuint bucket_id = static_cast<GLuint>(c.%(bucket_id)s);
+ Bucket* bucket = GetBucket(bucket_id);
+ if (!bucket || bucket->size() == 0) {
+ return error::kInvalidArguments;
+ }
+ std::string str;
+ if (!bucket->GetAsString(&str)) {
+ return error::kInvalidArguments;
+ }
+ %(gl_func_name)s(0, str.c_str());
+ return error::kNoError;
+}
+
+""" % {
+ 'name': func.name,
+ 'gl_func_name': func.GetGLFunctionName(),
+ 'bucket_id': func.cmd_args[0].name,
+ })
+
+
class IsHandler(TypeHandler):
"""Handler for glIs____ type and glGetError functions."""
@@ -4444,7 +4502,8 @@ class STRnHandler(TypeHandler):
code_1 = """%(return_type)s %(func_name)s(%(args)s) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
"""
- code_2 = """ GPU_CLIENT_LOG("[" << this << "] gl%(func_name)s" << "("
+ code_2 = """ GPU_CLIENT_LOG("[" << GetLogPrefix()
+ << "] gl%(func_name)s" << "("
<< %(arg0)s << ", "
<< %(arg1)s << ", "
<< static_cast<void*>(%(arg2)s) << ", "
@@ -5622,6 +5681,7 @@ class GLGenerator(object):
'GENn': GENnHandler(),
'GETn': GETnHandler(),
'GLchar': GLcharHandler(),
+ 'GLcharN': GLcharNHandler(),
'HandWritten': HandWrittenHandler(),
'Is': IsHandler(),
'Manual': ManualHandler(),
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index c1ecb31..2f4fe35 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -544,6 +544,15 @@ void GLES2GetQueryivEXT(GLenum target, GLenum pname, GLint* params) {
void GLES2GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params) {
gles2::GetGLContext()->GetQueryObjectuivEXT(id, pname, params);
}
+void GLES2InsertEventMarkerEXT(GLsizei length, const GLchar* marker) {
+ gles2::GetGLContext()->InsertEventMarkerEXT(length, marker);
+}
+void GLES2PushGroupMarkerEXT(GLsizei length, const GLchar* marker) {
+ gles2::GetGLContext()->PushGroupMarkerEXT(length, marker);
+}
+void GLES2PopGroupMarkerEXT() {
+ gles2::GetGLContext()->PopGroupMarkerEXT();
+}
void GLES2SwapBuffers() {
gles2::GetGLContext()->SwapBuffers();
}
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index 098674d..77c1ac1 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -1574,6 +1574,28 @@
}
}
+ void InsertEventMarkerEXT(GLuint bucket_id) {
+ gles2::InsertEventMarkerEXT* c =
+ GetCmdSpace<gles2::InsertEventMarkerEXT>();
+ if (c) {
+ c->Init(bucket_id);
+ }
+ }
+
+ void PushGroupMarkerEXT(GLuint bucket_id) {
+ gles2::PushGroupMarkerEXT* c = GetCmdSpace<gles2::PushGroupMarkerEXT>();
+ if (c) {
+ c->Init(bucket_id);
+ }
+ }
+
+ void PopGroupMarkerEXT() {
+ gles2::PopGroupMarkerEXT* c = GetCmdSpace<gles2::PopGroupMarkerEXT>();
+ if (c) {
+ c->Init();
+ }
+ }
+
void SwapBuffers() {
gles2::SwapBuffers* c = GetCmdSpace<gles2::SwapBuffers>();
if (c) {
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index f600bed..c0e1a01 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -10,6 +10,8 @@
#include <map>
#include <queue>
#include <set>
+#include <stdio.h>
+#include <string.h>
#include <GLES2/gl2ext.h>
#include "../client/mapped_memory.h"
#include "../client/program_info_manager.h"
@@ -424,6 +426,11 @@ GLES2Implementation::GLES2Implementation(
context_lost_(false) {
GPU_DCHECK(helper);
GPU_DCHECK(transfer_buffer);
+
+ char temp[128];
+ sprintf(temp, "%p", this);
+ this_in_hex_ = std::string(temp);
+
GPU_CLIENT_LOG_CODE_BLOCK({
debug_ = CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableGPUClientLogging);
@@ -604,9 +611,14 @@ bool GLES2Implementation::IsAnglePackReverseRowOrderAvailable() {
}
}
+const std::string& GLES2Implementation::GetLogPrefix() const {
+ const std::string& prefix(debug_marker_manager_.GetMarker());
+ return prefix.empty() ? this_in_hex_ : prefix;
+}
+
GLenum GLES2Implementation::GetError() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetError()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetError()");
GLenum err = GetGLError();
GPU_CLIENT_LOG("returned " << GLES2Util::GetStringError(err));
return err;
@@ -652,7 +664,7 @@ GLenum GLES2Implementation::GetGLError() {
void GLES2Implementation::SetGLError(
GLenum error, const char* function_name, const char* msg) {
- GPU_CLIENT_LOG("[" << this << "] Client Synthesized Error: "
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] Client Synthesized Error: "
<< GLES2Util::GetStringError(error) << ": "
<< function_name << ": " << msg);
if (msg) {
@@ -804,7 +816,7 @@ bool GLES2Implementation::SetCapabilityState(GLenum cap, bool enabled) {
void GLES2Implementation::Disable(GLenum cap) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glDisable("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDisable("
<< GLES2Util::GetStringCapability(cap) << ")");
SetCapabilityState(cap, false);
helper_->Disable(cap);
@@ -812,7 +824,7 @@ void GLES2Implementation::Disable(GLenum cap) {
void GLES2Implementation::Enable(GLenum cap) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glEnable("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glEnable("
<< GLES2Util::GetStringCapability(cap) << ")");
SetCapabilityState(cap, true);
helper_->Enable(cap);
@@ -820,7 +832,7 @@ void GLES2Implementation::Enable(GLenum cap) {
GLboolean GLES2Implementation::IsEnabled(GLenum cap) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glIsEnabled("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glIsEnabled("
<< GLES2Util::GetStringCapability(cap) << ")");
bool state = false;
switch (cap) {
@@ -991,7 +1003,7 @@ GLuint GLES2Implementation::GetMaxValueInBufferCHROMIUMHelper(
GLuint GLES2Implementation::GetMaxValueInBufferCHROMIUM(
GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetMaxValueInBufferCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetMaxValueInBufferCHROMIUM("
<< buffer_id << ", " << count << ", "
<< GLES2Util::GetStringGetMaxIndexType(type)
<< ", " << offset << ")");
@@ -1003,14 +1015,14 @@ GLuint GLES2Implementation::GetMaxValueInBufferCHROMIUM(
void GLES2Implementation::Clear(GLbitfield mask) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glClear(" << mask << ")");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glClear(" << mask << ")");
helper_->Clear(mask);
}
void GLES2Implementation::DrawElements(
GLenum mode, GLsizei count, GLenum type, const void* indices) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glDrawElements("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDrawElements("
<< GLES2Util::GetStringDrawMode(mode) << ", "
<< count << ", "
<< GLES2Util::GetStringIndexType(type) << ", "
@@ -1063,7 +1075,7 @@ void GLES2Implementation::DrawElements(
void GLES2Implementation::Flush() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glFlush()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFlush()");
// Insert the cmd to call glFlush
helper_->Flush();
// Flush our command buffer
@@ -1073,7 +1085,7 @@ void GLES2Implementation::Flush() {
void GLES2Implementation::ShallowFlushCHROMIUM() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glShallowFlushCHROMIUM()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glShallowFlushCHROMIUM()");
// Flush our command buffer
// (tell the service to execute up to the flush cmd.)
helper_->CommandBufferHelper::Flush();
@@ -1094,7 +1106,7 @@ bool GLES2Implementation::MustBeContextLost() {
}
void GLES2Implementation::FinishHelper() {
- GPU_CLIENT_LOG("[" << this << "] glFinish()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glFinish()");
TRACE_EVENT0("gpu", "GLES2::Finish");
// Insert the cmd to call glFinish
helper_->Finish();
@@ -1106,7 +1118,7 @@ void GLES2Implementation::FinishHelper() {
void GLES2Implementation::SwapBuffers() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glSwapBuffers()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glSwapBuffers()");
// TODO(piman): Strictly speaking we'd want to insert the token after the
// swap, but the state update with the updated token might not have happened
// by the time the SwapBuffer callback gets called, forcing us to synchronize
@@ -1127,7 +1139,7 @@ void GLES2Implementation::SwapBuffers() {
void GLES2Implementation::GenSharedIdsCHROMIUM(
GLuint namespace_id, GLuint id_offset, GLsizei n, GLuint* ids) {
- GPU_CLIENT_LOG("[" << this << "] glGenSharedIdsCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenSharedIdsCHROMIUM("
<< namespace_id << ", " << id_offset << ", " << n << ", " <<
static_cast<void*>(ids) << ")");
TRACE_EVENT0("gpu", "GLES2::GenSharedIdsCHROMIUM");
@@ -1155,7 +1167,7 @@ void GLES2Implementation::GenSharedIdsCHROMIUM(
void GLES2Implementation::DeleteSharedIdsCHROMIUM(
GLuint namespace_id, GLsizei n, const GLuint* ids) {
- GPU_CLIENT_LOG("[" << this << "] glDeleteSharedIdsCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDeleteSharedIdsCHROMIUM("
<< namespace_id << ", " << n << ", "
<< static_cast<const void*>(ids) << ")");
GPU_CLIENT_LOG_CODE_BLOCK({
@@ -1181,7 +1193,7 @@ void GLES2Implementation::DeleteSharedIdsCHROMIUM(
void GLES2Implementation::RegisterSharedIdsCHROMIUM(
GLuint namespace_id, GLsizei n, const GLuint* ids) {
- GPU_CLIENT_LOG("[" << this << "] glRegisterSharedIdsCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRegisterSharedIdsCHROMIUM("
<< namespace_id << ", " << n << ", "
<< static_cast<const void*>(ids) << ")");
GPU_CLIENT_LOG_CODE_BLOCK({
@@ -1208,8 +1220,8 @@ void GLES2Implementation::RegisterSharedIdsCHROMIUM(
void GLES2Implementation::BindAttribLocation(
GLuint program, GLuint index, const char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glBindAttribLocation(" << program << ", "
- << index << ", " << name << ")");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindAttribLocation("
+ << program << ", " << index << ", " << name << ")");
SetBucketAsString(kResultBucketId, name);
helper_->BindAttribLocationBucket(program, index, kResultBucketId);
helper_->SetBucketSize(kResultBucketId, 0);
@@ -1218,7 +1230,7 @@ void GLES2Implementation::BindAttribLocation(
void GLES2Implementation::BindUniformLocationCHROMIUM(
GLuint program, GLint location, const char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glBindUniformLocationCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBindUniformLocationCHROMIUM("
<< program << ", " << location << ", " << name << ")");
SetBucketAsString(kResultBucketId, name);
helper_->BindUniformLocationCHROMIUMBucket(
@@ -1229,8 +1241,8 @@ void GLES2Implementation::BindUniformLocationCHROMIUM(
void GLES2Implementation::GetVertexAttribPointerv(
GLuint index, GLenum pname, void** ptr) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetVertexAttribPointer(" << index << ", "
- << GLES2Util::GetStringVertexPointer(pname) << ", "
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetVertexAttribPointer("
+ << index << ", " << GLES2Util::GetStringVertexPointer(pname) << ", "
<< static_cast<void*>(ptr) << ")");
#if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
@@ -1314,7 +1326,7 @@ GLint GLES2Implementation::GetAttribLocationHelper(
GLint GLES2Implementation::GetAttribLocation(
GLuint program, const char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetAttribLocation(" << program
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetAttribLocation(" << program
<< ", " << name << ")");
TRACE_EVENT0("gpu", "GLES2::GetAttribLocation");
GLint loc = share_group_->program_info_manager()->GetAttribLocation(
@@ -1342,7 +1354,7 @@ GLint GLES2Implementation::GetUniformLocationHelper(
GLint GLES2Implementation::GetUniformLocation(
GLuint program, const char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetUniformLocation(" << program
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetUniformLocation(" << program
<< ", " << name << ")");
TRACE_EVENT0("gpu", "GLES2::GetUniformLocation");
GLint loc = share_group_->program_info_manager()->GetUniformLocation(
@@ -1365,7 +1377,7 @@ bool GLES2Implementation::GetProgramivHelper(
void GLES2Implementation::LinkProgram(GLuint program) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glLinkProgram(" << program << ")");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glLinkProgram(" << program << ")");
helper_->LinkProgram(program);
share_group_->program_info_manager()->CreateInfo(program);
}
@@ -1374,7 +1386,7 @@ void GLES2Implementation::ShaderBinary(
GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary,
GLsizei length) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glShaderBinary(" << n << ", "
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glShaderBinary(" << n << ", "
<< static_cast<const void*>(shaders) << ", "
<< GLES2Util::GetStringEnum(binaryformat) << ", "
<< static_cast<const void*>(binary) << ", "
@@ -1411,7 +1423,7 @@ void GLES2Implementation::ShaderBinary(
void GLES2Implementation::PixelStorei(GLenum pname, GLint param) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glPixelStorei("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPixelStorei("
<< GLES2Util::GetStringPixelStore(pname) << ", "
<< param << ")");
switch (pname) {
@@ -1448,7 +1460,7 @@ void GLES2Implementation::VertexAttribPointer(
GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride,
const void* ptr) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glVertexAttribPointer("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribPointer("
<< index << ", "
<< size << ", "
<< GLES2Util::GetStringVertexAttribType(type) << ", "
@@ -1473,7 +1485,7 @@ void GLES2Implementation::VertexAttribPointer(
void GLES2Implementation::VertexAttribDivisorANGLE(
GLuint index, GLuint divisor) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glVertexAttribDivisorANGLE("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glVertexAttribDivisorANGLE("
<< index << ", "
<< divisor << ") ");
#if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
@@ -1486,7 +1498,7 @@ void GLES2Implementation::VertexAttribDivisorANGLE(
void GLES2Implementation::ShaderSource(
GLuint shader, GLsizei count, const char** source, const GLint* length) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glShaderSource("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glShaderSource("
<< shader << ", " << count << ", "
<< static_cast<const void*>(source) << ", "
<< static_cast<const void*>(length) << ")");
@@ -1593,7 +1605,7 @@ void GLES2Implementation::BufferDataHelper(
void GLES2Implementation::BufferData(
GLenum target, GLsizeiptr size, const void* data, GLenum usage) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glBufferData("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBufferData("
<< GLES2Util::GetStringBufferTarget(target) << ", "
<< size << ", "
<< static_cast<const void*>(data) << ", "
@@ -1643,7 +1655,7 @@ void GLES2Implementation::BufferSubDataHelperImpl(
void GLES2Implementation::BufferSubData(
GLenum target, GLintptr offset, GLsizeiptr size, const void* data) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glBufferSubData("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glBufferSubData("
<< GLES2Util::GetStringBufferTarget(target) << ", "
<< offset << ", " << size << ", "
<< static_cast<const void*>(data) << ")");
@@ -1654,7 +1666,7 @@ void GLES2Implementation::CompressedTexImage2D(
GLenum target, GLint level, GLenum internalformat, GLsizei width,
GLsizei height, GLint border, GLsizei image_size, const void* data) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glCompressedTexImage2D("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCompressedTexImage2D("
<< GLES2Util::GetStringTextureTarget(target) << ", "
<< level << ", "
<< GLES2Util::GetStringCompressedTextureFormat(internalformat) << ", "
@@ -1681,7 +1693,7 @@ void GLES2Implementation::CompressedTexSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLsizei image_size, const void* data) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glCompressedTexSubImage2D("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glCompressedTexSubImage2D("
<< GLES2Util::GetStringTextureTarget(target) << ", "
<< level << ", "
<< xoffset << ", " << yoffset << ", "
@@ -1742,7 +1754,7 @@ void GLES2Implementation::TexImage2D(
GLsizei height, GLint border, GLenum format, GLenum type,
const void* pixels) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glTexImage2D("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexImage2D("
<< GLES2Util::GetStringTextureTarget(target) << ", "
<< level << ", "
<< GLES2Util::GetStringTextureInternalFormat(internalformat) << ", "
@@ -1824,7 +1836,7 @@ void GLES2Implementation::TexSubImage2D(
GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, const void* pixels) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glTexSubImage2D("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glTexSubImage2D("
<< GLES2Util::GetStringTextureTarget(target) << ", "
<< level << ", "
<< xoffset << ", " << yoffset << ", "
@@ -1976,7 +1988,7 @@ void GLES2Implementation::GetActiveAttrib(
GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
GLenum* type, char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetActiveAttrib("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetActiveAttrib("
<< program << ", " << index << ", " << bufsize << ", "
<< static_cast<const void*>(length) << ", "
<< static_cast<const void*>(size) << ", "
@@ -2046,7 +2058,7 @@ void GLES2Implementation::GetActiveUniform(
GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
GLenum* type, char* name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetActiveUniform("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetActiveUniform("
<< program << ", " << index << ", " << bufsize << ", "
<< static_cast<const void*>(length) << ", "
<< static_cast<const void*>(size) << ", "
@@ -2075,7 +2087,7 @@ void GLES2Implementation::GetActiveUniform(
void GLES2Implementation::GetAttachedShaders(
GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetAttachedShaders("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetAttachedShaders("
<< program << ", " << maxcount << ", "
<< static_cast<const void*>(count) << ", "
<< static_cast<const void*>(shaders) << ", ");
@@ -2113,7 +2125,7 @@ void GLES2Implementation::GetAttachedShaders(
void GLES2Implementation::GetShaderPrecisionFormat(
GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetShaderPrecisionFormat("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetShaderPrecisionFormat("
<< GLES2Util::GetStringShaderType(shadertype) << ", "
<< GLES2Util::GetStringShaderPrecision(precisiontype) << ", "
<< static_cast<const void*>(range) << ", "
@@ -2189,7 +2201,7 @@ const GLubyte* GLES2Implementation::GetStringHelper(GLenum name) {
const GLubyte* GLES2Implementation::GetString(GLenum name) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetString("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetString("
<< GLES2Util::GetStringStringType(name) << ")");
const GLubyte* result = GetStringHelper(name);
GPU_CLIENT_LOG(" returned " << reinterpret_cast<const char*>(result));
@@ -2199,7 +2211,7 @@ const GLubyte* GLES2Implementation::GetString(GLenum name) {
void GLES2Implementation::GetUniformfv(
GLuint program, GLint location, GLfloat* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetUniformfv("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetUniformfv("
<< program << ", " << location << ", "
<< static_cast<const void*>(params) << ")");
TRACE_EVENT0("gpu", "GLES2::GetUniformfv");
@@ -2223,7 +2235,7 @@ void GLES2Implementation::GetUniformfv(
void GLES2Implementation::GetUniformiv(
GLuint program, GLint location, GLint* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetUniformiv("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetUniformiv("
<< program << ", " << location << ", "
<< static_cast<const void*>(params) << ")");
TRACE_EVENT0("gpu", "GLES2::GetUniformiv");
@@ -2248,7 +2260,7 @@ void GLES2Implementation::ReadPixels(
GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format,
GLenum type, void* pixels) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glReadPixels("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glReadPixels("
<< xoffset << ", " << yoffset << ", "
<< width << ", " << height << ", "
<< GLES2Util::GetStringReadPixelFormat(format) << ", "
@@ -2336,7 +2348,7 @@ void GLES2Implementation::ReadPixels(
void GLES2Implementation::ActiveTexture(GLenum texture) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glActiveTexture("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glActiveTexture("
<< GLES2Util::GetStringEnum(texture) << ")");
GLuint texture_index = texture - GL_TEXTURE0;
if (texture_index >= static_cast<GLuint>(
@@ -2537,7 +2549,7 @@ void GLES2Implementation::DeleteTexturesStub(
void GLES2Implementation::DisableVertexAttribArray(GLuint index) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG(
- "[" << this << "] glDisableVertexAttribArray(" << index << ")");
+ "[" << GetLogPrefix() << "] glDisableVertexAttribArray(" << index << ")");
#if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
client_side_buffer_helper_->SetAttribEnable(index, false);
#endif
@@ -2546,7 +2558,8 @@ void GLES2Implementation::DisableVertexAttribArray(GLuint index) {
void GLES2Implementation::EnableVertexAttribArray(GLuint index) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glEnableVertexAttribArray(" << index << ")");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glEnableVertexAttribArray("
+ << index << ")");
#if defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS)
client_side_buffer_helper_->SetAttribEnable(index, true);
#endif
@@ -2555,7 +2568,7 @@ void GLES2Implementation::EnableVertexAttribArray(GLuint index) {
void GLES2Implementation::DrawArrays(GLenum mode, GLint first, GLsizei count) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glDrawArrays("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDrawArrays("
<< GLES2Util::GetStringDrawMode(mode) << ", "
<< first << ", " << count << ")");
if (count < 0) {
@@ -2620,7 +2633,7 @@ bool GLES2Implementation::GetVertexAttribHelper(
void GLES2Implementation::GetVertexAttribfv(
GLuint index, GLenum pname, GLfloat* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetVertexAttribfv("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetVertexAttribfv("
<< index << ", "
<< GLES2Util::GetStringVertexAttribute(pname) << ", "
<< static_cast<const void*>(params) << ")");
@@ -2652,7 +2665,7 @@ void GLES2Implementation::GetVertexAttribfv(
void GLES2Implementation::GetVertexAttribiv(
GLuint index, GLenum pname, GLint* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetVertexAttribiv("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetVertexAttribiv("
<< index << ", "
<< GLES2Util::GetStringVertexAttribute(pname) << ", "
<< static_cast<const void*>(params) << ")");
@@ -2684,7 +2697,7 @@ void GLES2Implementation::GetVertexAttribiv(
GLboolean GLES2Implementation::EnableFeatureCHROMIUM(
const char* feature) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glEnableFeatureCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glEnableFeatureCHROMIUM("
<< feature << ")");
TRACE_EVENT0("gpu", "GLES2::EnableFeatureCHROMIUM");
typedef EnableFeatureCHROMIUM::Result Result;
@@ -2705,7 +2718,7 @@ GLboolean GLES2Implementation::EnableFeatureCHROMIUM(
void* GLES2Implementation::MapBufferSubDataCHROMIUM(
GLuint target, GLintptr offset, GLsizeiptr size, GLenum access) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glMapBufferSubDataCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glMapBufferSubDataCHROMIUM("
<< target << ", " << offset << ", " << size << ", "
<< GLES2Util::GetStringEnum(access) << ")");
// NOTE: target is NOT checked because the service will check it
@@ -2740,7 +2753,7 @@ void* GLES2Implementation::MapBufferSubDataCHROMIUM(
void GLES2Implementation::UnmapBufferSubDataCHROMIUM(const void* mem) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG(
- "[" << this << "] glUnmapBufferSubDataCHROMIUM(" << mem << ")");
+ "[" << GetLogPrefix() << "] glUnmapBufferSubDataCHROMIUM(" << mem << ")");
MappedBufferMap::iterator it = mapped_buffers_.find(mem);
if (it == mapped_buffers_.end()) {
SetGLError(
@@ -2765,7 +2778,7 @@ void* GLES2Implementation::MapTexSubImage2DCHROMIUM(
GLenum type,
GLenum access) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glMapTexSubImage2DCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glMapTexSubImage2DCHROMIUM("
<< target << ", " << level << ", "
<< xoffset << ", " << yoffset << ", "
<< width << ", " << height << ", "
@@ -2813,7 +2826,7 @@ void* GLES2Implementation::MapTexSubImage2DCHROMIUM(
void GLES2Implementation::UnmapTexSubImage2DCHROMIUM(const void* mem) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG(
- "[" << this << "] glUnmapTexSubImage2DCHROMIUM(" << mem << ")");
+ "[" << GetLogPrefix() << "] glUnmapTexSubImage2DCHROMIUM(" << mem << ")");
MappedTextureMap::iterator it = mapped_textures_.find(mem);
if (it == mapped_textures_.end()) {
SetGLError(
@@ -2830,14 +2843,15 @@ void GLES2Implementation::UnmapTexSubImage2DCHROMIUM(const void* mem) {
void GLES2Implementation::ResizeCHROMIUM(GLuint width, GLuint height) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glResizeCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glResizeCHROMIUM("
<< width << ", " << height << ")");
helper_->ResizeCHROMIUM(width, height);
}
const GLchar* GLES2Implementation::GetRequestableExtensionsCHROMIUM() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetRequestableExtensionsCHROMIUM()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix()
+ << "] glGetRequestableExtensionsCHROMIUM()");
TRACE_EVENT0("gpu",
"GLES2Implementation::GetRequestableExtensionsCHROMIUM()");
const char* result = NULL;
@@ -2867,7 +2881,7 @@ const GLchar* GLES2Implementation::GetRequestableExtensionsCHROMIUM() {
void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glRequestExtensionCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRequestExtensionCHROMIUM("
<< extension << ")");
SetBucketAsCString(kResultBucketId, extension);
helper_->RequestExtensionCHROMIUM(kResultBucketId);
@@ -2880,7 +2894,7 @@ void GLES2Implementation::RequestExtensionCHROMIUM(const char* extension) {
void GLES2Implementation::RateLimitOffscreenContextCHROMIUM() {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glRateLimitOffscreenCHROMIUM()");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glRateLimitOffscreenCHROMIUM()");
// Wait if this would add too many rate limit tokens.
if (rate_limit_tokens_.size() == kMaxSwapBuffers) {
helper_->WaitForToken(rate_limit_tokens_.front());
@@ -2892,7 +2906,7 @@ void GLES2Implementation::RateLimitOffscreenContextCHROMIUM() {
void GLES2Implementation::GetMultipleIntegervCHROMIUM(
const GLenum* pnames, GLuint count, GLint* results, GLsizeiptr size) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGetMultipleIntegervCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetMultipleIntegervCHROMIUM("
<< static_cast<const void*>(pnames) << ", "
<< count << ", " << results << ", " << size << ")");
GPU_CLIENT_LOG_CODE_BLOCK({
@@ -2993,7 +3007,7 @@ void GLES2Implementation::GetProgramInfoCHROMIUM(
GLuint GLES2Implementation::CreateStreamTextureCHROMIUM(GLuint texture) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] CreateStreamTextureCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] CreateStreamTextureCHROMIUM("
<< texture << ")");
TRACE_EVENT0("gpu", "GLES2::CreateStreamTextureCHROMIUM");
typedef CreateStreamTextureCHROMIUM::Result Result;
@@ -3013,7 +3027,7 @@ GLuint GLES2Implementation::CreateStreamTextureCHROMIUM(GLuint texture) {
void GLES2Implementation::DestroyStreamTextureCHROMIUM(GLuint texture) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] DestroyStreamTextureCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] DestroyStreamTextureCHROMIUM("
<< texture << ")");
TRACE_EVENT0("gpu", "GLES2::DestroyStreamTextureCHROMIUM");
helper_->DestroyStreamTextureCHROMIUM(texture);
@@ -3022,7 +3036,7 @@ void GLES2Implementation::DestroyStreamTextureCHROMIUM(GLuint texture) {
void GLES2Implementation::PostSubBufferCHROMIUM(
GLint x, GLint y, GLint width, GLint height) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] PostSubBufferCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] PostSubBufferCHROMIUM("
<< x << ", " << y << ", " << width << ", " << height << ")");
TRACE_EVENT0("gpu", "GLES2::PostSubBufferCHROMIUM");
@@ -3086,7 +3100,7 @@ void GLES2Implementation::DeleteQueriesStub(
GLboolean GLES2Implementation::IsQueryEXT(GLuint id) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] IsQueryEXT(" << id << ")");
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] IsQueryEXT(" << id << ")");
// TODO(gman): To be spec compliant IDs from other contexts sharing
// resources need to return true here even though you can't share
@@ -3096,7 +3110,7 @@ GLboolean GLES2Implementation::IsQueryEXT(GLuint id) {
void GLES2Implementation::BeginQueryEXT(GLenum target, GLuint id) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] BeginQueryEXT("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] BeginQueryEXT("
<< GLES2Util::GetStringQueryTarget(target)
<< ", " << id << ")");
@@ -3136,7 +3150,7 @@ void GLES2Implementation::BeginQueryEXT(GLenum target, GLuint id) {
void GLES2Implementation::EndQueryEXT(GLenum target) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] EndQueryEXT("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] EndQueryEXT("
<< GLES2Util::GetStringQueryTarget(target) << ")");
// Don't do anything if the context is lost.
if (context_lost_) {
@@ -3161,7 +3175,7 @@ void GLES2Implementation::EndQueryEXT(GLenum target) {
void GLES2Implementation::GetQueryivEXT(
GLenum target, GLenum pname, GLint* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] GetQueryivEXT("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] GetQueryivEXT("
<< GLES2Util::GetStringQueryTarget(target) << ", "
<< GLES2Util::GetStringQueryParameter(pname) << ", "
<< static_cast<const void*>(params) << ")");
@@ -3178,7 +3192,7 @@ void GLES2Implementation::GetQueryivEXT(
void GLES2Implementation::GetQueryObjectuivEXT(
GLuint id, GLenum pname, GLuint* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] GetQueryivEXT(" << id << ", "
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] GetQueryivEXT(" << id << ", "
<< GLES2Util::GetStringQueryObjectParameter(pname) << ", "
<< static_cast<const void*>(params) << ")");
@@ -3232,7 +3246,7 @@ void GLES2Implementation::GetQueryObjectuivEXT(
void GLES2Implementation::DrawArraysInstancedANGLE(
GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glDrawArraysInstancedANGLE("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDrawArraysInstancedANGLE("
<< GLES2Util::GetStringDrawMode(mode) << ", "
<< first << ", " << count << ", " << primcount << ")");
if (count < 0) {
@@ -3267,7 +3281,7 @@ void GLES2Implementation::DrawElementsInstancedANGLE(
GLenum mode, GLsizei count, GLenum type, const void* indices,
GLsizei primcount) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glDrawElementsInstancedANGLE("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glDrawElementsInstancedANGLE("
<< GLES2Util::GetStringDrawMode(mode) << ", "
<< count << ", "
<< GLES2Util::GetStringIndexType(type) << ", "
@@ -3332,7 +3346,7 @@ void GLES2Implementation::DrawElementsInstancedANGLE(
void GLES2Implementation::GenMailboxCHROMIUM(
GLbyte* mailbox) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
- GPU_CLIENT_LOG("[" << this << "] glGenMailboxCHROMIUM("
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGenMailboxCHROMIUM("
<< static_cast<const void*>(mailbox) << ")");
TRACE_EVENT0("gpu", "GLES2::GenMailboxCHROMIUM");
@@ -3344,5 +3358,46 @@ void GLES2Implementation::GenMailboxCHROMIUM(
std::copy(result.begin(), result.end(), mailbox);
}
+void GLES2Implementation::PushGroupMarkerEXT(
+ GLsizei length, const GLchar* marker) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPushGroupMarkerEXT("
+ << length << ", " << marker << ")");
+ if (!marker) {
+ marker = "";
+ }
+ SetBucketAsString(
+ kResultBucketId,
+ (length ? std::string(marker, length) : std::string(marker)));
+ helper_->PushGroupMarkerEXT(kResultBucketId);
+ helper_->SetBucketSize(kResultBucketId, 0);
+ debug_marker_manager_.PushGroup(
+ length ? std::string(marker, length) : std::string(marker));
+}
+
+void GLES2Implementation::InsertEventMarkerEXT(
+ GLsizei length, const GLchar* marker) {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glInsertEventMarkerEXT("
+ << length << ", " << marker << ")");
+ if (!marker) {
+ marker = "";
+ }
+ SetBucketAsString(
+ kResultBucketId,
+ (length ? std::string(marker, length) : std::string(marker)));
+ helper_->InsertEventMarkerEXT(kResultBucketId);
+ helper_->SetBucketSize(kResultBucketId, 0);
+ debug_marker_manager_.SetMarker(
+ length ? std::string(marker, length) : std::string(marker));
+}
+
+void GLES2Implementation::PopGroupMarkerEXT() {
+ GPU_CLIENT_SINGLE_THREAD_CHECK();
+ GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glPopGroupMarkerEXT()");
+ helper_->PopGroupMarkerEXT();
+ debug_marker_manager_.PopGroup();
+}
+
} // namespace gles2
} // namespace gpu
diff --git a/gpu/command_buffer/client/gles2_implementation.h b/gpu/command_buffer/client/gles2_implementation.h
index 44fcc891..04e2c8a 100644
--- a/gpu/command_buffer/client/gles2_implementation.h
+++ b/gpu/command_buffer/client/gles2_implementation.h
@@ -13,6 +13,7 @@
#include <string>
#include <vector>
+#include "../common/debug_marker_manager.h"
#include "../common/gles2_cmd_utils.h"
#include "../common/scoped_ptr.h"
#include "../client/ref_counted.h"
@@ -468,10 +469,14 @@ class GLES2_IMPL_EXPORT GLES2Implementation {
// for error checking.
bool MustBeContextLost();
+ const std::string& GetLogPrefix() const;
+
GLES2Util util_;
GLES2CmdHelper* helper_;
TransferBufferInterface* transfer_buffer_;
std::string last_error_;
+ DebugMarkerManager debug_marker_manager_;
+ std::string this_in_hex_;
std::queue<int32> swap_buffers_tokens_;
std::queue<int32> rate_limit_tokens_;
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index f4c5920..1dd7de9 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -1432,6 +1432,12 @@ void GetQueryivEXT(GLenum target, GLenum pname, GLint* params);
void GetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* params);
+void InsertEventMarkerEXT(GLsizei length, const GLchar* marker);
+
+void PushGroupMarkerEXT(GLsizei length, const GLchar* marker);
+
+void PopGroupMarkerEXT();
+
void SwapBuffers();
GLuint GetMaxValueInBufferCHROMIUM(
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index 8e977e7..ddf5d71 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -1594,6 +1594,19 @@ TEST_F(GLES2ImplementationTest, DeleteQueriesEXT) {
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
// TODO: Implement unit test for BeginQueryEXT
+// TODO: Implement unit test for InsertEventMarkerEXT
+// TODO: Implement unit test for PushGroupMarkerEXT
+
+TEST_F(GLES2ImplementationTest, PopGroupMarkerEXT) {
+ struct Cmds {
+ PopGroupMarkerEXT cmd;
+ };
+ Cmds expected;
+ expected.cmd.Init();
+
+ gl_->PopGroupMarkerEXT();
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
// TODO: Implement unit test for GenSharedIdsCHROMIUM
// TODO: Implement unit test for DeleteSharedIdsCHROMIUM
// TODO: Implement unit test for RegisterSharedIdsCHROMIUM
diff --git a/gpu/command_buffer/cmd_buffer_functions.txt b/gpu/command_buffer/cmd_buffer_functions.txt
index a46a415..ca64fdc 100644
--- a/gpu/command_buffer/cmd_buffer_functions.txt
+++ b/gpu/command_buffer/cmd_buffer_functions.txt
@@ -157,6 +157,10 @@ GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenumQueryTarget target, G
GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenumQueryTarget target);
GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenumQueryTarget target, GLenumQueryParameter pname, GLint* params);
GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLidQuery id, GLenumQueryObjectParameter pname, GLuint* params);
+GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar* marker);
+GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar* marker);
+GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);
+
// Non-GL commands.
GL_APICALL void GL_APIENTRY glSwapBuffers (void);
GL_APICALL GLuint GL_APIENTRY glGetMaxValueInBufferCHROMIUM (GLidBuffer buffer_id, GLsizei count, GLenumGetMaxIndexType type, GLuint offset);
diff --git a/gpu/command_buffer/common/debug_marker_manager.cc b/gpu/command_buffer/common/debug_marker_manager.cc
new file mode 100644
index 0000000..f0127d5
--- /dev/null
+++ b/gpu/command_buffer/common/debug_marker_manager.cc
@@ -0,0 +1,51 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "gpu/command_buffer/common/debug_marker_manager.h"
+
+namespace gpu {
+namespace gles2 {
+
+DebugMarkerManager::Group::Group(const std::string& name)
+ : name_(name),
+ marker_(name) {
+}
+
+DebugMarkerManager::Group::~Group() {
+}
+
+void DebugMarkerManager::Group::SetMarker(const std::string& marker) {
+ marker_ = name_ + "." + marker;
+}
+
+DebugMarkerManager::DebugMarkerManager() {
+ // Push root group.
+ group_stack_.push(Group(std::string("")));
+};
+
+DebugMarkerManager::~DebugMarkerManager() {
+}
+
+void DebugMarkerManager::SetMarker(const std::string& marker) {
+ group_stack_.top().SetMarker(marker);
+}
+
+const std::string& DebugMarkerManager::GetMarker() const {
+ return group_stack_.top().marker();
+}
+
+void DebugMarkerManager::PushGroup(const std::string& name) {
+ group_stack_.push(Group(group_stack_.top().name() + "." + name));
+}
+
+void DebugMarkerManager::PopGroup(void) {
+ if (group_stack_.size() > 1) {
+ group_stack_.pop();
+ }
+}
+
+} // namespace gles2
+} // namespace gpu
+
+
diff --git a/gpu/command_buffer/common/debug_marker_manager.h b/gpu/command_buffer/common/debug_marker_manager.h
new file mode 100644
index 0000000..d7f8389
--- /dev/null
+++ b/gpu/command_buffer/common/debug_marker_manager.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef GPU_COMMAND_BUFFER_SERVICE_DEBUG_MARKER_MANAGER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_DEBUG_MARKER_MANAGER_H_
+
+#include <stack>
+#include <string>
+#include "../../gpu_export.h"
+
+namespace gpu {
+namespace gles2 {
+
+// Tracks debug marker.
+class GPU_EXPORT DebugMarkerManager {
+ public:
+ DebugMarkerManager();
+ ~DebugMarkerManager();
+
+ // Gets the current marker on the top group.
+ const std::string& GetMarker() const;
+ // Sets the current marker on the top group.
+ void SetMarker(const std::string& marker);
+ // Pushes a new group.
+ void PushGroup(const std::string& name);
+ // Removes the top group. This is safe to call even when stack is empty.
+ void PopGroup(void);
+
+ private:
+ // Info about Buffers currently in the system.
+ class Group {
+ public:
+ explicit Group(const std::string& name);
+ ~Group();
+
+ const std::string& name() const {
+ return name_;
+ }
+
+ void SetMarker(const std::string& marker);
+
+ const std::string& marker() const {
+ return marker_;
+ }
+
+ private:
+ std::string name_;
+ std::string marker_;
+ };
+
+ typedef std::stack<Group> GroupStack;
+
+ GroupStack group_stack_;
+ std::string empty_;
+};
+
+} // namespace gles2
+} // namespace gpu
+
+#endif // GPU_COMMAND_BUFFER_SERVICE_DEBUG_MARKER_MANAGER_H_
+
diff --git a/gpu/command_buffer/common/debug_marker_manager_unittest.cc b/gpu/command_buffer/common/debug_marker_manager_unittest.cc
new file mode 100644
index 0000000..c64297d
--- /dev/null
+++ b/gpu/command_buffer/common/debug_marker_manager_unittest.cc
@@ -0,0 +1,63 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "gpu/command_buffer/common/debug_marker_manager.h"
+#include "gpu/command_buffer/common/gl_mock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace gpu {
+namespace gles2 {
+
+class DebugMarkerManagerTest : public testing::Test {
+ protected:
+ virtual void SetUp() {
+ }
+
+ virtual void TearDown() {
+ }
+
+ DebugMarkerManager manager_;
+};
+
+TEST_F(DebugMarkerManagerTest, Basic) {
+ // Test we can get root
+ EXPECT_STREQ("", manager_.GetMarker().c_str());
+ // Test it's safe to pop an empty stack.
+ manager_.PopGroup();
+ // Test we can still get root.
+ EXPECT_STREQ("", manager_.GetMarker().c_str());
+ // Test setting a marker.
+ manager_.SetMarker("mark1");
+ EXPECT_STREQ(".mark1", manager_.GetMarker().c_str());
+ manager_.SetMarker("mark2");
+ EXPECT_STREQ(".mark2", manager_.GetMarker().c_str());
+ // Test pushing a group.
+ manager_.PushGroup("abc");
+ EXPECT_STREQ(".abc", manager_.GetMarker().c_str());
+ // Test setting a marker on the group
+ manager_.SetMarker("mark3");
+ EXPECT_STREQ(".abc.mark3", manager_.GetMarker().c_str());
+ manager_.SetMarker("mark4");
+ EXPECT_STREQ(".abc.mark4", manager_.GetMarker().c_str());
+ // Test pushing a 2nd group.
+ manager_.PushGroup("def");
+ EXPECT_STREQ(".abc.def", manager_.GetMarker().c_str());
+ // Test setting a marker on the group
+ manager_.SetMarker("mark5");
+ EXPECT_STREQ(".abc.def.mark5", manager_.GetMarker().c_str());
+ manager_.SetMarker("mark6");
+ EXPECT_STREQ(".abc.def.mark6", manager_.GetMarker().c_str());
+ // Test poping 2nd group.
+ manager_.PopGroup();
+ EXPECT_STREQ(".abc.mark4", manager_.GetMarker().c_str());
+ manager_.PopGroup();
+ EXPECT_STREQ(".mark2", manager_.GetMarker().c_str());
+ manager_.PopGroup();
+ EXPECT_STREQ(".mark2", manager_.GetMarker().c_str());
+}
+
+} // namespace gles2
+} // namespace gpu
+
+
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index b45640b..d6978d4 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -8786,6 +8786,104 @@ COMPILE_ASSERT(offsetof(EndQueryEXT, target) == 4,
COMPILE_ASSERT(offsetof(EndQueryEXT, submit_count) == 8,
OffsetOf_EndQueryEXT_submit_count_not_8);
+struct InsertEventMarkerEXT {
+ typedef InsertEventMarkerEXT ValueType;
+ static const CommandId kCmdId = kInsertEventMarkerEXT;
+ static const cmd::ArgFlags kArgFlags = cmd::kFixed;
+
+ static uint32 ComputeSize() {
+ return static_cast<uint32>(sizeof(ValueType)); // NOLINT
+ }
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(GLuint _bucket_id) {
+ SetHeader();
+ bucket_id = _bucket_id;
+ }
+
+ void* Set(void* cmd, GLuint _bucket_id) {
+ static_cast<ValueType*>(cmd)->Init(_bucket_id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32 bucket_id;
+};
+
+COMPILE_ASSERT(sizeof(InsertEventMarkerEXT) == 8,
+ Sizeof_InsertEventMarkerEXT_is_not_8);
+COMPILE_ASSERT(offsetof(InsertEventMarkerEXT, header) == 0,
+ OffsetOf_InsertEventMarkerEXT_header_not_0);
+COMPILE_ASSERT(offsetof(InsertEventMarkerEXT, bucket_id) == 4,
+ OffsetOf_InsertEventMarkerEXT_bucket_id_not_4);
+
+struct PushGroupMarkerEXT {
+ typedef PushGroupMarkerEXT ValueType;
+ static const CommandId kCmdId = kPushGroupMarkerEXT;
+ static const cmd::ArgFlags kArgFlags = cmd::kFixed;
+
+ static uint32 ComputeSize() {
+ return static_cast<uint32>(sizeof(ValueType)); // NOLINT
+ }
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init(GLuint _bucket_id) {
+ SetHeader();
+ bucket_id = _bucket_id;
+ }
+
+ void* Set(void* cmd, GLuint _bucket_id) {
+ static_cast<ValueType*>(cmd)->Init(_bucket_id);
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+ uint32 bucket_id;
+};
+
+COMPILE_ASSERT(sizeof(PushGroupMarkerEXT) == 8,
+ Sizeof_PushGroupMarkerEXT_is_not_8);
+COMPILE_ASSERT(offsetof(PushGroupMarkerEXT, header) == 0,
+ OffsetOf_PushGroupMarkerEXT_header_not_0);
+COMPILE_ASSERT(offsetof(PushGroupMarkerEXT, bucket_id) == 4,
+ OffsetOf_PushGroupMarkerEXT_bucket_id_not_4);
+
+struct PopGroupMarkerEXT {
+ typedef PopGroupMarkerEXT ValueType;
+ static const CommandId kCmdId = kPopGroupMarkerEXT;
+ static const cmd::ArgFlags kArgFlags = cmd::kFixed;
+
+ static uint32 ComputeSize() {
+ return static_cast<uint32>(sizeof(ValueType)); // NOLINT
+ }
+
+ void SetHeader() {
+ header.SetCmd<ValueType>();
+ }
+
+ void Init() {
+ SetHeader();
+ }
+
+ void* Set(void* cmd) {
+ static_cast<ValueType*>(cmd)->Init();
+ return NextCmdAddress<ValueType>(cmd);
+ }
+
+ gpu::CommandHeader header;
+};
+
+COMPILE_ASSERT(sizeof(PopGroupMarkerEXT) == 4,
+ Sizeof_PopGroupMarkerEXT_is_not_4);
+COMPILE_ASSERT(offsetof(PopGroupMarkerEXT, header) == 0,
+ OffsetOf_PopGroupMarkerEXT_header_not_0);
+
struct SwapBuffers {
typedef SwapBuffers ValueType;
static const CommandId kCmdId = kSwapBuffers;
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index 7c95789..9682fc2 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -3420,6 +3420,43 @@ TEST_F(GLES2FormatTest, EndQueryEXT) {
next_cmd, sizeof(cmd));
}
+TEST_F(GLES2FormatTest, InsertEventMarkerEXT) {
+ InsertEventMarkerEXT& cmd = *GetBufferAs<InsertEventMarkerEXT>();
+ void* next_cmd = cmd.Set(
+ &cmd,
+ static_cast<GLuint>(11));
+ EXPECT_EQ(static_cast<uint32>(InsertEventMarkerEXT::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, PushGroupMarkerEXT) {
+ PushGroupMarkerEXT& cmd = *GetBufferAs<PushGroupMarkerEXT>();
+ void* next_cmd = cmd.Set(
+ &cmd,
+ static_cast<GLuint>(11));
+ EXPECT_EQ(static_cast<uint32>(PushGroupMarkerEXT::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ EXPECT_EQ(static_cast<GLuint>(11), cmd.bucket_id);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd));
+}
+
+TEST_F(GLES2FormatTest, PopGroupMarkerEXT) {
+ PopGroupMarkerEXT& cmd = *GetBufferAs<PopGroupMarkerEXT>();
+ void* next_cmd = cmd.Set(
+ &cmd);
+ EXPECT_EQ(static_cast<uint32>(PopGroupMarkerEXT::kCmdId),
+ cmd.header.command);
+ EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+ CheckBytesWrittenMatchesExpectedSize(
+ next_cmd, sizeof(cmd));
+}
+
TEST_F(GLES2FormatTest, SwapBuffers) {
SwapBuffers& cmd = *GetBufferAs<SwapBuffers>();
void* next_cmd = cmd.Set(
diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
index decd48b..1bc9ac6 100644
--- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
@@ -202,34 +202,37 @@
OP(DeleteQueriesEXTImmediate) /* 445 */ \
OP(BeginQueryEXT) /* 446 */ \
OP(EndQueryEXT) /* 447 */ \
- OP(SwapBuffers) /* 448 */ \
- OP(GetMaxValueInBufferCHROMIUM) /* 449 */ \
- OP(GenSharedIdsCHROMIUM) /* 450 */ \
- OP(DeleteSharedIdsCHROMIUM) /* 451 */ \
- OP(RegisterSharedIdsCHROMIUM) /* 452 */ \
- OP(EnableFeatureCHROMIUM) /* 453 */ \
- OP(ResizeCHROMIUM) /* 454 */ \
- OP(GetRequestableExtensionsCHROMIUM) /* 455 */ \
- OP(RequestExtensionCHROMIUM) /* 456 */ \
- OP(GetMultipleIntegervCHROMIUM) /* 457 */ \
- OP(GetProgramInfoCHROMIUM) /* 458 */ \
- OP(CreateStreamTextureCHROMIUM) /* 459 */ \
- OP(DestroyStreamTextureCHROMIUM) /* 460 */ \
- OP(GetTranslatedShaderSourceANGLE) /* 461 */ \
- OP(PostSubBufferCHROMIUM) /* 462 */ \
- OP(TexImageIOSurface2DCHROMIUM) /* 463 */ \
- OP(CopyTextureCHROMIUM) /* 464 */ \
- OP(DrawArraysInstancedANGLE) /* 465 */ \
- OP(DrawElementsInstancedANGLE) /* 466 */ \
- OP(VertexAttribDivisorANGLE) /* 467 */ \
- OP(GenMailboxCHROMIUM) /* 468 */ \
- OP(ProduceTextureCHROMIUM) /* 469 */ \
- OP(ProduceTextureCHROMIUMImmediate) /* 470 */ \
- OP(ConsumeTextureCHROMIUM) /* 471 */ \
- OP(ConsumeTextureCHROMIUMImmediate) /* 472 */ \
- OP(BindUniformLocationCHROMIUM) /* 473 */ \
- OP(BindUniformLocationCHROMIUMImmediate) /* 474 */ \
- OP(BindUniformLocationCHROMIUMBucket) /* 475 */ \
+ OP(InsertEventMarkerEXT) /* 448 */ \
+ OP(PushGroupMarkerEXT) /* 449 */ \
+ OP(PopGroupMarkerEXT) /* 450 */ \
+ OP(SwapBuffers) /* 451 */ \
+ OP(GetMaxValueInBufferCHROMIUM) /* 452 */ \
+ OP(GenSharedIdsCHROMIUM) /* 453 */ \
+ OP(DeleteSharedIdsCHROMIUM) /* 454 */ \
+ OP(RegisterSharedIdsCHROMIUM) /* 455 */ \
+ OP(EnableFeatureCHROMIUM) /* 456 */ \
+ OP(ResizeCHROMIUM) /* 457 */ \
+ OP(GetRequestableExtensionsCHROMIUM) /* 458 */ \
+ OP(RequestExtensionCHROMIUM) /* 459 */ \
+ OP(GetMultipleIntegervCHROMIUM) /* 460 */ \
+ OP(GetProgramInfoCHROMIUM) /* 461 */ \
+ OP(CreateStreamTextureCHROMIUM) /* 462 */ \
+ OP(DestroyStreamTextureCHROMIUM) /* 463 */ \
+ OP(GetTranslatedShaderSourceANGLE) /* 464 */ \
+ OP(PostSubBufferCHROMIUM) /* 465 */ \
+ OP(TexImageIOSurface2DCHROMIUM) /* 466 */ \
+ OP(CopyTextureCHROMIUM) /* 467 */ \
+ OP(DrawArraysInstancedANGLE) /* 468 */ \
+ OP(DrawElementsInstancedANGLE) /* 469 */ \
+ OP(VertexAttribDivisorANGLE) /* 470 */ \
+ OP(GenMailboxCHROMIUM) /* 471 */ \
+ OP(ProduceTextureCHROMIUM) /* 472 */ \
+ OP(ProduceTextureCHROMIUMImmediate) /* 473 */ \
+ OP(ConsumeTextureCHROMIUM) /* 474 */ \
+ OP(ConsumeTextureCHROMIUMImmediate) /* 475 */ \
+ OP(BindUniformLocationCHROMIUM) /* 476 */ \
+ OP(BindUniformLocationCHROMIUMImmediate) /* 477 */ \
+ OP(BindUniformLocationCHROMIUMBucket) /* 478 */ \
enum CommandId {
kStartPoint = cmd::kLastCommonId, // All GLES2 commands start after this.
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index c7321de..c195084 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -227,6 +227,7 @@ void FeatureInfo::AddFeatures(const char* desired_features) {
AddExtensionString("GL_CHROMIUM_set_visibility");
AddExtensionString("GL_CHROMIUM_strict_attribs");
AddExtensionString("GL_CHROMIUM_texture_mailbox");
+ AddExtensionString("GL_EXT_debug_marker");
if (!disallowed_features_.gpu_memory_manager)
AddExtensionString("GL_CHROMIUM_gpu_memory_manager");
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 21bc59f..fe8961e 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -27,6 +27,7 @@
#define GLES2_GPU_SERVICE 1
#include "gpu/command_buffer/common/gles2_cmd_format.h"
#include "gpu/command_buffer/common/gles2_cmd_utils.h"
+#include "gpu/command_buffer/common/debug_marker_manager.h"
#include "gpu/command_buffer/common/id_allocator.h"
#include "gpu/command_buffer/service/buffer_manager.h"
#include "gpu/command_buffer/service/cmd_buffer_engine.h"
@@ -1175,6 +1176,10 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
// Wrapper for glValidateProgram.
void DoValidateProgram(GLuint program_client_id);
+ void DoInsertEventMarkerEXT(GLsizei length, const GLchar* marker);
+ void DoPushGroupMarkerEXT(GLsizei length, const GLchar* group);
+ void DoPopGroupMarkerEXT(void);
+
// Gets the number of values that will be returned by glGetXXX. Returns
// false if pname is unknown.
bool GetNumValuesReturnedForGLGet(GLenum pname, GLsizei* num_values);
@@ -1355,6 +1360,7 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
void LogMessage(const std::string& msg);
void RenderWarning(const std::string& msg);
void PerformanceWarning(const std::string& msg);
+ const std::string& GetLogPrefix() const;
bool ShouldDeferDraws() {
return !offscreen_target_frame_buffer_.get() &&
@@ -1527,6 +1533,9 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
// The current decoder error.
error::Error current_decoder_error_;
+ DebugMarkerManager debug_marker_manager_;
+ std::string this_in_hex_;
+
bool use_shader_translator_;
scoped_refptr<ShaderTranslator> vertex_translator_;
scoped_refptr<ShaderTranslator> fragment_translator_;
@@ -1982,6 +1991,9 @@ GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group)
viewport_max_height_(0) {
DCHECK(group);
+ GLES2DecoderImpl* this_temp = this;
+ this_in_hex_ = HexEncode(&this_temp, sizeof(this_temp));
+
attrib_0_value_.v[0] = 0.0f;
attrib_0_value_.v[1] = 0.0f;
attrib_0_value_.v[2] = 0.0f;
@@ -3200,7 +3212,8 @@ error::Error GLES2DecoderImpl::DoCommand(
if (log_commands()) {
// TODO(notme): Change this to a LOG/VLOG that works in release. Tried
// LOG(INFO), tried VLOG(1), no luck.
- LOG(ERROR) << "[" << this << "]" << "cmd: " << GetCommandName(command);
+ LOG(ERROR) << "[" << GetLogPrefix() << "]" << "cmd: "
+ << GetCommandName(command);
}
unsigned int command_index = command - kStartPoint - 1;
if (command_index < arraysize(g_command_info)) {
@@ -3224,7 +3237,7 @@ error::Error GLES2DecoderImpl::DoCommand(
if (debug()) {
GLenum error;
while ((error = glGetError()) != GL_NO_ERROR) {
- LOG(ERROR) << "[" << this << "] "
+ LOG(ERROR) << "[" << GetLogPrefix() << "] "
<< "GL ERROR: " << GLES2Util::GetStringEnum(error) << " : "
<< GetCommandName(command);
SetGLError(error, "DoCommand", "GL error from driver");
@@ -5095,13 +5108,18 @@ void GLES2DecoderImpl::SetGLError(
GLenum error, const char* function_name, const char* msg) {
if (msg) {
last_error_ = msg;
- LogMessage(std::string("GL ERROR :") +
+ LogMessage(GetLogPrefix() + ": " + std::string("GL ERROR :") +
GLES2Util::GetStringEnum(error) + " : " +
function_name + ": " + msg);
}
error_bits_ |= GLES2Util::GLErrorToErrorBit(error);
}
+const std::string& GLES2DecoderImpl::GetLogPrefix() const {
+ const std::string& prefix(debug_marker_manager_.GetMarker());
+ return prefix.empty() ? this_in_hex_ : prefix;
+}
+
void GLES2DecoderImpl::LogMessage(const std::string& msg) {
if (log_message_count_ < kMaxLogMessages ||
CommandLine::ForCurrentProcess()->HasSwitch(
@@ -9192,6 +9210,29 @@ void GLES2DecoderImpl::DoConsumeTextureCHROMIUM(GLenum target,
BindAndApplyTextureParameters(info);
}
+void GLES2DecoderImpl::DoInsertEventMarkerEXT(
+ GLsizei length, const GLchar* marker) {
+ if (!marker) {
+ marker = "";
+ }
+ debug_marker_manager_.SetMarker(
+ length ? std::string(marker, length) : std::string(marker));
+}
+
+void GLES2DecoderImpl::DoPushGroupMarkerEXT(
+ GLsizei length, const GLchar* marker) {
+ if (!marker) {
+ marker = "";
+ }
+ debug_marker_manager_.PushGroup(
+ length ? std::string(marker, length) : std::string(marker));
+}
+
+void GLES2DecoderImpl::DoPopGroupMarkerEXT(void) {
+ debug_marker_manager_.PopGroup();
+}
+
+
// Include the auto-generated part of this file. We split this because it means
// we can easily edit the non-auto generated parts right here in this file
// instead of having to edit some template or the code generator.
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index dc85cc2..5d1c28f 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -2644,6 +2644,42 @@ error::Error GLES2DecoderImpl::HandleDeleteQueriesEXTImmediate(
return error::kNoError;
}
+error::Error GLES2DecoderImpl::HandleInsertEventMarkerEXT(
+ uint32 immediate_data_size, const gles2::InsertEventMarkerEXT& c) {
+ GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
+ Bucket* bucket = GetBucket(bucket_id);
+ if (!bucket || bucket->size() == 0) {
+ return error::kInvalidArguments;
+ }
+ std::string str;
+ if (!bucket->GetAsString(&str)) {
+ return error::kInvalidArguments;
+ }
+ DoInsertEventMarkerEXT(0, str.c_str());
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandlePushGroupMarkerEXT(
+ uint32 immediate_data_size, const gles2::PushGroupMarkerEXT& c) {
+ GLuint bucket_id = static_cast<GLuint>(c.bucket_id);
+ Bucket* bucket = GetBucket(bucket_id);
+ if (!bucket || bucket->size() == 0) {
+ return error::kInvalidArguments;
+ }
+ std::string str;
+ if (!bucket->GetAsString(&str)) {
+ return error::kInvalidArguments;
+ }
+ DoPushGroupMarkerEXT(0, str.c_str());
+ return error::kNoError;
+}
+
+error::Error GLES2DecoderImpl::HandlePopGroupMarkerEXT(
+ uint32 immediate_data_size, const gles2::PopGroupMarkerEXT& c) {
+ DoPopGroupMarkerEXT();
+ return error::kNoError;
+}
+
error::Error GLES2DecoderImpl::HandleGetMaxValueInBufferCHROMIUM(
uint32 immediate_data_size, const gles2::GetMaxValueInBufferCHROMIUM& c) {
GLuint buffer_id = c.buffer_id;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
index c315152..e8a03a0 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
@@ -1725,11 +1725,18 @@ TEST_F(GLES2DecoderTest2, ViewportInvalidArgs3_0) {
// TODO(gman): EndQueryEXT
-// TODO(gman): SwapBuffers
-// TODO(gman): GetMaxValueInBufferCHROMIUM
-// TODO(gman): GenSharedIdsCHROMIUM
+// TODO(gman): InsertEventMarkerEXT
+
+// TODO(gman): PushGroupMarkerEXT
-// TODO(gman): DeleteSharedIdsCHROMIUM
+TEST_F(GLES2DecoderTest2, PopGroupMarkerEXTValidArgs) {
+ SpecializedSetup<PopGroupMarkerEXT, 0>(true);
+ PopGroupMarkerEXT cmd;
+ cmd.Init();
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+// TODO(gman): SwapBuffers
#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h
index 12d8e6e..f701f8b 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h
@@ -10,6 +10,11 @@
#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_
#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_3_AUTOGEN_H_
+// TODO(gman): GetMaxValueInBufferCHROMIUM
+// TODO(gman): GenSharedIdsCHROMIUM
+
+// TODO(gman): DeleteSharedIdsCHROMIUM
+
// TODO(gman): RegisterSharedIdsCHROMIUM
// TODO(gman): EnableFeatureCHROMIUM
diff --git a/gpu/command_buffer_common.gypi b/gpu/command_buffer_common.gypi
index d998321..33578af 100644
--- a/gpu/command_buffer_common.gypi
+++ b/gpu/command_buffer_common.gypi
@@ -19,6 +19,8 @@
'command_buffer/common/command_buffer.h',
'command_buffer/common/compiler_specific.h',
'command_buffer/common/constants.h',
+ 'command_buffer/common/debug_marker_manager.cc',
+ 'command_buffer/common/debug_marker_manager.h',
'command_buffer/common/gles2_cmd_ids_autogen.h',
'command_buffer/common/gles2_cmd_ids.h',
'command_buffer/common/gles2_cmd_format_autogen.h',
diff --git a/gpu/command_buffer_service.gypi b/gpu/command_buffer_service.gypi
index 46ffcf0..7c70c5d 100644
--- a/gpu/command_buffer_service.gypi
+++ b/gpu/command_buffer_service.gypi
@@ -25,8 +25,6 @@
'sources': [
'command_buffer/service/buffer_manager.h',
'command_buffer/service/buffer_manager.cc',
- 'command_buffer/service/framebuffer_manager.h',
- 'command_buffer/service/framebuffer_manager.cc',
'command_buffer/service/cmd_buffer_engine.h',
'command_buffer/service/cmd_parser.cc',
'command_buffer/service/cmd_parser.h',
@@ -38,6 +36,8 @@
'command_buffer/service/context_group.cc',
'command_buffer/service/feature_info.h',
'command_buffer/service/feature_info.cc',
+ 'command_buffer/service/framebuffer_manager.h',
+ 'command_buffer/service/framebuffer_manager.cc',
'command_buffer/service/gles2_cmd_copy_texture_chromium.cc',
'command_buffer/service/gles2_cmd_copy_texture_chromium.h',
'command_buffer/service/gles2_cmd_decoder.h',
diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp
index e1c303a..acb3b68 100644
--- a/gpu/gpu.gyp
+++ b/gpu/gpu.gyp
@@ -156,6 +156,7 @@
'command_buffer/common/command_buffer_mock.cc',
'command_buffer/common/command_buffer_mock.h',
'command_buffer/common/command_buffer_shared_test.cc',
+ 'command_buffer/common/debug_marker_manager_unittest.cc',
'command_buffer/common/gles2_cmd_format_test.cc',
'command_buffer/common/gles2_cmd_format_test_autogen.h',
'command_buffer/common/gles2_cmd_utils_unittest.cc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
index 7994bdb..558e1a9 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
@@ -24,6 +24,7 @@
],
'sources': [
'<(DEPTH)/gpu/command_buffer/common/cmd_buffer_common.cc',
+ '<(DEPTH)/gpu/command_buffer/common/debug_marker_manager.cc',
'<(DEPTH)/gpu/command_buffer/common/gles2_cmd_format.cc',
'<(DEPTH)/gpu/command_buffer/common/gles2_cmd_utils.cc',
'<(DEPTH)/gpu/command_buffer/common/logging.cc',