| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
| 6 | 6 |
| 7 #include "third_party/khronos/GLES2/gl2.h" | 7 #include "third_party/khronos/GLES2/gl2.h" |
| 8 #ifndef GL_GLEXT_PROTOTYPES | 8 #ifndef GL_GLEXT_PROTOTYPES |
| 9 #define GL_GLEXT_PROTOTYPES 1 | 9 #define GL_GLEXT_PROTOTYPES 1 |
| 10 #endif | 10 #endif |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 603 } | 603 } |
| 604 | 604 |
| 605 void WebGraphicsContext3DCommandBufferImpl::copyTextureToParentTextureCHROMIUM( | 605 void WebGraphicsContext3DCommandBufferImpl::copyTextureToParentTextureCHROMIUM( |
| 606 WebGLId texture, WebGLId parentTexture) { | 606 WebGLId texture, WebGLId parentTexture) { |
| 607 NOTIMPLEMENTED(); | 607 NOTIMPLEMENTED(); |
| 608 } | 608 } |
| 609 | 609 |
| 610 DELEGATE_TO_GL(rateLimitOffscreenContextCHROMIUM, | 610 DELEGATE_TO_GL(rateLimitOffscreenContextCHROMIUM, |
| 611 RateLimitOffscreenContextCHROMIUM) | 611 RateLimitOffscreenContextCHROMIUM) |
| 612 | 612 |
| 613 WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: | 613 blink::WebString WebGraphicsContext3DCommandBufferImpl:: |
| 614 getRequestableExtensionsCHROMIUM() { | 614 getRequestableExtensionsCHROMIUM() { |
| 615 return WebKit::WebString::fromUTF8( | 615 return blink::WebString::fromUTF8( |
| 616 gl_->GetRequestableExtensionsCHROMIUM()); | 616 gl_->GetRequestableExtensionsCHROMIUM()); |
| 617 } | 617 } |
| 618 | 618 |
| 619 DELEGATE_TO_GL_1(requestExtensionCHROMIUM, RequestExtensionCHROMIUM, | 619 DELEGATE_TO_GL_1(requestExtensionCHROMIUM, RequestExtensionCHROMIUM, |
| 620 const char*) | 620 const char*) |
| 621 | 621 |
| 622 void WebGraphicsContext3DCommandBufferImpl::blitFramebufferCHROMIUM( | 622 void WebGraphicsContext3DCommandBufferImpl::blitFramebufferCHROMIUM( |
| 623 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1, | 623 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1, |
| 624 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1, | 624 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1, |
| 625 WGC3Dbitfield mask, WGC3Denum filter) { | 625 WGC3Dbitfield mask, WGC3Denum filter) { |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 return false; | 778 return false; |
| 779 } | 779 } |
| 780 GLsizei length = 0; | 780 GLsizei length = 0; |
| 781 GLint size = -1; | 781 GLint size = -1; |
| 782 GLenum type = 0; | 782 GLenum type = 0; |
| 783 gl_->GetActiveAttrib( | 783 gl_->GetActiveAttrib( |
| 784 program, index, max_name_length, &length, &size, &type, name.get()); | 784 program, index, max_name_length, &length, &size, &type, name.get()); |
| 785 if (size < 0) { | 785 if (size < 0) { |
| 786 return false; | 786 return false; |
| 787 } | 787 } |
| 788 info.name = WebKit::WebString::fromUTF8(name.get(), length); | 788 info.name = blink::WebString::fromUTF8(name.get(), length); |
| 789 info.type = type; | 789 info.type = type; |
| 790 info.size = size; | 790 info.size = size; |
| 791 return true; | 791 return true; |
| 792 } | 792 } |
| 793 | 793 |
| 794 bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform( | 794 bool WebGraphicsContext3DCommandBufferImpl::getActiveUniform( |
| 795 WebGLId program, WGC3Duint index, ActiveInfo& info) { | 795 WebGLId program, WGC3Duint index, ActiveInfo& info) { |
| 796 GLint max_name_length = -1; | 796 GLint max_name_length = -1; |
| 797 gl_->GetProgramiv( | 797 gl_->GetProgramiv( |
| 798 program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length); | 798 program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length); |
| 799 if (max_name_length < 0) | 799 if (max_name_length < 0) |
| 800 return false; | 800 return false; |
| 801 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); | 801 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); |
| 802 if (!name) { | 802 if (!name) { |
| 803 synthesizeGLError(GL_OUT_OF_MEMORY); | 803 synthesizeGLError(GL_OUT_OF_MEMORY); |
| 804 return false; | 804 return false; |
| 805 } | 805 } |
| 806 GLsizei length = 0; | 806 GLsizei length = 0; |
| 807 GLint size = -1; | 807 GLint size = -1; |
| 808 GLenum type = 0; | 808 GLenum type = 0; |
| 809 gl_->GetActiveUniform( | 809 gl_->GetActiveUniform( |
| 810 program, index, max_name_length, &length, &size, &type, name.get()); | 810 program, index, max_name_length, &length, &size, &type, name.get()); |
| 811 if (size < 0) { | 811 if (size < 0) { |
| 812 return false; | 812 return false; |
| 813 } | 813 } |
| 814 info.name = WebKit::WebString::fromUTF8(name.get(), length); | 814 info.name = blink::WebString::fromUTF8(name.get(), length); |
| 815 info.type = type; | 815 info.type = type; |
| 816 info.size = size; | 816 info.size = size; |
| 817 return true; | 817 return true; |
| 818 } | 818 } |
| 819 | 819 |
| 820 DELEGATE_TO_GL_4(getAttachedShaders, GetAttachedShaders, | 820 DELEGATE_TO_GL_4(getAttachedShaders, GetAttachedShaders, |
| 821 WebGLId, WGC3Dsizei, WGC3Dsizei*, WebGLId*) | 821 WebGLId, WGC3Dsizei, WGC3Dsizei*, WebGLId*) |
| 822 | 822 |
| 823 DELEGATE_TO_GL_2R(getAttribLocation, GetAttribLocation, | 823 DELEGATE_TO_GL_2R(getAttribLocation, GetAttribLocation, |
| 824 WebGLId, const WGC3Dchar*, WGC3Dint) | 824 WebGLId, const WGC3Dchar*, WGC3Dint) |
| 825 | 825 |
| 826 DELEGATE_TO_GL_2(getBooleanv, GetBooleanv, WGC3Denum, WGC3Dboolean*) | 826 DELEGATE_TO_GL_2(getBooleanv, GetBooleanv, WGC3Denum, WGC3Dboolean*) |
| 827 | 827 |
| 828 DELEGATE_TO_GL_3(getBufferParameteriv, GetBufferParameteriv, | 828 DELEGATE_TO_GL_3(getBufferParameteriv, GetBufferParameteriv, |
| 829 WGC3Denum, WGC3Denum, WGC3Dint*) | 829 WGC3Denum, WGC3Denum, WGC3Dint*) |
| 830 | 830 |
| 831 WebKit::WebGraphicsContext3D::Attributes | 831 blink::WebGraphicsContext3D::Attributes |
| 832 WebGraphicsContext3DCommandBufferImpl::getContextAttributes() { | 832 WebGraphicsContext3DCommandBufferImpl::getContextAttributes() { |
| 833 return attributes_; | 833 return attributes_; |
| 834 } | 834 } |
| 835 | 835 |
| 836 WGC3Denum WebGraphicsContext3DCommandBufferImpl::getError() { | 836 WGC3Denum WebGraphicsContext3DCommandBufferImpl::getError() { |
| 837 if (!synthetic_errors_.empty()) { | 837 if (!synthetic_errors_.empty()) { |
| 838 std::vector<WGC3Denum>::iterator iter = synthetic_errors_.begin(); | 838 std::vector<WGC3Denum>::iterator iter = synthetic_errors_.begin(); |
| 839 WGC3Denum err = *iter; | 839 WGC3Denum err = *iter; |
| 840 synthetic_errors_.erase(iter); | 840 synthetic_errors_.erase(iter); |
| 841 return err; | 841 return err; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 853 DELEGATE_TO_GL_2(getFloatv, GetFloatv, WGC3Denum, WGC3Dfloat*) | 853 DELEGATE_TO_GL_2(getFloatv, GetFloatv, WGC3Denum, WGC3Dfloat*) |
| 854 | 854 |
| 855 DELEGATE_TO_GL_4(getFramebufferAttachmentParameteriv, | 855 DELEGATE_TO_GL_4(getFramebufferAttachmentParameteriv, |
| 856 GetFramebufferAttachmentParameteriv, | 856 GetFramebufferAttachmentParameteriv, |
| 857 WGC3Denum, WGC3Denum, WGC3Denum, WGC3Dint*) | 857 WGC3Denum, WGC3Denum, WGC3Denum, WGC3Dint*) |
| 858 | 858 |
| 859 DELEGATE_TO_GL_2(getIntegerv, GetIntegerv, WGC3Denum, WGC3Dint*) | 859 DELEGATE_TO_GL_2(getIntegerv, GetIntegerv, WGC3Denum, WGC3Dint*) |
| 860 | 860 |
| 861 DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*) | 861 DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*) |
| 862 | 862 |
| 863 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getProgramInfoLog( | 863 blink::WebString WebGraphicsContext3DCommandBufferImpl::getProgramInfoLog( |
| 864 WebGLId program) { | 864 WebGLId program) { |
| 865 GLint logLength = 0; | 865 GLint logLength = 0; |
| 866 gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); | 866 gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); |
| 867 if (!logLength) | 867 if (!logLength) |
| 868 return WebKit::WebString(); | 868 return blink::WebString(); |
| 869 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 869 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 870 if (!log) | 870 if (!log) |
| 871 return WebKit::WebString(); | 871 return blink::WebString(); |
| 872 GLsizei returnedLogLength = 0; | 872 GLsizei returnedLogLength = 0; |
| 873 gl_->GetProgramInfoLog( | 873 gl_->GetProgramInfoLog( |
| 874 program, logLength, &returnedLogLength, log.get()); | 874 program, logLength, &returnedLogLength, log.get()); |
| 875 DCHECK_EQ(logLength, returnedLogLength + 1); | 875 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 876 WebKit::WebString res = | 876 blink::WebString res = |
| 877 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 877 blink::WebString::fromUTF8(log.get(), returnedLogLength); |
| 878 return res; | 878 return res; |
| 879 } | 879 } |
| 880 | 880 |
| 881 DELEGATE_TO_GL_3(getRenderbufferParameteriv, GetRenderbufferParameteriv, | 881 DELEGATE_TO_GL_3(getRenderbufferParameteriv, GetRenderbufferParameteriv, |
| 882 WGC3Denum, WGC3Denum, WGC3Dint*) | 882 WGC3Denum, WGC3Denum, WGC3Dint*) |
| 883 | 883 |
| 884 DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*) | 884 DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*) |
| 885 | 885 |
| 886 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog( | 886 blink::WebString WebGraphicsContext3DCommandBufferImpl::getShaderInfoLog( |
| 887 WebGLId shader) { | 887 WebGLId shader) { |
| 888 GLint logLength = 0; | 888 GLint logLength = 0; |
| 889 gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength); | 889 gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength); |
| 890 if (!logLength) | 890 if (!logLength) |
| 891 return WebKit::WebString(); | 891 return blink::WebString(); |
| 892 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 892 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 893 if (!log) | 893 if (!log) |
| 894 return WebKit::WebString(); | 894 return blink::WebString(); |
| 895 GLsizei returnedLogLength = 0; | 895 GLsizei returnedLogLength = 0; |
| 896 gl_->GetShaderInfoLog( | 896 gl_->GetShaderInfoLog( |
| 897 shader, logLength, &returnedLogLength, log.get()); | 897 shader, logLength, &returnedLogLength, log.get()); |
| 898 DCHECK_EQ(logLength, returnedLogLength + 1); | 898 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 899 WebKit::WebString res = | 899 blink::WebString res = |
| 900 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 900 blink::WebString::fromUTF8(log.get(), returnedLogLength); |
| 901 return res; | 901 return res; |
| 902 } | 902 } |
| 903 | 903 |
| 904 DELEGATE_TO_GL_4(getShaderPrecisionFormat, GetShaderPrecisionFormat, | 904 DELEGATE_TO_GL_4(getShaderPrecisionFormat, GetShaderPrecisionFormat, |
| 905 WGC3Denum, WGC3Denum, WGC3Dint*, WGC3Dint*) | 905 WGC3Denum, WGC3Denum, WGC3Dint*, WGC3Dint*) |
| 906 | 906 |
| 907 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource( | 907 blink::WebString WebGraphicsContext3DCommandBufferImpl::getShaderSource( |
| 908 WebGLId shader) { | 908 WebGLId shader) { |
| 909 GLint logLength = 0; | 909 GLint logLength = 0; |
| 910 gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength); | 910 gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength); |
| 911 if (!logLength) | 911 if (!logLength) |
| 912 return WebKit::WebString(); | 912 return blink::WebString(); |
| 913 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 913 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 914 if (!log) | 914 if (!log) |
| 915 return WebKit::WebString(); | 915 return blink::WebString(); |
| 916 GLsizei returnedLogLength = 0; | 916 GLsizei returnedLogLength = 0; |
| 917 gl_->GetShaderSource( | 917 gl_->GetShaderSource( |
| 918 shader, logLength, &returnedLogLength, log.get()); | 918 shader, logLength, &returnedLogLength, log.get()); |
| 919 if (!returnedLogLength) | 919 if (!returnedLogLength) |
| 920 return WebKit::WebString(); | 920 return blink::WebString(); |
| 921 DCHECK_EQ(logLength, returnedLogLength + 1); | 921 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 922 WebKit::WebString res = | 922 blink::WebString res = |
| 923 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 923 blink::WebString::fromUTF8(log.get(), returnedLogLength); |
| 924 return res; | 924 return res; |
| 925 } | 925 } |
| 926 | 926 |
| 927 WebKit::WebString WebGraphicsContext3DCommandBufferImpl:: | 927 blink::WebString WebGraphicsContext3DCommandBufferImpl:: |
| 928 getTranslatedShaderSourceANGLE(WebGLId shader) { | 928 getTranslatedShaderSourceANGLE(WebGLId shader) { |
| 929 GLint logLength = 0; | 929 GLint logLength = 0; |
| 930 gl_->GetShaderiv( | 930 gl_->GetShaderiv( |
| 931 shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &logLength); | 931 shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &logLength); |
| 932 if (!logLength) | 932 if (!logLength) |
| 933 return WebKit::WebString(); | 933 return blink::WebString(); |
| 934 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | 934 scoped_ptr<GLchar[]> log(new GLchar[logLength]); |
| 935 if (!log) | 935 if (!log) |
| 936 return WebKit::WebString(); | 936 return blink::WebString(); |
| 937 GLsizei returnedLogLength = 0; | 937 GLsizei returnedLogLength = 0; |
| 938 gl_->GetTranslatedShaderSourceANGLE( | 938 gl_->GetTranslatedShaderSourceANGLE( |
| 939 shader, logLength, &returnedLogLength, log.get()); | 939 shader, logLength, &returnedLogLength, log.get()); |
| 940 if (!returnedLogLength) | 940 if (!returnedLogLength) |
| 941 return WebKit::WebString(); | 941 return blink::WebString(); |
| 942 DCHECK_EQ(logLength, returnedLogLength + 1); | 942 DCHECK_EQ(logLength, returnedLogLength + 1); |
| 943 WebKit::WebString res = | 943 blink::WebString res = |
| 944 WebKit::WebString::fromUTF8(log.get(), returnedLogLength); | 944 blink::WebString::fromUTF8(log.get(), returnedLogLength); |
| 945 return res; | 945 return res; |
| 946 } | 946 } |
| 947 | 947 |
| 948 WebKit::WebString WebGraphicsContext3DCommandBufferImpl::getString( | 948 blink::WebString WebGraphicsContext3DCommandBufferImpl::getString( |
| 949 WGC3Denum name) { | 949 WGC3Denum name) { |
| 950 return WebKit::WebString::fromUTF8( | 950 return blink::WebString::fromUTF8( |
| 951 reinterpret_cast<const char*>(gl_->GetString(name))); | 951 reinterpret_cast<const char*>(gl_->GetString(name))); |
| 952 } | 952 } |
| 953 | 953 |
| 954 DELEGATE_TO_GL_3(getTexParameterfv, GetTexParameterfv, | 954 DELEGATE_TO_GL_3(getTexParameterfv, GetTexParameterfv, |
| 955 WGC3Denum, WGC3Denum, WGC3Dfloat*) | 955 WGC3Denum, WGC3Denum, WGC3Dfloat*) |
| 956 | 956 |
| 957 DELEGATE_TO_GL_3(getTexParameteriv, GetTexParameteriv, | 957 DELEGATE_TO_GL_3(getTexParameteriv, GetTexParameteriv, |
| 958 WGC3Denum, WGC3Denum, WGC3Dint*) | 958 WGC3Denum, WGC3Denum, WGC3Dint*) |
| 959 | 959 |
| 960 DELEGATE_TO_GL_3(getUniformfv, GetUniformfv, WebGLId, WGC3Dint, WGC3Dfloat*) | 960 DELEGATE_TO_GL_3(getUniformfv, GetUniformfv, WebGLId, WGC3Dint, WGC3Dfloat*) |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1455 g_all_shared_contexts.Get().erase(host_.get()); | 1455 g_all_shared_contexts.Get().erase(host_.get()); |
| 1456 } | 1456 } |
| 1457 | 1457 |
| 1458 if (ShouldUseSwapClient()) | 1458 if (ShouldUseSwapClient()) |
| 1459 swap_client_->OnViewContextSwapBuffersAborted(); | 1459 swap_client_->OnViewContextSwapBuffersAborted(); |
| 1460 } | 1460 } |
| 1461 | 1461 |
| 1462 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( | 1462 void WebGraphicsContext3DCommandBufferImpl::OnErrorMessage( |
| 1463 const std::string& message, int id) { | 1463 const std::string& message, int id) { |
| 1464 if (error_message_callback_) { | 1464 if (error_message_callback_) { |
| 1465 WebKit::WebString str = WebKit::WebString::fromUTF8(message.c_str()); | 1465 blink::WebString str = blink::WebString::fromUTF8(message.c_str()); |
| 1466 error_message_callback_->onErrorMessage(str, id); | 1466 error_message_callback_->onErrorMessage(str, id); |
| 1467 } | 1467 } |
| 1468 } | 1468 } |
| 1469 | 1469 |
| 1470 } // namespace content | 1470 } // namespace content |
| OLD | NEW |