| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "config.h" | 5 #include "config.h" |
| 6 #include "modules/webgl/WebGL2RenderingContextBase.h" | 6 #include "modules/webgl/WebGL2RenderingContextBase.h" |
| 7 | 7 |
| 8 #include "bindings/modules/v8/WebGLAny.h" | 8 #include "bindings/modules/v8/WebGLAny.h" |
| 9 #include "core/html/HTMLCanvasElement.h" | 9 #include "core/html/HTMLCanvasElement.h" |
| 10 #include "core/html/HTMLImageElement.h" | 10 #include "core/html/HTMLImageElement.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 webContext()->getIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, &maxTr
ansformFeedbackSeparateAttribs); | 161 webContext()->getIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, &maxTr
ansformFeedbackSeparateAttribs); |
| 162 m_boundIndexedTransformFeedbackBuffers.clear(); | 162 m_boundIndexedTransformFeedbackBuffers.clear(); |
| 163 m_boundIndexedTransformFeedbackBuffers.resize(maxTransformFeedbackSeparateAt
tribs); | 163 m_boundIndexedTransformFeedbackBuffers.resize(maxTransformFeedbackSeparateAt
tribs); |
| 164 | 164 |
| 165 GLint maxUniformBufferBindings = 0; | 165 GLint maxUniformBufferBindings = 0; |
| 166 webContext()->getIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &maxUniformBufferB
indings); | 166 webContext()->getIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &maxUniformBufferB
indings); |
| 167 m_boundIndexedUniformBuffers.clear(); | 167 m_boundIndexedUniformBuffers.clear(); |
| 168 m_boundIndexedUniformBuffers.resize(maxUniformBufferBindings); | 168 m_boundIndexedUniformBuffers.resize(maxUniformBufferBindings); |
| 169 m_maxBoundUniformBufferIndex = 0; | 169 m_maxBoundUniformBufferIndex = 0; |
| 170 | 170 |
| 171 m_packRowLength = 0; |
| 172 m_packSkipPixels = 0; |
| 173 m_packSkipRows = 0; |
| 174 m_unpackRowLength = 0; |
| 175 m_unpackImageHeight = 0; |
| 176 m_unpackSkipPixels = 0; |
| 177 m_unpackSkipRows = 0; |
| 178 m_unpackSkipImages = 0; |
| 179 |
| 171 WebGLRenderingContextBase::initializeNewContext(); | 180 WebGLRenderingContextBase::initializeNewContext(); |
| 172 } | 181 } |
| 173 | 182 |
| 174 void WebGL2RenderingContextBase::copyBufferSubData(GLenum readTarget, GLenum wri
teTarget, long long readOffset, long long writeOffset, long long size) | 183 void WebGL2RenderingContextBase::copyBufferSubData(GLenum readTarget, GLenum wri
teTarget, long long readOffset, long long writeOffset, long long size) |
| 175 { | 184 { |
| 176 if (isContextLost()) | 185 if (isContextLost()) |
| 177 return; | 186 return; |
| 178 | 187 |
| 179 if (!validateValueFitNonNegInt32("copyBufferSubData", "readOffset", readOffs
et) | 188 if (!validateValueFitNonNegInt32("copyBufferSubData", "readOffset", readOffs
et) |
| 180 || !validateValueFitNonNegInt32("copyBufferSubData", "writeOffset", writ
eOffset) | 189 || !validateValueFitNonNegInt32("copyBufferSubData", "writeOffset", writ
eOffset) |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 } else { | 529 } else { |
| 521 if (mode == GL_BACK) { | 530 if (mode == GL_BACK) { |
| 522 synthesizeGLError(GL_INVALID_OPERATION, "readBuffer", "invalid read
buffer"); | 531 synthesizeGLError(GL_INVALID_OPERATION, "readBuffer", "invalid read
buffer"); |
| 523 return; | 532 return; |
| 524 } | 533 } |
| 525 readFramebufferBinding->readBuffer(mode); | 534 readFramebufferBinding->readBuffer(mode); |
| 526 } | 535 } |
| 527 webContext()->readBuffer(mode); | 536 webContext()->readBuffer(mode); |
| 528 } | 537 } |
| 529 | 538 |
| 539 void WebGL2RenderingContextBase::pixelStorei(GLenum pname, GLint param) |
| 540 { |
| 541 if (isContextLost()) |
| 542 return; |
| 543 switch (pname) { |
| 544 case GL_PACK_ROW_LENGTH: |
| 545 m_packRowLength = param; |
| 546 break; |
| 547 case GL_PACK_SKIP_PIXELS: |
| 548 m_packSkipPixels = param; |
| 549 break; |
| 550 case GL_PACK_SKIP_ROWS: |
| 551 m_packSkipRows = param; |
| 552 break; |
| 553 case GL_UNPACK_ROW_LENGTH: |
| 554 m_unpackRowLength = param; |
| 555 break; |
| 556 case GL_UNPACK_IMAGE_HEIGHT: |
| 557 m_unpackImageHeight = param; |
| 558 break; |
| 559 case GL_UNPACK_SKIP_PIXELS: |
| 560 m_unpackSkipPixels = param; |
| 561 break; |
| 562 case GL_UNPACK_SKIP_ROWS: |
| 563 m_unpackSkipRows = param; |
| 564 break; |
| 565 case GL_UNPACK_SKIP_IMAGES: |
| 566 m_unpackSkipImages = param; |
| 567 break; |
| 568 default: |
| 569 WebGLRenderingContextBase::pixelStorei(pname, param); |
| 570 return; |
| 571 } |
| 572 webContext()->pixelStorei(pname, param); |
| 573 } |
| 574 |
| 530 void WebGL2RenderingContextBase::readPixels(GLint x, GLint y, GLsizei width, GLs
izei height, GLenum format, GLenum type, DOMArrayBufferView* pixels) | 575 void WebGL2RenderingContextBase::readPixels(GLint x, GLint y, GLsizei width, GLs
izei height, GLenum format, GLenum type, DOMArrayBufferView* pixels) |
| 531 { | 576 { |
| 532 if (isContextLost()) | 577 if (isContextLost()) |
| 533 return; | 578 return; |
| 534 if (m_boundPixelPackBuffer.get()) { | 579 if (m_boundPixelPackBuffer.get()) { |
| 535 synthesizeGLError(GL_INVALID_OPERATION, "readPixels", "PIXEL_PACK buffer
should not be bound"); | 580 synthesizeGLError(GL_INVALID_OPERATION, "readPixels", "PIXEL_PACK buffer
should not be bound"); |
| 536 return; | 581 return; |
| 537 } | 582 } |
| 538 | 583 |
| 539 WebGLRenderingContextBase::readPixels(x, y, width, height, format, type, pix
els); | 584 WebGLRenderingContextBase::readPixels(x, y, width, height, format, type, pix
els); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 if (!validateSize("renderbufferStorage", width, height)) | 721 if (!validateSize("renderbufferStorage", width, height)) |
| 677 return; | 722 return; |
| 678 if (samples < 0) { | 723 if (samples < 0) { |
| 679 synthesizeGLError(GL_INVALID_VALUE, functionName, "samples < 0"); | 724 synthesizeGLError(GL_INVALID_VALUE, functionName, "samples < 0"); |
| 680 return; | 725 return; |
| 681 } | 726 } |
| 682 renderbufferStorageImpl(target, samples, internalformat, width, height, func
tionName); | 727 renderbufferStorageImpl(target, samples, internalformat, width, height, func
tionName); |
| 683 applyStencilTest(); | 728 applyStencilTest(); |
| 684 } | 729 } |
| 685 | 730 |
| 731 void WebGL2RenderingContextBase::resetUnpackParameters() |
| 732 { |
| 733 WebGLRenderingContextBase::resetUnpackParameters(); |
| 734 |
| 735 if (!m_unpackRowLength) |
| 736 webContext()->pixelStorei(GL_UNPACK_ROW_LENGTH, 0); |
| 737 if (!m_unpackImageHeight) |
| 738 webContext()->pixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0); |
| 739 if (!m_unpackSkipPixels) |
| 740 webContext()->pixelStorei(GL_UNPACK_SKIP_PIXELS, 0); |
| 741 if (!m_unpackSkipRows) |
| 742 webContext()->pixelStorei(GL_UNPACK_SKIP_ROWS, 0); |
| 743 if (!m_unpackSkipImages) |
| 744 webContext()->pixelStorei(GL_UNPACK_SKIP_IMAGES, 0); |
| 745 } |
| 746 |
| 747 void WebGL2RenderingContextBase::restoreUnpackParameters() |
| 748 { |
| 749 WebGLRenderingContextBase::restoreUnpackParameters(); |
| 750 |
| 751 if (!m_unpackRowLength) |
| 752 webContext()->pixelStorei(GL_UNPACK_ROW_LENGTH, m_unpackRowLength); |
| 753 if (!m_unpackImageHeight) |
| 754 webContext()->pixelStorei(GL_UNPACK_IMAGE_HEIGHT, m_unpackImageHeight); |
| 755 if (!m_unpackSkipPixels) |
| 756 webContext()->pixelStorei(GL_UNPACK_SKIP_PIXELS, m_unpackSkipPixels); |
| 757 if (!m_unpackSkipRows) |
| 758 webContext()->pixelStorei(GL_UNPACK_SKIP_ROWS, m_unpackSkipRows); |
| 759 if (!m_unpackSkipImages) |
| 760 webContext()->pixelStorei(GL_UNPACK_SKIP_IMAGES, m_unpackSkipImages); |
| 761 } |
| 762 |
| 686 /* Texture objects */ | 763 /* Texture objects */ |
| 687 bool WebGL2RenderingContextBase::validateTexStorage(const char* functionName, GL
enum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei heigh
t, GLsizei depth, TexStorageType functionType) | 764 bool WebGL2RenderingContextBase::validateTexStorage(const char* functionName, GL
enum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei heigh
t, GLsizei depth, TexStorageType functionType) |
| 688 { | 765 { |
| 689 if (functionType == TexStorageType2D) { | 766 if (functionType == TexStorageType2D) { |
| 690 if (target != GL_TEXTURE_2D && target != GL_TEXTURE_CUBE_MAP) { | 767 if (target != GL_TEXTURE_2D && target != GL_TEXTURE_CUBE_MAP) { |
| 691 synthesizeGLError(GL_INVALID_ENUM, functionName, "invalid 2D target"
); | 768 synthesizeGLError(GL_INVALID_ENUM, functionName, "invalid 2D target"
); |
| 692 return false; | 769 return false; |
| 693 } | 770 } |
| 694 } else { | 771 } else { |
| 695 if (target != GL_TEXTURE_3D && target != GL_TEXTURE_2D_ARRAY) { | 772 if (target != GL_TEXTURE_3D && target != GL_TEXTURE_2D_ARRAY) { |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 bool needConversion = true; | 953 bool needConversion = true; |
| 877 if (type == GL_UNSIGNED_BYTE && sourceDataFormat == WebGLImageConversion::Da
taFormatRGBA8 && format == GL_RGBA && alphaOp == WebGLImageConversion::AlphaDoNo
thing && !flipY) { | 954 if (type == GL_UNSIGNED_BYTE && sourceDataFormat == WebGLImageConversion::Da
taFormatRGBA8 && format == GL_RGBA && alphaOp == WebGLImageConversion::AlphaDoNo
thing && !flipY) { |
| 878 needConversion = false; | 955 needConversion = false; |
| 879 } else { | 956 } else { |
| 880 if (!WebGLImageConversion::packImageData(image, imagePixelData, format,
type, flipY, alphaOp, sourceDataFormat, imageExtractor.imageWidth(), imageExtrac
tor.imageHeight(), imageExtractor.imageSourceUnpackAlignment(), data)) { | 957 if (!WebGLImageConversion::packImageData(image, imagePixelData, format,
type, flipY, alphaOp, sourceDataFormat, imageExtractor.imageWidth(), imageExtrac
tor.imageHeight(), imageExtractor.imageSourceUnpackAlignment(), data)) { |
| 881 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data
"); | 958 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data
"); |
| 882 return; | 959 return; |
| 883 } | 960 } |
| 884 } | 961 } |
| 885 | 962 |
| 886 if (m_unpackAlignment != 1) | 963 resetUnpackParameters(); |
| 887 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); | |
| 888 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE
xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver
sion ? data.data() : imagePixelData); | 964 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE
xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver
sion ? data.data() : imagePixelData); |
| 889 if (m_unpackAlignment != 1) | 965 restoreUnpackParameters(); |
| 890 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); | |
| 891 } | 966 } |
| 892 | 967 |
| 893 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei d
epth, GLenum format, GLenum type, DOMArrayBufferView* pixels) | 968 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei d
epth, GLenum format, GLenum type, DOMArrayBufferView* pixels) |
| 894 { | 969 { |
| 895 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, width, height, depth) | 970 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, width, height, depth) |
| 896 || !validateTexFuncData("texSubImage3D", level, width, height, depth, fo
rmat, type, pixels, NullAllowed)) | 971 || !validateTexFuncData("texSubImage3D", level, width, height, depth, fo
rmat, type, pixels, NullAllowed)) |
| 897 return; | 972 return; |
| 898 | 973 |
| 899 // FIXME: Ensure pixels is large enough to contain the desired texture dimen
sions. | 974 // FIXME: Ensure pixels is large enough to contain the desired texture dimen
sions. |
| 900 | 975 |
| 901 void* data = pixels->baseAddress(); | 976 void* data = pixels->baseAddress(); |
| 902 Vector<uint8_t> tempData; | 977 Vector<uint8_t> tempData; |
| 903 bool changeUnpackAlignment = false; | 978 bool changeUnpackParameters = false; |
| 904 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { | 979 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { |
| 905 if (!WebGLImageConversion::extractTextureData(width, height, format, typ
e, | 980 // FIXME: WebGLImageConversion needs to be updated to accept image depth
. |
| 906 m_unpackAlignment, | 981 notImplemented(); |
| 907 m_unpackFlipY, m_unpackPremultiplyAlpha, | 982 changeUnpackParameters = true; |
| 908 data, | |
| 909 tempData)) | |
| 910 return; | |
| 911 data = tempData.data(); | |
| 912 changeUnpackAlignment = true; | |
| 913 } | 983 } |
| 914 if (changeUnpackAlignment) | 984 if (changeUnpackParameters) |
| 915 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); | 985 resetUnpackParameters(); |
| 916 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, width,
height, depth, format, type, data); | 986 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, width,
height, depth, format, type, data); |
| 917 if (changeUnpackAlignment) | 987 if (changeUnpackParameters) |
| 918 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); | 988 restoreUnpackParameters(); |
| 919 } | 989 } |
| 920 | 990 |
| 921 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData* p
ixels) | 991 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData* p
ixels) |
| 922 { | 992 { |
| 923 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, pixels->width(), pixels->h
eight(), 1)) | 993 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta
rget, level, xoffset, yoffset, zoffset, format, type, pixels->width(), pixels->h
eight(), 1)) |
| 924 return; | 994 return; |
| 925 | 995 |
| 926 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { | 996 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { |
| 927 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. | 997 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. |
| 928 type = GL_FLOAT; | 998 type = GL_FLOAT; |
| 929 } | 999 } |
| 930 Vector<uint8_t> data; | 1000 Vector<uint8_t> data; |
| 931 bool needConversion = true; | 1001 bool needConversion = true; |
| 932 // The data from ImageData is always of format RGBA8. | 1002 // The data from ImageData is always of format RGBA8. |
| 933 // No conversion is needed if destination format is RGBA and type is USIGNED
_BYTE and no Flip or Premultiply operation is required. | 1003 // No conversion is needed if destination format is RGBA and type is USIGNED
_BYTE and no Flip or Premultiply operation is required. |
| 934 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un
packPremultiplyAlpha) { | 1004 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un
packPremultiplyAlpha) { |
| 935 needConversion = false; | 1005 needConversion = false; |
| 936 } else { | 1006 } else { |
| 937 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe
ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { | 1007 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe
ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { |
| 938 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data
"); | 1008 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data
"); |
| 939 return; | 1009 return; |
| 940 } | 1010 } |
| 941 } | 1011 } |
| 942 if (m_unpackAlignment != 1) | 1012 resetUnpackParameters(); |
| 943 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); | |
| 944 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, pixels
->width(), pixels->height(), 1, format, type, needConversion ? data.data() : pix
els->data()->data()); | 1013 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, pixels
->width(), pixels->height(), 1, format, type, needConversion ? data.data() : pix
els->data()->data()); |
| 945 if (m_unpackAlignment != 1) | 1014 restoreUnpackParameters(); |
| 946 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); | |
| 947 } | 1015 } |
| 948 | 1016 |
| 949 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLImageEle
ment* image, ExceptionState& exceptionState) | 1017 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint
xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLImageEle
ment* image, ExceptionState& exceptionState) |
| 950 { | 1018 { |
| 951 if (isContextLost() || !image || !validateHTMLImageElement("texSubImage3D",
image, exceptionState)) | 1019 if (isContextLost() || !image || !validateHTMLImageElement("texSubImage3D",
image, exceptionState)) |
| 952 return; | 1020 return; |
| 953 | 1021 |
| 954 RefPtr<Image> imageForRender = image->cachedImage()->image(); | 1022 RefPtr<Image> imageForRender = image->cachedImage()->image(); |
| 955 if (imageForRender->isSVGImage()) | 1023 if (imageForRender->isSVGImage()) |
| 956 imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(
), image->height(), "texSubImage3D"); | 1024 imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width(
), image->height(), "texSubImage3D"); |
| (...skipping 1577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2534 return getBooleanParameter(scriptState, pname); | 2602 return getBooleanParameter(scriptState, pname); |
| 2535 case GL_UNIFORM_BUFFER_BINDING: | 2603 case GL_UNIFORM_BUFFER_BINDING: |
| 2536 return WebGLAny(scriptState, m_boundUniformBuffer.get()); | 2604 return WebGLAny(scriptState, m_boundUniformBuffer.get()); |
| 2537 case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: | 2605 case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: |
| 2538 return getIntParameter(scriptState, pname); | 2606 return getIntParameter(scriptState, pname); |
| 2539 case GL_UNPACK_IMAGE_HEIGHT: | 2607 case GL_UNPACK_IMAGE_HEIGHT: |
| 2540 return getIntParameter(scriptState, pname); | 2608 return getIntParameter(scriptState, pname); |
| 2541 case GL_UNPACK_ROW_LENGTH: | 2609 case GL_UNPACK_ROW_LENGTH: |
| 2542 return getIntParameter(scriptState, pname); | 2610 return getIntParameter(scriptState, pname); |
| 2543 case GL_UNPACK_SKIP_IMAGES: | 2611 case GL_UNPACK_SKIP_IMAGES: |
| 2544 return getBooleanParameter(scriptState, pname); | 2612 return getIntParameter(scriptState, pname); |
| 2545 case GL_UNPACK_SKIP_PIXELS: | 2613 case GL_UNPACK_SKIP_PIXELS: |
| 2546 return getBooleanParameter(scriptState, pname); | 2614 return getIntParameter(scriptState, pname); |
| 2547 case GL_UNPACK_SKIP_ROWS: | 2615 case GL_UNPACK_SKIP_ROWS: |
| 2548 return getBooleanParameter(scriptState, pname); | 2616 return getIntParameter(scriptState, pname); |
| 2549 | 2617 |
| 2550 default: | 2618 default: |
| 2551 return WebGLRenderingContextBase::getParameter(scriptState, pname); | 2619 return WebGLRenderingContextBase::getParameter(scriptState, pname); |
| 2552 } | 2620 } |
| 2553 } | 2621 } |
| 2554 | 2622 |
| 2555 ScriptValue WebGL2RenderingContextBase::getInt64Parameter(ScriptState* scriptSta
te, GLenum pname) | 2623 ScriptValue WebGL2RenderingContextBase::getInt64Parameter(ScriptState* scriptSta
te, GLenum pname) |
| 2556 { | 2624 { |
| 2557 GLint64 value = 0; | 2625 GLint64 value = 0; |
| 2558 if (!isContextLost()) | 2626 if (!isContextLost()) |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3211 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() | 3279 GLenum WebGL2RenderingContextBase::boundFramebufferColorFormat() |
| 3212 { | 3280 { |
| 3213 if (m_readFramebufferBinding && m_readFramebufferBinding->object()) | 3281 if (m_readFramebufferBinding && m_readFramebufferBinding->object()) |
| 3214 return m_readFramebufferBinding->colorBufferFormat(); | 3282 return m_readFramebufferBinding->colorBufferFormat(); |
| 3215 if (m_requestedAttributes.alpha()) | 3283 if (m_requestedAttributes.alpha()) |
| 3216 return GL_RGBA; | 3284 return GL_RGBA; |
| 3217 return GL_RGB; | 3285 return GL_RGB; |
| 3218 } | 3286 } |
| 3219 | 3287 |
| 3220 } // namespace blink | 3288 } // namespace blink |
| OLD | NEW |