diff options
Diffstat (limited to 'gpu/command_buffer/client/gles2_implementation.cc')
-rw-r--r-- | gpu/command_buffer/client/gles2_implementation.cc | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 1c8045d..b4c2858 100644 --- a/gpu/command_buffer/client/gles2_implementation.cc +++ b/gpu/command_buffer/client/gles2_implementation.cc @@ -3875,7 +3875,7 @@ void GLES2Implementation::GetVertexAttribfv( << static_cast<const void*>(params) << ")"); uint32 value = 0; if (vertex_array_object_manager_->GetVertexAttrib(index, pname, &value)) { - *params = static_cast<float>(value); + *params = static_cast<GLfloat>(value); return; } TRACE_EVENT0("gpu", "GLES2::GetVertexAttribfv"); @@ -3906,7 +3906,7 @@ void GLES2Implementation::GetVertexAttribiv( << static_cast<const void*>(params) << ")"); uint32 value = 0; if (vertex_array_object_manager_->GetVertexAttrib(index, pname, &value)) { - *params = value; + *params = static_cast<GLint>(value); return; } TRACE_EVENT0("gpu", "GLES2::GetVertexAttribiv"); @@ -3928,6 +3928,68 @@ void GLES2Implementation::GetVertexAttribiv( CheckGLError(); } +void GLES2Implementation::GetVertexAttribIiv( + GLuint index, GLenum pname, GLint* params) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetVertexAttribIiv(" + << index << ", " + << GLES2Util::GetStringVertexAttribute(pname) << ", " + << static_cast<const void*>(params) << ")"); + uint32 value = 0; + if (vertex_array_object_manager_->GetVertexAttrib(index, pname, &value)) { + *params = static_cast<GLint>(value); + return; + } + TRACE_EVENT0("gpu", "GLES2::GetVertexAttribIiv"); + typedef cmds::GetVertexAttribiv::Result Result; + Result* result = GetResultAs<Result*>(); + if (!result) { + return; + } + result->SetNumResults(0); + helper_->GetVertexAttribIiv( + index, pname, GetResultShmId(), GetResultShmOffset()); + WaitForCmd(); + result->CopyResult(params); + GPU_CLIENT_LOG_CODE_BLOCK({ + for (int32 i = 0; i < result->GetNumResults(); ++i) { + GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); + } + }); + CheckGLError(); +} + +void GLES2Implementation::GetVertexAttribIuiv( + GLuint index, GLenum pname, GLuint* params) { + GPU_CLIENT_SINGLE_THREAD_CHECK(); + GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetVertexAttribIuiv(" + << index << ", " + << GLES2Util::GetStringVertexAttribute(pname) << ", " + << static_cast<const void*>(params) << ")"); + uint32 value = 0; + if (vertex_array_object_manager_->GetVertexAttrib(index, pname, &value)) { + *params = static_cast<GLuint>(value); + return; + } + TRACE_EVENT0("gpu", "GLES2::GetVertexAttribIuiv"); + typedef cmds::GetVertexAttribiv::Result Result; + Result* result = GetResultAs<Result*>(); + if (!result) { + return; + } + result->SetNumResults(0); + helper_->GetVertexAttribIuiv( + index, pname, GetResultShmId(), GetResultShmOffset()); + WaitForCmd(); + result->CopyResult(params); + GPU_CLIENT_LOG_CODE_BLOCK({ + for (int32 i = 0; i < result->GetNumResults(); ++i) { + GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]); + } + }); + CheckGLError(); +} + void GLES2Implementation::Swap() { SwapBuffers(); } |