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