| Index: gpu/command_buffer/client/gles2_implementation.cc
|
| diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
|
| index 7ef54448b6182b75e13c2295d96cb7d5258334c3..b047a700232ef5b5d93d77935ee9b79a409308e0 100644
|
| --- a/gpu/command_buffer/client/gles2_implementation.cc
|
| +++ b/gpu/command_buffer/client/gles2_implementation.cc
|
| @@ -702,6 +702,15 @@ bool GLES2Implementation::GetHelper(GLenum pname, GLint* params) {
|
| return true;
|
| }
|
| return false;
|
| + case GL_MAX_UNIFORM_BUFFER_BINDINGS:
|
| + *params = capabilities_.max_uniform_buffer_bindings;
|
| + return true;
|
| + case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
|
| + *params = capabilities_.max_transform_feedback_separate_attribs;
|
| + return true;
|
| + case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:
|
| + *params = capabilities_.uniform_buffer_offset_alignment;
|
| + return true;
|
| default:
|
| return false;
|
| }
|
| @@ -2638,6 +2647,10 @@ void GLES2Implementation::GenTransformFeedbacksHelper(
|
| // the old model but possibly not true in the new model if another context has
|
| // deleted the resource.
|
|
|
| +// NOTE #2: There is a bug in some BindXXXHelpers, that IDs might be marked as
|
| +// used even when Bind has failed. However, the bug is minor compared to the
|
| +// overhead & duplicated checking in client side.
|
| +
|
| void GLES2Implementation::BindBufferHelper(
|
| GLenum target, GLuint buffer_id) {
|
| // TODO(gman): See note #1 above.
|
| @@ -2662,8 +2675,7 @@ void GLES2Implementation::BindBufferHelper(
|
| changed = true;
|
| break;
|
| }
|
| - // TODO(gman): There's a bug here. If the target is invalid the ID will not be
|
| - // used even though it's marked it as used here.
|
| + // TODO(gman): See note #2 above.
|
| if (changed) {
|
| GetIdHandler(id_namespaces::kBuffers)->MarkAsUsedForBind(
|
| this, target, buffer_id, &GLES2Implementation::BindBufferStub);
|
| @@ -2679,8 +2691,7 @@ void GLES2Implementation::BindBufferStub(GLenum target, GLuint buffer) {
|
| void GLES2Implementation::BindBufferBaseHelper(
|
| GLenum target, GLuint index, GLuint buffer_id) {
|
| // TODO(zmo): See note #1 above.
|
| - // TODO(zmo): There's a bug here. If the target or index is invalid the ID
|
| - // will not be used even though it's marked it as used here.
|
| + // TODO(zmo): See note #2 above.
|
| GetIdHandler(id_namespaces::kBuffers)->MarkAsUsedForBind(
|
| this, target, index, buffer_id, &GLES2Implementation::BindBufferBaseStub);
|
| }
|
| @@ -2696,8 +2707,7 @@ void GLES2Implementation::BindBufferRangeHelper(
|
| GLenum target, GLuint index, GLuint buffer_id,
|
| GLintptr offset, GLsizeiptr size) {
|
| // TODO(zmo): See note #1 above.
|
| - // TODO(zmo): There's a bug here. If an arguments is invalid the ID will not
|
| - // be used even though it's marked it as used here.
|
| + // TODO(zmo): See note #2 above.
|
| GetIdHandler(id_namespaces::kBuffers)->MarkAsUsedForBind(
|
| this, target, index, buffer_id, offset, size,
|
| &GLES2Implementation::BindBufferRangeStub);
|
| @@ -2777,8 +2787,7 @@ void GLES2Implementation::BindRenderbufferHelper(
|
| changed = true;
|
| break;
|
| }
|
| - // TODO(gman): There's a bug here. If the target is invalid the ID will not be
|
| - // used even though it's marked it as used here.
|
| + // TODO(zmo): See note #2 above.
|
| if (changed) {
|
| GetIdHandler(id_namespaces::kRenderbuffers)->MarkAsUsedForBind(
|
| this, target, renderbuffer,
|
| @@ -2827,8 +2836,7 @@ void GLES2Implementation::BindTextureHelper(GLenum target, GLuint texture) {
|
| changed = true;
|
| break;
|
| }
|
| - // TODO(gman): There's a bug here. If the target is invalid the ID will not be
|
| - // used. even though it's marked it as used here.
|
| + // TODO(gman): See note #2 above.
|
| if (changed) {
|
| GetIdHandler(id_namespaces::kTextures)->MarkAsUsedForBind(
|
| this, target, texture, &GLES2Implementation::BindTextureStub);
|
| @@ -2847,7 +2855,6 @@ void GLES2Implementation::BindTransformFeedbackHelper(
|
| }
|
|
|
| void GLES2Implementation::BindVertexArrayOESHelper(GLuint array) {
|
| - // TODO(gman): See note #1 above.
|
| bool changed = false;
|
| if (vertex_array_object_manager_->BindVertexArray(array, &changed)) {
|
| if (changed) {
|
| @@ -2878,8 +2885,7 @@ void GLES2Implementation::BindValuebufferCHROMIUMHelper(GLenum target,
|
| changed = true;
|
| break;
|
| }
|
| - // TODO(gman): There's a bug here. If the target is invalid the ID will not be
|
| - // used even though it's marked it as used here.
|
| + // TODO(gman): See note #2 above.
|
| if (changed) {
|
| GetIdHandler(id_namespaces::kValuebuffers)->MarkAsUsedForBind(
|
| this, target, valuebuffer,
|
|
|