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 "modules/webgl/WebGL2RenderingContextBase.h" | 5 #include "modules/webgl/WebGL2RenderingContextBase.h" |
6 | 6 |
7 #include "bindings/modules/v8/WebGLAny.h" | 7 #include "bindings/modules/v8/WebGLAny.h" |
8 #include "core/html/HTMLCanvasElement.h" | 8 #include "core/html/HTMLCanvasElement.h" |
9 #include "core/html/HTMLImageElement.h" | 9 #include "core/html/HTMLImageElement.h" |
10 #include "core/html/HTMLVideoElement.h" | 10 #include "core/html/HTMLVideoElement.h" |
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
851 return; | 851 return; |
852 | 852 |
853 WebGLTexture* tex = validateTextureBinding("texStorage3D", target, false); | 853 WebGLTexture* tex = validateTextureBinding("texStorage3D", target, false); |
854 webContext()->texStorage3D(target, levels, internalformat, width, height, de pth); | 854 webContext()->texStorage3D(target, levels, internalformat, width, height, de pth); |
855 tex->setTexStorageInfo(target, levels, internalformat, width, height, depth) ; | 855 tex->setTexStorageInfo(target, levels, internalformat, width, height, depth) ; |
856 } | 856 } |
857 | 857 |
858 void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in ternalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, DOMArrayBufferView* pixels) | 858 void WebGL2RenderingContextBase::texImage3D(GLenum target, GLint level, GLint in ternalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, DOMArrayBufferView* pixels) |
859 { | 859 { |
860 if (isContextLost() || !validateTexFunc3DTarget("texImage3D", target) | 860 if (isContextLost() || !validateTexFunc3DTarget("texImage3D", target) |
861 || !validateTexFunc("texImage3D", NotTexSubImage2D, SourceArrayBufferVie w, target, level, internalformat, width, height, depth, border, format, type, 0, 0, 0) | 861 || !validateTexFunc("texImage3D", NotTexSubImage, SourceArrayBufferView, target, level, internalformat, width, height, depth, border, format, type, 0, 0 , 0) |
862 || !validateTexFuncData("texImage3D", level, width, height, depth, forma t, type, pixels, NullAllowed)) | 862 || !validateTexFuncData("texImage3D", level, width, height, depth, forma t, type, pixels, NullAllowed)) |
863 return; | 863 return; |
864 | 864 |
865 void* data = pixels ? pixels->baseAddress() : 0; | 865 void* data = pixels ? pixels->baseAddress() : 0; |
866 Vector<uint8_t> tempData; | 866 Vector<uint8_t> tempData; |
867 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { | 867 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { |
868 // FIXME: WebGLImageConversion needs to be updated to accept image depth . | 868 // FIXME: WebGLImageConversion needs to be updated to accept image depth . |
869 notImplemented(); | 869 notImplemented(); |
870 return; | 870 return; |
871 } | 871 } |
872 | 872 |
873 WebGLTexture* tex = validateTextureBinding("texImage3D", target, true); | 873 WebGLTexture* tex = validateTextureBinding("texImage3D", target, true); |
874 ASSERT(tex); | 874 ASSERT(tex); |
875 webContext()->texImage3D(target, level, convertTexInternalFormat(internalfor mat, type), width, height, depth, border, format, type, data); | 875 webContext()->texImage3D(target, level, convertTexInternalFormat(internalfor mat, type), width, height, depth, border, format, type, data); |
876 tex->setLevelInfo(target, level, internalformat, width, height, depth, type) ; | 876 tex->setLevelInfo(target, level, internalformat, width, height, depth, type) ; |
877 } | 877 } |
878 | 878 |
879 bool WebGL2RenderingContextBase::validateTexSubImage3D(const char* functionName, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, | |
880 GLenum format, GLenum type, GLsizei width, GLsizei height, GLsizei depth) | |
881 { | |
882 if (!validateTexFunc3DTarget(functionName, target)) | |
883 return false; | |
884 | |
885 WebGLTexture* tex = validateTextureBinding(functionName, target, false); | |
886 if (!tex) | |
887 return false; | |
888 | |
889 if (!validateTexFuncLevel(functionName, target, level)) | |
890 return false; | |
891 | |
892 if (!tex->isValid(target, level)) { | |
893 synthesizeGLError(GL_INVALID_OPERATION, "texSubImage3D", "no previously defined texture image"); | |
894 return false; | |
895 } | |
896 | |
897 // Before checking if it is in the range, check if overflow happens first. | |
898 CheckedInt<GLint> maxX = xoffset, maxY = yoffset, maxZ = zoffset; | |
899 maxX += width; | |
900 maxY += height; | |
901 maxZ += depth; | |
902 if (!maxX.isValid() || !maxY.isValid() || !maxZ.isValid() | |
903 || maxX.value() > tex->getWidth(target, level) | |
904 || maxY.value() > tex->getHeight(target, level) | |
905 || maxZ.value() > tex->getDepth(target, level)) { | |
906 synthesizeGLError(GL_INVALID_VALUE, functionName, "dimensions out of ran ge"); | |
907 return false; | |
908 } | |
909 | |
910 GLenum internalformat = tex->getInternalFormat(target, level); | |
911 if (!validateTexFuncFormatAndType(functionName, internalformat, format, type , level)) | |
912 return false; | |
913 | |
914 return true; | |
915 } | |
916 | |
917 void WebGL2RenderingContextBase::texSubImage3DImpl(GLenum target, GLint level, G Lint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, Image* i mage, WebGLImageConversion::ImageHtmlDomSource domSource, bool flipY, bool premu ltiplyAlpha) | 879 void WebGL2RenderingContextBase::texSubImage3DImpl(GLenum target, GLint level, G Lint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, Image* i mage, WebGLImageConversion::ImageHtmlDomSource domSource, bool flipY, bool premu ltiplyAlpha) |
918 { | 880 { |
919 if (!validateTexSubImage3D("texSubImage3D", target, level, xoffset, yoffset, zoffset, format, type, image->width(), image->height(), 1)) | |
920 return; | |
921 | |
922 // All calling functions check isContextLost, so a duplicate check is not ne eded here. | 881 // All calling functions check isContextLost, so a duplicate check is not ne eded here. |
923 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { | 882 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { |
924 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. | 883 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. |
925 type = GL_FLOAT; | 884 type = GL_FLOAT; |
926 } | 885 } |
927 Vector<uint8_t> data; | 886 Vector<uint8_t> data; |
928 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE); | 887 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE); |
929 if (!imageExtractor.imagePixelData()) { | 888 if (!imageExtractor.imagePixelData()) { |
930 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image"); | 889 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image"); |
931 return; | 890 return; |
(...skipping 12 matching lines...) Expand all Loading... | |
944 } | 903 } |
945 } | 904 } |
946 | 905 |
947 resetUnpackParameters(); | 906 resetUnpackParameters(); |
948 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver sion ? data.data() : imagePixelData); | 907 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, imageE xtractor.imageWidth(), imageExtractor.imageHeight(), 1, format, type, needConver sion ? data.data() : imagePixelData); |
949 restoreUnpackParameters(); | 908 restoreUnpackParameters(); |
950 } | 909 } |
951 | 910 |
952 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) | 911 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) |
953 { | 912 { |
954 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta rget, level, xoffset, yoffset, zoffset, format, type, width, height, depth) | 913 if (isContextLost() || !validateTexFunc3DTarget("texSubImage3D", target) |
955 || !validateTexFuncData("texSubImage3D", level, width, height, depth, fo rmat, type, pixels, NullAllowed)) | 914 || !validateTexFunc("texSubImage3D", TexSubImage, SourceArrayBufferView, target, level, 0, width, height, depth, 0, format, type, xoffset, yoffset, zoff set) |
915 || !validateTexFuncData("texSubImage3D", level, width, height, depth, fo rmat, type, pixels, NullNotAllowed)) | |
956 return; | 916 return; |
957 | 917 |
958 // FIXME: Ensure pixels is large enough to contain the desired texture dimen sions. | |
959 | |
960 void* data = pixels->baseAddress(); | 918 void* data = pixels->baseAddress(); |
961 Vector<uint8_t> tempData; | 919 Vector<uint8_t> tempData; |
962 bool changeUnpackParameters = false; | 920 bool changeUnpackParameters = false; |
963 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { | 921 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { |
964 // FIXME: WebGLImageConversion needs to be updated to accept image depth . | 922 // FIXME: WebGLImageConversion needs to be updated to accept image depth . |
965 notImplemented(); | 923 notImplemented(); |
966 changeUnpackParameters = true; | 924 changeUnpackParameters = true; |
967 } | 925 } |
968 if (changeUnpackParameters) | 926 if (changeUnpackParameters) |
969 resetUnpackParameters(); | 927 resetUnpackParameters(); |
970 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); | 928 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); |
971 if (changeUnpackParameters) | 929 if (changeUnpackParameters) |
972 restoreUnpackParameters(); | 930 restoreUnpackParameters(); |
973 } | 931 } |
974 | 932 |
975 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData* p ixels) | 933 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, ImageData* p ixels) |
976 { | 934 { |
977 if (isContextLost() || !pixels || !validateTexSubImage3D("texSubImage3D", ta rget, level, xoffset, yoffset, zoffset, format, type, pixels->width(), pixels->h eight(), 1)) | 935 if (!pixels) { |
936 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "no image data"); | |
937 return; | |
938 } | |
Zhenyao Mo
2015/12/30 20:17:05
if (pixels->data()->bufferBase()->isNeutered()) {
qiankun
2015/12/30 23:15:07
Done.
| |
939 if (isContextLost() || !validateTexFunc3DTarget("texSubImage3D", target) | |
940 || !validateTexFunc("texSubImage3D", TexSubImage, SourceImageData, targe t, level, 0, pixels->width(), pixels->height(), 1, 0, format, type, xoffset, yof fset, zoffset)) | |
978 return; | 941 return; |
979 | 942 |
980 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { | 943 if (type == GL_UNSIGNED_INT_10F_11F_11F_REV) { |
981 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. | 944 // The UNSIGNED_INT_10F_11F_11F_REV type pack/unpack isn't implemented. |
982 type = GL_FLOAT; | 945 type = GL_FLOAT; |
983 } | 946 } |
984 Vector<uint8_t> data; | 947 Vector<uint8_t> data; |
985 bool needConversion = true; | 948 bool needConversion = true; |
986 // The data from ImageData is always of format RGBA8. | 949 // The data from ImageData is always of format RGBA8. |
987 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required. | 950 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required. |
988 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un packPremultiplyAlpha) { | 951 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un packPremultiplyAlpha) { |
989 needConversion = false; | 952 needConversion = false; |
990 } else { | 953 } else { |
991 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { | 954 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { |
992 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data "); | 955 synthesizeGLError(GL_INVALID_VALUE, "texSubImage3D", "bad image data "); |
993 return; | 956 return; |
994 } | 957 } |
995 } | 958 } |
996 resetUnpackParameters(); | 959 resetUnpackParameters(); |
997 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, pixels ->width(), pixels->height(), 1, format, type, needConversion ? data.data() : pix els->data()->data()); | 960 webContext()->texSubImage3D(target, level, xoffset, yoffset, zoffset, pixels ->width(), pixels->height(), 1, format, type, needConversion ? data.data() : pix els->data()->data()); |
998 restoreUnpackParameters(); | 961 restoreUnpackParameters(); |
999 } | 962 } |
1000 | 963 |
1001 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLImageEle ment* image, ExceptionState& exceptionState) | 964 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLImageEle ment* image, ExceptionState& exceptionState) |
1002 { | 965 { |
1003 if (isContextLost() || !image || !validateHTMLImageElement("texSubImage3D", image, exceptionState)) | 966 if (isContextLost() || !image || !validateHTMLImageElement("texSubImage3D", image, exceptionState) |
Zhenyao Mo
2015/12/30 20:17:05
Get rid of !image
qiankun
2015/12/30 23:15:07
Done.
| |
967 || !validateTexFunc3DTarget("texSubImage3D", target)) | |
1004 return; | 968 return; |
1005 | 969 |
1006 RefPtr<Image> imageForRender = image->cachedImage()->image(); | 970 RefPtr<Image> imageForRender = image->cachedImage()->image(); |
1007 if (imageForRender->isSVGImage()) | 971 if (imageForRender->isSVGImage()) |
1008 imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width( ), image->height(), "texSubImage3D"); | 972 imageForRender = drawImageIntoBuffer(imageForRender.get(), image->width( ), image->height(), "texSubImage3D"); |
1009 | 973 |
974 if (!imageForRender || !validateTexFunc("texSubImage3D", TexSubImage, Source HTMLImageElement, target, level, 0, imageForRender->width(), imageForRender->hei ght(), 1, 0, format, type, xoffset, yoffset, zoffset)) | |
975 return; | |
976 | |
1010 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, im ageForRender.get(), WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackP remultiplyAlpha); | 977 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, im ageForRender.get(), WebGLImageConversion::HtmlDomImage, m_unpackFlipY, m_unpackP remultiplyAlpha); |
1011 } | 978 } |
1012 | 979 |
1013 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLCanvasEl ement* canvas, ExceptionState& exceptionState) | 980 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLCanvasEl ement* canvas, ExceptionState& exceptionState) |
1014 { | 981 { |
1015 if (isContextLost() || !validateHTMLCanvasElement("texSubImage3D", canvas, e xceptionState)) | 982 if (isContextLost() || !validateHTMLCanvasElement("texSubImage3D", canvas, e xceptionState) |
983 || !validateTexFunc3DTarget("texSubImage3D", target) | |
984 || !validateTexFunc("texSubImage3D", TexSubImage, SourceHTMLCanvasElemen t, target, level, 0, canvas->width(), canvas->height(), 1, 0, format, type, xoff set, yoffset, zoffset)) | |
1016 return; | 985 return; |
1017 | 986 |
1018 WebGLTexture* texture = validateTextureBinding("texSubImage3D", target, fals e); | 987 WebGLTexture* texture = validateTextureBinding("texSubImage3D", target, fals e); |
1019 ASSERT(texture); | 988 ASSERT(texture); |
1020 GLenum internalformat = texture->getInternalFormat(target, level); | 989 GLenum internalformat = texture->getInternalFormat(target, level); |
1021 | 990 |
1022 if (!canvas->renderingContext() || !canvas->renderingContext()->isAccelerate d() || !canUseTexImageCanvasByGPU(internalformat, type)) { | 991 if (!canvas->renderingContext() || !canvas->renderingContext()->isAccelerate d() || !canUseTexImageCanvasByGPU(internalformat, type)) { |
1023 ASSERT(!canvas->renderingContext() || canvas->renderingContext()->is2d() ); | 992 ASSERT(!canvas->renderingContext() || canvas->renderingContext()->is2d() ); |
1024 // 2D canvas has only FrontBuffer. | 993 // 2D canvas has only FrontBuffer. |
1025 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type , canvas->copiedImage(FrontBuffer, PreferAcceleration).get(), | 994 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type , canvas->copiedImage(FrontBuffer, PreferAcceleration).get(), |
1026 WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremulti plyAlpha); | 995 WebGLImageConversion::HtmlDomCanvas, m_unpackFlipY, m_unpackPremulti plyAlpha); |
1027 return; | 996 return; |
1028 } | 997 } |
1029 | 998 |
1030 texImageCanvasByGPU(TexSubImage3DByGPU, texture, target, level, GL_RGBA, typ e, xoffset, yoffset, zoffset, canvas); | 999 texImageCanvasByGPU(TexSubImage3DByGPU, texture, target, level, GL_RGBA, typ e, xoffset, yoffset, zoffset, canvas); |
1031 } | 1000 } |
1032 | 1001 |
1033 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLVideoEle ment* video, ExceptionState& exceptionState) | 1002 void WebGL2RenderingContextBase::texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLenum format, GLenum type, HTMLVideoEle ment* video, ExceptionState& exceptionState) |
1034 { | 1003 { |
1035 if (isContextLost() || !validateHTMLVideoElement("texSubImage3D", video, exc eptionState)) | 1004 if (isContextLost() || !validateHTMLVideoElement("texSubImage3D", video, exc eptionState) |
1005 || !validateTexFunc3DTarget("texSubImage3D", target) | |
1006 || !validateTexFunc("texSubImage3D", TexSubImage, SourceHTMLVideoElement , target, level, 0, video->videoWidth(), video->videoHeight(), 1, 0, format, typ e, xoffset, yoffset, zoffset)) | |
1036 return; | 1007 return; |
1037 | 1008 |
1038 RefPtr<Image> image = videoFrameToImage(video); | 1009 RefPtr<Image> image = videoFrameToImage(video); |
1039 if (!image) | 1010 if (!image) |
1040 return; | 1011 return; |
1041 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, im age.get(), WebGLImageConversion::HtmlDomVideo, m_unpackFlipY, m_unpackPremultipl yAlpha); | 1012 texSubImage3DImpl(target, level, xoffset, yoffset, zoffset, format, type, im age.get(), WebGLImageConversion::HtmlDomVideo, m_unpackFlipY, m_unpackPremultipl yAlpha); |
1042 } | 1013 } |
1043 | 1014 |
1044 void WebGL2RenderingContextBase::copyTexSubImage3D(GLenum target, GLint level, G Lint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLs izei height) | 1015 void WebGL2RenderingContextBase::copyTexSubImage3D(GLenum target, GLint level, G Lint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLs izei height) |
1045 { | 1016 { |
(...skipping 16 matching lines...) Expand all Loading... | |
1062 if (!validateTexFunc3DTarget("compressedTexImage3D", target)) | 1033 if (!validateTexFunc3DTarget("compressedTexImage3D", target)) |
1063 return; | 1034 return; |
1064 if (!validateTexFuncLevel("compressedTexImage3D", target, level)) | 1035 if (!validateTexFuncLevel("compressedTexImage3D", target, level)) |
1065 return; | 1036 return; |
1066 if (!validateCompressedTexFormat("compressedTexImage3D", internalformat)) | 1037 if (!validateCompressedTexFormat("compressedTexImage3D", internalformat)) |
1067 return; | 1038 return; |
1068 if (border) { | 1039 if (border) { |
1069 synthesizeGLError(GL_INVALID_VALUE, "compressedTexImage3D", "border not 0"); | 1040 synthesizeGLError(GL_INVALID_VALUE, "compressedTexImage3D", "border not 0"); |
1070 return; | 1041 return; |
1071 } | 1042 } |
1072 if (!validateCompressedTexDimensions("compressedTexImage3D", NotTexSubImage2 D, target, level, width, height, depth, internalformat)) | 1043 if (!validateCompressedTexDimensions("compressedTexImage3D", NotTexSubImage, target, level, width, height, depth, internalformat)) |
1073 return; | 1044 return; |
1074 if (!validateCompressedTexFuncData("compressedTexImage3D", width, height, de pth, internalformat, data)) | 1045 if (!validateCompressedTexFuncData("compressedTexImage3D", width, height, de pth, internalformat, data)) |
1075 return; | 1046 return; |
1076 | 1047 |
1077 WebGLTexture* tex = validateTextureBinding("compressedTexImage3D", target, t rue); | 1048 WebGLTexture* tex = validateTextureBinding("compressedTexImage3D", target, t rue); |
1078 if (!tex) | 1049 if (!tex) |
1079 return; | 1050 return; |
1080 if (tex->isImmutable()) { | 1051 if (tex->isImmutable()) { |
1081 synthesizeGLError(GL_INVALID_OPERATION, "compressedTexImage3D", "attempt ed to modify immutable texture"); | 1052 synthesizeGLError(GL_INVALID_OPERATION, "compressedTexImage3D", "attempt ed to modify immutable texture"); |
1082 return; | 1053 return; |
(...skipping 2389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3472 | 3443 |
3473 WebGLSampler* sampler = m_samplerUnits[unit]; | 3444 WebGLSampler* sampler = m_samplerUnits[unit]; |
3474 | 3445 |
3475 if (sampler) | 3446 if (sampler) |
3476 return sampler->getSamplerState(); | 3447 return sampler->getSamplerState(); |
3477 | 3448 |
3478 return WebGLRenderingContextBase::getTextureUnitSamplerState(target, unit); | 3449 return WebGLRenderingContextBase::getTextureUnitSamplerState(target, unit); |
3479 } | 3450 } |
3480 | 3451 |
3481 } // namespace blink | 3452 } // namespace blink |
OLD | NEW |