Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h

Issue 2389203002: reflow comments in modules/webgl (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 // to the back-buffer of m_context. 677 // to the back-buffer of m_context.
678 RefPtr<DrawingBuffer> m_drawingBuffer; 678 RefPtr<DrawingBuffer> m_drawingBuffer;
679 DrawingBuffer* drawingBuffer() const; 679 DrawingBuffer* drawingBuffer() const;
680 680
681 RefPtr<WebGLContextGroup> m_contextGroup; 681 RefPtr<WebGLContextGroup> m_contextGroup;
682 682
683 bool m_isHidden; 683 bool m_isHidden;
684 LostContextMode m_contextLostMode; 684 LostContextMode m_contextLostMode;
685 AutoRecoveryMethod m_autoRecoveryMethod; 685 AutoRecoveryMethod m_autoRecoveryMethod;
686 // Dispatches a context lost event once it is determined that one is needed. 686 // Dispatches a context lost event once it is determined that one is needed.
687 // This is used for synthetic, WEBGL_lose_context and real context losses. For real ones, it's 687 // This is used for synthetic, WEBGL_lose_context and real context losses. For
688 // likely that there's no JavaScript on the stack, but that might be dependent 688 // real ones, it's likely that there's no JavaScript on the stack, but that
689 // on how exactly the platform discovers that the context was lost. For better 689 // might be dependent on how exactly the platform discovers that the context
690 // portability we always defer the dispatch of the event. 690 // was lost. For better portability we always defer the dispatch of the event.
691 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer; 691 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer;
692 bool m_restoreAllowed; 692 bool m_restoreAllowed;
693 Timer<WebGLRenderingContextBase> m_restoreTimer; 693 Timer<WebGLRenderingContextBase> m_restoreTimer;
694 694
695 bool m_markedCanvasDirty; 695 bool m_markedCanvasDirty;
696 HeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects; 696 HeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects;
697 697
698 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and stored values for ELEMENT_ARRAY_BUFFER 698 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and
699 // stored values for ELEMENT_ARRAY_BUFFER
699 Member<WebGLBuffer> m_boundArrayBuffer; 700 Member<WebGLBuffer> m_boundArrayBuffer;
700 701
701 Member<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject; 702 Member<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject;
702 Member<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; 703 Member<WebGLVertexArrayObjectBase> m_boundVertexArrayObject;
703 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase*); 704 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase*);
704 705
705 enum VertexAttribValueType { 706 enum VertexAttribValueType {
706 Float32ArrayType, 707 Float32ArrayType,
707 Int32ArrayType, 708 Int32ArrayType,
708 Uint32ArrayType, 709 Uint32ArrayType,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 GLfloat m_clearColor[4]; 763 GLfloat m_clearColor[4];
763 bool m_scissorEnabled; 764 bool m_scissorEnabled;
764 GLfloat m_clearDepth; 765 GLfloat m_clearDepth;
765 GLint m_clearStencil; 766 GLint m_clearStencil;
766 GLboolean m_colorMask[4]; 767 GLboolean m_colorMask[4];
767 GLboolean m_depthMask; 768 GLboolean m_depthMask;
768 769
769 bool m_stencilEnabled; 770 bool m_stencilEnabled;
770 GLuint m_stencilMask, m_stencilMaskBack; 771 GLuint m_stencilMask, m_stencilMaskBack;
771 GLint m_stencilFuncRef, 772 GLint m_stencilFuncRef,
772 m_stencilFuncRefBack; // Note that these are the user specified values, n ot the internal clamped value. 773 m_stencilFuncRefBack; // Note that these are the user specified values,
774 // not the internal clamped value.
773 GLuint m_stencilFuncMask, m_stencilFuncMaskBack; 775 GLuint m_stencilFuncMask, m_stencilFuncMaskBack;
774 776
775 bool m_isDepthStencilSupported; 777 bool m_isDepthStencilSupported;
776 778
777 bool m_synthesizedErrorsToConsole; 779 bool m_synthesizedErrorsToConsole;
778 int m_numGLErrorsToConsoleAllowed; 780 int m_numGLErrorsToConsoleAllowed;
779 781
780 unsigned long m_onePlusMaxNonDefaultTextureUnit; 782 unsigned long m_onePlusMaxNonDefaultTextureUnit;
781 783
782 std::unique_ptr<Extensions3DUtil> m_extensionsUtil; 784 std::unique_ptr<Extensions3DUtil> m_extensionsUtil;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 m_extensions.append( 878 m_extensions.append(
877 TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes)); 879 TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes));
878 } 880 }
879 881
880 bool extensionSupportedAndAllowed(const ExtensionTracker*); 882 bool extensionSupportedAndAllowed(const ExtensionTracker*);
881 883
882 inline bool extensionEnabled(WebGLExtensionName name) { 884 inline bool extensionEnabled(WebGLExtensionName name) {
883 return m_extensionEnabled[name]; 885 return m_extensionEnabled[name];
884 } 886 }
885 887
886 // ScopedDrawingBufferBinder is used for ReadPixels/CopyTexImage2D/CopySubImag e2D to read from 888 // ScopedDrawingBufferBinder is used for
887 // a multisampled DrawingBuffer. In this situation, we need to blit to a singl e sampled buffer 889 // ReadPixels/CopyTexImage2D/CopySubImage2D to read from a multisampled
888 // for reading, during which the bindings could be changed and need to be reco vered. 890 // DrawingBuffer. In this situation, we need to blit to a single sampled
891 // buffer for reading, during which the bindings could be changed and need to
892 // be recovered.
889 class ScopedDrawingBufferBinder { 893 class ScopedDrawingBufferBinder {
890 STACK_ALLOCATED(); 894 STACK_ALLOCATED();
891 895
892 public: 896 public:
893 ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer, 897 ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer,
894 WebGLFramebuffer* framebufferBinding) 898 WebGLFramebuffer* framebufferBinding)
895 : m_drawingBuffer(drawingBuffer), 899 : m_drawingBuffer(drawingBuffer),
896 m_readFramebufferBinding(framebufferBinding) { 900 m_readFramebufferBinding(framebufferBinding) {
897 // Commit DrawingBuffer if needed (e.g., for multisampling) 901 // Commit DrawingBuffer if needed (e.g., for multisampling)
898 if (!m_readFramebufferBinding && m_drawingBuffer) 902 if (!m_readFramebufferBinding && m_drawingBuffer)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 ScriptValue getBooleanParameter(ScriptState*, GLenum); 939 ScriptValue getBooleanParameter(ScriptState*, GLenum);
936 ScriptValue getBooleanArrayParameter(ScriptState*, GLenum); 940 ScriptValue getBooleanArrayParameter(ScriptState*, GLenum);
937 ScriptValue getFloatParameter(ScriptState*, GLenum); 941 ScriptValue getFloatParameter(ScriptState*, GLenum);
938 ScriptValue getIntParameter(ScriptState*, GLenum); 942 ScriptValue getIntParameter(ScriptState*, GLenum);
939 ScriptValue getInt64Parameter(ScriptState*, GLenum); 943 ScriptValue getInt64Parameter(ScriptState*, GLenum);
940 ScriptValue getUnsignedIntParameter(ScriptState*, GLenum); 944 ScriptValue getUnsignedIntParameter(ScriptState*, GLenum);
941 ScriptValue getWebGLFloatArrayParameter(ScriptState*, GLenum); 945 ScriptValue getWebGLFloatArrayParameter(ScriptState*, GLenum);
942 ScriptValue getWebGLIntArrayParameter(ScriptState*, GLenum); 946 ScriptValue getWebGLIntArrayParameter(ScriptState*, GLenum);
943 947
944 // Clear the backbuffer if it was composited since the last operation. 948 // Clear the backbuffer if it was composited since the last operation.
945 // clearMask is set to the bitfield of any clear that would happen anyway at t his time 949 // clearMask is set to the bitfield of any clear that would happen anyway at
946 // and the function returns |CombinedClear| if that clear is now unnecessary. 950 // this time and the function returns |CombinedClear| if that clear is now
951 // unnecessary.
947 enum HowToClear { 952 enum HowToClear {
948 // Skip clearing the backbuffer. 953 // Skip clearing the backbuffer.
949 Skipped, 954 Skipped,
950 // Clear the backbuffer. 955 // Clear the backbuffer.
951 JustClear, 956 JustClear,
952 // Combine webgl.clear() API with the backbuffer clear, so webgl.clear() 957 // Combine webgl.clear() API with the backbuffer clear, so webgl.clear()
953 // doesn't have to call glClear() again. 958 // doesn't have to call glClear() again.
954 CombinedClear 959 CombinedClear
955 }; 960 };
956 HowToClear clearIfComposited(GLbitfield clearMask = 0); 961 HowToClear clearIfComposited(GLbitfield clearMask = 0);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 GLint xoffset, 1000 GLint xoffset,
996 GLint yoffset, 1001 GLint yoffset,
997 GLint zoffset, 1002 GLint zoffset,
998 GLenum format, 1003 GLenum format,
999 GLenum type, 1004 GLenum type,
1000 Image*, 1005 Image*,
1001 WebGLImageConversion::ImageHtmlDomSource, 1006 WebGLImageConversion::ImageHtmlDomSource,
1002 bool flipY, 1007 bool flipY,
1003 bool premultiplyAlpha); 1008 bool premultiplyAlpha);
1004 1009
1005 // Copy from the source directly to the texture via the gpu, without a read-ba ck to system memory. 1010 // Copy from the source directly to the texture via the gpu, without a
1006 // Souce could be canvas or imageBitmap. 1011 // read-back to system memory. Souce could be canvas or imageBitmap.
1007 void texImageByGPU(TexImageByGPUType, 1012 void texImageByGPU(TexImageByGPUType,
1008 WebGLTexture*, 1013 WebGLTexture*,
1009 GLenum target, 1014 GLenum target,
1010 GLint level, 1015 GLint level,
1011 GLint internalformat, 1016 GLint internalformat,
1012 GLenum type, 1017 GLenum type,
1013 GLint xoffset, 1018 GLint xoffset,
1014 GLint yoffset, 1019 GLint yoffset,
1015 GLint zoffset, 1020 GLint zoffset,
1016 CanvasImageSource*); 1021 CanvasImageSource*);
1017 virtual bool canUseTexImageByGPU(TexImageFunctionID, 1022 virtual bool canUseTexImageByGPU(TexImageFunctionID,
1018 GLint internalformat, 1023 GLint internalformat,
1019 GLenum type); 1024 GLenum type);
1020 1025
1021 virtual WebGLImageConversion::PixelStoreParams getPackPixelStoreParams(); 1026 virtual WebGLImageConversion::PixelStoreParams getPackPixelStoreParams();
1022 virtual WebGLImageConversion::PixelStoreParams getUnpackPixelStoreParams( 1027 virtual WebGLImageConversion::PixelStoreParams getUnpackPixelStoreParams(
1023 TexImageDimension); 1028 TexImageDimension);
1024 1029
1025 // Helper function for copyTex{Sub}Image, check whether the internalformat 1030 // Helper function for copyTex{Sub}Image, check whether the internalformat
1026 // and the color buffer format of the current bound framebuffer combination 1031 // and the color buffer format of the current bound framebuffer combination
1027 // is valid. 1032 // is valid.
1028 bool isTexInternalFormatColorBufferCombinationValid(GLenum texInternalFormat, 1033 bool isTexInternalFormatColorBufferCombinationValid(GLenum texInternalFormat,
1029 GLenum colorBufferFormat); 1034 GLenum colorBufferFormat);
1030 1035
1031 // Helper function to verify limits on the length of uniform and attribute loc ations. 1036 // Helper function to verify limits on the length of uniform and attribute
1037 // locations.
1032 virtual unsigned getMaxWebGLLocationLength() const { return 256; } 1038 virtual unsigned getMaxWebGLLocationLength() const { return 256; }
1033 bool validateLocationLength(const char* functionName, const String&); 1039 bool validateLocationLength(const char* functionName, const String&);
1034 1040
1035 // Helper function to check if size is non-negative. 1041 // Helper function to check if size is non-negative.
1036 // Generate GL error and return false for negative inputs; otherwise, return t rue. 1042 // Generate GL error and return false for negative inputs; otherwise, return
1043 // true.
1037 bool validateSize(const char* functionName, GLint x, GLint y, GLint z = 0); 1044 bool validateSize(const char* functionName, GLint x, GLint y, GLint z = 0);
1038 1045
1039 // Helper function to check if all characters in the string belong to the 1046 // Helper function to check if all characters in the string belong to the
1040 // ASCII subset as defined in GLSL ES 1.0 spec section 3.1. 1047 // ASCII subset as defined in GLSL ES 1.0 spec section 3.1.
1041 bool validateString(const char* functionName, const String&); 1048 bool validateString(const char* functionName, const String&);
1042 1049
1043 // Helper function to check if all characters in the shader source belong to t he ASCII 1050 // Helper function to check if all characters in the shader source belong to
1044 // subset as defined in GLSL ES 1.0 spec section 3.1 Character Set for WebGL 1 .0 and 1051 // the ASCII subset as defined in GLSL ES 1.0 spec section 3.1 Character Set
1045 // in GLSL ES 3.00 spec section 3.1 Character Set for WebGL 2.0. 1052 // for WebGL 1.0 and in GLSL ES 3.00 spec section 3.1 Character Set for WebGL
1053 // 2.0.
1046 bool validateShaderSource(const String&); 1054 bool validateShaderSource(const String&);
1047 1055
1048 // Helper function to check texture binding target and texture bound to the ta rget. 1056 // Helper function to check texture binding target and texture bound to the
1049 // Generate GL errors and return 0 if target is invalid or texture bound is 1057 // target. Generate GL errors and return 0 if target is invalid or texture
1050 // null. Otherwise, return the texture bound to the target. 1058 // bound is null. Otherwise, return the texture bound to the target.
1051 WebGLTexture* validateTextureBinding(const char* functionName, GLenum target); 1059 WebGLTexture* validateTextureBinding(const char* functionName, GLenum target);
1052 1060
1053 // Wrapper function for validateTexture2D(3D)Binding, used in texImageHelper f unctions. 1061 // Wrapper function for validateTexture2D(3D)Binding, used in texImageHelper
1062 // functions.
1054 virtual WebGLTexture* validateTexImageBinding(const char*, 1063 virtual WebGLTexture* validateTexImageBinding(const char*,
1055 TexImageFunctionID, 1064 TexImageFunctionID,
1056 GLenum); 1065 GLenum);
1057 1066
1058 // Helper function to check texture 2D target and texture bound to the target. 1067 // Helper function to check texture 2D target and texture bound to the target.
1059 // Generate GL errors and return 0 if target is invalid or texture bound is 1068 // Generate GL errors and return 0 if target is invalid or texture bound is
1060 // null. Otherwise, return the texture bound to the target. 1069 // null. Otherwise, return the texture bound to the target.
1061 WebGLTexture* validateTexture2DBinding(const char* functionName, 1070 WebGLTexture* validateTexture2DBinding(const char* functionName,
1062 GLenum target); 1071 GLenum target);
1063 1072
1064 void addExtensionSupportedFormatsTypes(); 1073 void addExtensionSupportedFormatsTypes();
1065 1074
1066 // Helper function to check input internalformat/format/type for functions Tex {Sub}Image taking TexImageSource source data. 1075 // Helper function to check input internalformat/format/type for functions
1067 // Generates GL error and returns false if parameters are invalid. 1076 // Tex{Sub}Image taking TexImageSource source data. Generates GL error and
1077 // returns false if parameters are invalid.
1068 bool validateTexImageSourceFormatAndType(const char* functionName, 1078 bool validateTexImageSourceFormatAndType(const char* functionName,
1069 TexImageFunctionType, 1079 TexImageFunctionType,
1070 GLenum internalformat, 1080 GLenum internalformat,
1071 GLenum format, 1081 GLenum format,
1072 GLenum type); 1082 GLenum type);
1073 1083
1074 // Helper function to check input internalformat/format/type for functions Tex {Sub}Image. 1084 // Helper function to check input internalformat/format/type for functions
1075 // Generates GL error and returns false if parameters are invalid. 1085 // Tex{Sub}Image. Generates GL error and returns false if parameters are
1086 // invalid.
1076 bool validateTexFuncFormatAndType(const char* functionName, 1087 bool validateTexFuncFormatAndType(const char* functionName,
1077 TexImageFunctionType, 1088 TexImageFunctionType,
1078 GLenum internalformat, 1089 GLenum internalformat,
1079 GLenum format, 1090 GLenum format,
1080 GLenum type, 1091 GLenum type,
1081 GLint level); 1092 GLint level);
1082 1093
1083 // Helper function to check readbuffer validity for copyTex{Sub}Image. 1094 // Helper function to check readbuffer validity for copyTex{Sub}Image.
1084 // If yes, obtains the bound read framebuffer, returns true. 1095 // If yes, obtains the bound read framebuffer, returns true.
1085 // If not, generates a GL error, returns false. 1096 // If not, generates a GL error, returns false.
1086 bool validateReadBufferAndGetInfo(const char* functionName, 1097 bool validateReadBufferAndGetInfo(const char* functionName,
1087 WebGLFramebuffer*& readFramebufferBinding); 1098 WebGLFramebuffer*& readFramebufferBinding);
1088 1099
1089 // Helper function to check format/type and ArrayBuffer view type for readPixe ls. 1100 // Helper function to check format/type and ArrayBuffer view type for
1101 // readPixels.
1090 // Generates INVALID_ENUM and returns false if parameters are invalid. 1102 // Generates INVALID_ENUM and returns false if parameters are invalid.
1091 // Generates INVALID_OPERATION if ArrayBuffer view type is incompatible with t ype. 1103 // Generates INVALID_OPERATION if ArrayBuffer view type is incompatible with
1104 // type.
1092 virtual bool validateReadPixelsFormatAndType(GLenum format, 1105 virtual bool validateReadPixelsFormatAndType(GLenum format,
1093 GLenum type, 1106 GLenum type,
1094 DOMArrayBufferView*); 1107 DOMArrayBufferView*);
1095 1108
1096 // Helper function to check parameters of readPixels. Returns true if all para meters 1109 // Helper function to check parameters of readPixels. Returns true if all
1097 // are valid. Otherwise, generates appropriate error and returns false. 1110 // parameters are valid. Otherwise, generates appropriate error and returns
1111 // false.
1098 bool validateReadPixelsFuncParameters(GLsizei width, 1112 bool validateReadPixelsFuncParameters(GLsizei width,
1099 GLsizei height, 1113 GLsizei height,
1100 GLenum format, 1114 GLenum format,
1101 GLenum type, 1115 GLenum type,
1102 DOMArrayBufferView*, 1116 DOMArrayBufferView*,
1103 long long bufferSize); 1117 long long bufferSize);
1104 1118
1105 virtual GLint getMaxTextureLevelForTarget(GLenum target); 1119 virtual GLint getMaxTextureLevelForTarget(GLenum target);
1106 1120
1107 // Helper function to check input level for functions {copy}Tex{Sub}Image. 1121 // Helper function to check input level for functions {copy}Tex{Sub}Image.
1108 // Generates GL error and returns false if level is invalid. 1122 // Generates GL error and returns false if level is invalid.
1109 bool validateTexFuncLevel(const char* functionName, 1123 bool validateTexFuncLevel(const char* functionName,
1110 GLenum target, 1124 GLenum target,
1111 GLint level); 1125 GLint level);
1112 1126
1113 // Helper function to check if a 64-bit value is non-negative and can fit into a 32-bit integer. 1127 // Helper function to check if a 64-bit value is non-negative and can fit into
1114 // Generates GL error and returns false if not. 1128 // a 32-bit integer. Generates GL error and returns false if not.
1115 bool validateValueFitNonNegInt32(const char* functionName, 1129 bool validateValueFitNonNegInt32(const char* functionName,
1116 const char* paramName, 1130 const char* paramName,
1117 long long value); 1131 long long value);
1118 1132
1119 enum TexFuncValidationSourceType { 1133 enum TexFuncValidationSourceType {
1120 SourceArrayBufferView, 1134 SourceArrayBufferView,
1121 SourceImageData, 1135 SourceImageData,
1122 SourceHTMLImageElement, 1136 SourceHTMLImageElement,
1123 SourceHTMLCanvasElement, 1137 SourceHTMLCanvasElement,
1124 SourceHTMLVideoElement, 1138 SourceHTMLVideoElement,
1125 SourceImageBitmap, 1139 SourceImageBitmap,
1126 SourceUnpackBuffer, 1140 SourceUnpackBuffer,
1127 }; 1141 };
1128 1142
1129 // Helper function for tex{Sub}Image{2|3}D to check if the input format/type/l evel/target/width/height/depth/border/xoffset/yoffset/zoffset are valid. 1143 // Helper function for tex{Sub}Image{2|3}D to check if the input
1130 // Otherwise, it would return quickly without doing other work. 1144 // format/type/level/target/width/height/depth/border/xoffset/yoffset/zoffset
1145 // are valid. Otherwise, it would return quickly without doing other work.
1131 bool validateTexFunc(const char* functionName, 1146 bool validateTexFunc(const char* functionName,
1132 TexImageFunctionType, 1147 TexImageFunctionType,
1133 TexFuncValidationSourceType, 1148 TexFuncValidationSourceType,
1134 GLenum target, 1149 GLenum target,
1135 GLint level, 1150 GLint level,
1136 GLenum internalformat, 1151 GLenum internalformat,
1137 GLsizei width, 1152 GLsizei width,
1138 GLsizei height, 1153 GLsizei height,
1139 GLsizei depth, 1154 GLsizei depth,
1140 GLint border, 1155 GLint border,
1141 GLenum format, 1156 GLenum format,
1142 GLenum type, 1157 GLenum type,
1143 GLint xoffset, 1158 GLint xoffset,
1144 GLint yoffset, 1159 GLint yoffset,
1145 GLint zoffset); 1160 GLint zoffset);
1146 1161
1147 // Helper function to check input width and height for functions {copy, compre ssed}Tex{Sub}Image. 1162 // Helper function to check input width and height for functions {copy,
1148 // Generates GL error and returns false if width or height is invalid. 1163 // compressed}Tex{Sub}Image. Generates GL error and returns false if width or
1164 // height is invalid.
1149 bool validateTexFuncDimensions(const char* functionName, 1165 bool validateTexFuncDimensions(const char* functionName,
1150 TexImageFunctionType, 1166 TexImageFunctionType,
1151 GLenum target, 1167 GLenum target,
1152 GLint level, 1168 GLint level,
1153 GLsizei width, 1169 GLsizei width,
1154 GLsizei height, 1170 GLsizei height,
1155 GLsizei depth); 1171 GLsizei depth);
1156 1172
1157 // Helper function to check input parameters for functions {copy}Tex{Sub}Image . 1173 // Helper function to check input parameters for functions
1158 // Generates GL error and returns false if parameters are invalid. 1174 // {copy}Tex{Sub}Image. Generates GL error and returns false if parameters
1175 // are invalid.
1159 bool validateTexFuncParameters(const char* functionName, 1176 bool validateTexFuncParameters(const char* functionName,
1160 TexImageFunctionType, 1177 TexImageFunctionType,
1161 TexFuncValidationSourceType, 1178 TexFuncValidationSourceType,
1162 GLenum target, 1179 GLenum target,
1163 GLint level, 1180 GLint level,
1164 GLenum internalformat, 1181 GLenum internalformat,
1165 GLsizei width, 1182 GLsizei width,
1166 GLsizei height, 1183 GLsizei height,
1167 GLsizei depth, 1184 GLsizei depth,
1168 GLint border, 1185 GLint border,
(...skipping 22 matching lines...) Expand all
1191 // copyTexSubImage2D. 1208 // copyTexSubImage2D.
1192 // Generates GL error and returns false if the format is not settable. 1209 // Generates GL error and returns false if the format is not settable.
1193 bool validateSettableTexFormat(const char* functionName, GLenum format); 1210 bool validateSettableTexFormat(const char* functionName, GLenum format);
1194 1211
1195 // Helper function to validate format for CopyTexImage. 1212 // Helper function to validate format for CopyTexImage.
1196 bool validateCopyTexFormat(const char* functionName, GLenum format); 1213 bool validateCopyTexFormat(const char* functionName, GLenum format);
1197 1214
1198 // Helper function for validating compressed texture formats. 1215 // Helper function for validating compressed texture formats.
1199 bool validateCompressedTexFormat(const char* functionName, GLenum format); 1216 bool validateCompressedTexFormat(const char* functionName, GLenum format);
1200 1217
1201 // Helper function to validate if front/back stencilMask and stencilFunc setti ngs are the same. 1218 // Helper function to validate if front/back stencilMask and stencilFunc
1219 // settings are the same.
1202 bool validateStencilSettings(const char* functionName); 1220 bool validateStencilSettings(const char* functionName);
1203 1221
1204 // Helper function to validate stencil or depth func. 1222 // Helper function to validate stencil or depth func.
1205 bool validateStencilOrDepthFunc(const char* functionName, GLenum); 1223 bool validateStencilOrDepthFunc(const char* functionName, GLenum);
1206 1224
1207 // Helper function for texParameterf and texParameteri. 1225 // Helper function for texParameterf and texParameteri.
1208 void texParameter(GLenum target, 1226 void texParameter(GLenum target,
1209 GLenum pname, 1227 GLenum pname,
1210 GLfloat paramf, 1228 GLfloat paramf,
1211 GLint parami, 1229 GLint parami,
1212 bool isFloat); 1230 bool isFloat);
1213 1231
1214 // Helper function to print GL errors to console. 1232 // Helper function to print GL errors to console.
1215 void printGLErrorToConsole(const String&); 1233 void printGLErrorToConsole(const String&);
1216 1234
1217 // Helper function to print warnings to console. Currently 1235 // Helper function to print warnings to console. Currently
1218 // used only to warn about use of obsolete functions. 1236 // used only to warn about use of obsolete functions.
1219 void printWarningToConsole(const String&); 1237 void printWarningToConsole(const String&);
1220 1238
1221 // Helper function to validate the target for checkFramebufferStatus and valid ateFramebufferFuncParameters. 1239 // Helper function to validate the target for checkFramebufferStatus and
1240 // validateFramebufferFuncParameters.
1222 virtual bool validateFramebufferTarget(GLenum target); 1241 virtual bool validateFramebufferTarget(GLenum target);
1223 1242
1224 // Get the framebuffer bound to given target 1243 // Get the framebuffer bound to given target
1225 virtual WebGLFramebuffer* getFramebufferBinding(GLenum target); 1244 virtual WebGLFramebuffer* getFramebufferBinding(GLenum target);
1226 1245
1227 virtual WebGLFramebuffer* getReadFramebufferBinding(); 1246 virtual WebGLFramebuffer* getReadFramebufferBinding();
1228 1247
1229 // Helper function to validate input parameters for framebuffer functions. 1248 // Helper function to validate input parameters for framebuffer functions.
1230 // Generate GL error if parameters are illegal. 1249 // Generate GL error if parameters are illegal.
1231 bool validateFramebufferFuncParameters(const char* functionName, 1250 bool validateFramebufferFuncParameters(const char* functionName,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1277 GLsizei requiredMinSize) { 1296 GLsizei requiredMinSize) {
1278 if (!v.dataMaybeOnStack()) { 1297 if (!v.dataMaybeOnStack()) {
1279 synthesizeGLError(GL_INVALID_VALUE, functionName, "no array"); 1298 synthesizeGLError(GL_INVALID_VALUE, functionName, "no array");
1280 return false; 1299 return false;
1281 } 1300 }
1282 return validateUniformMatrixParameters(functionName, location, false, 1301 return validateUniformMatrixParameters(functionName, location, false,
1283 v.dataMaybeOnStack(), v.length(), 1302 v.dataMaybeOnStack(), v.length(),
1284 requiredMinSize); 1303 requiredMinSize);
1285 } 1304 }
1286 1305
1287 // Helper function to validate the target for bufferData and getBufferParamete r. 1306 // Helper function to validate the target for bufferData and
1307 // getBufferParameter.
1288 virtual bool validateBufferTarget(const char* functionName, GLenum target); 1308 virtual bool validateBufferTarget(const char* functionName, GLenum target);
1289 1309
1290 // Helper function to validate the target for bufferData. 1310 // Helper function to validate the target for bufferData.
1291 // Return the current bound buffer to target, or 0 if the target is invalid. 1311 // Return the current bound buffer to target, or 0 if the target is invalid.
1292 virtual WebGLBuffer* validateBufferDataTarget(const char* functionName, 1312 virtual WebGLBuffer* validateBufferDataTarget(const char* functionName,
1293 GLenum target); 1313 GLenum target);
1294 // Helper function to validate the usage for bufferData. 1314 // Helper function to validate the usage for bufferData.
1295 virtual bool validateBufferDataUsage(const char* functionName, GLenum usage); 1315 virtual bool validateBufferDataUsage(const char* functionName, GLenum usage);
1296 1316
1297 virtual bool validateAndUpdateBufferBindTarget(const char* functionName, 1317 virtual bool validateAndUpdateBufferBindTarget(const char* functionName,
1298 GLenum target, 1318 GLenum target,
1299 WebGLBuffer*); 1319 WebGLBuffer*);
1300 1320
1301 virtual void removeBoundBuffer(WebGLBuffer*); 1321 virtual void removeBoundBuffer(WebGLBuffer*);
1302 1322
1303 // Helper function for tex{Sub}Image2D to make sure image is ready and wouldn' t taint Origin. 1323 // Helper function for tex{Sub}Image2D to make sure image is ready and
1324 // wouldn't taint Origin.
1304 bool validateHTMLImageElement(const char* functionName, 1325 bool validateHTMLImageElement(const char* functionName,
1305 HTMLImageElement*, 1326 HTMLImageElement*,
1306 ExceptionState&); 1327 ExceptionState&);
1307 1328
1308 // Helper function for tex{Sub}Image2D to make sure canvas is ready and wouldn 't taint Origin. 1329 // Helper function for tex{Sub}Image2D to make sure canvas is ready and
1330 // wouldn't taint Origin.
1309 bool validateHTMLCanvasElement(const char* functionName, 1331 bool validateHTMLCanvasElement(const char* functionName,
1310 HTMLCanvasElement*, 1332 HTMLCanvasElement*,
1311 ExceptionState&); 1333 ExceptionState&);
1312 1334
1313 // Helper function for tex{Sub}Image2D to make sure video is ready wouldn't ta int Origin. 1335 // Helper function for tex{Sub}Image2D to make sure video is ready wouldn't
1336 // taint Origin.
1314 bool validateHTMLVideoElement(const char* functionName, 1337 bool validateHTMLVideoElement(const char* functionName,
1315 HTMLVideoElement*, 1338 HTMLVideoElement*,
1316 ExceptionState&); 1339 ExceptionState&);
1317 1340
1318 // Helper function for tex{Sub}Image2D to make sure imagebitmap is ready and w ouldn't taint Origin. 1341 // Helper function for tex{Sub}Image2D to make sure imagebitmap is ready and
1342 // wouldn't taint Origin.
1319 bool validateImageBitmap(const char* functionName, 1343 bool validateImageBitmap(const char* functionName,
1320 ImageBitmap*, 1344 ImageBitmap*,
1321 ExceptionState&); 1345 ExceptionState&);
1322 1346
1323 // Helper function to validate drawArrays(Instanced) calls 1347 // Helper function to validate drawArrays(Instanced) calls
1324 bool validateDrawArrays(const char* functionName); 1348 bool validateDrawArrays(const char* functionName);
1325 1349
1326 // Helper function to validate drawElements(Instanced) calls 1350 // Helper function to validate drawElements(Instanced) calls
1327 bool validateDrawElements(const char* functionName, 1351 bool validateDrawElements(const char* functionName,
1328 GLenum type, 1352 GLenum type,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 // Enable or disable stencil test based on user setting and 1392 // Enable or disable stencil test based on user setting and
1369 // whether the current FBO has a stencil buffer. 1393 // whether the current FBO has a stencil buffer.
1370 void applyStencilTest(); 1394 void applyStencilTest();
1371 1395
1372 // Helper for enabling or disabling a capability. 1396 // Helper for enabling or disabling a capability.
1373 void enableOrDisable(GLenum capability, bool enable); 1397 void enableOrDisable(GLenum capability, bool enable);
1374 1398
1375 // Clamp the width and height to GL_MAX_VIEWPORT_DIMS. 1399 // Clamp the width and height to GL_MAX_VIEWPORT_DIMS.
1376 IntSize clampedCanvasSize() const; 1400 IntSize clampedCanvasSize() const;
1377 1401
1378 // First time called, if EXT_draw_buffers is supported, query the value; other wise return 0. 1402 // First time called, if EXT_draw_buffers is supported, query the value;
1379 // Later, return the cached value. 1403 // otherwise return 0. Later, return the cached value.
1380 GLint maxDrawBuffers(); 1404 GLint maxDrawBuffers();
1381 GLint maxColorAttachments(); 1405 GLint maxColorAttachments();
1382 1406
1383 void setBackDrawBuffer(GLenum); 1407 void setBackDrawBuffer(GLenum);
1384 void setFramebuffer(GLenum, WebGLFramebuffer*); 1408 void setFramebuffer(GLenum, WebGLFramebuffer*);
1385 1409
1386 virtual void restoreCurrentFramebuffer(); 1410 virtual void restoreCurrentFramebuffer();
1387 void restoreCurrentTexture2D(); 1411 void restoreCurrentTexture2D();
1388 1412
1389 void findNewMaxNonDefaultTextureUnit(); 1413 void findNewMaxNonDefaultTextureUnit();
1390 1414
1391 virtual void renderbufferStorageImpl(GLenum target, 1415 virtual void renderbufferStorageImpl(GLenum target,
1392 GLsizei samples, 1416 GLsizei samples,
1393 GLenum internalformat, 1417 GLenum internalformat,
1394 GLsizei width, 1418 GLsizei width,
1395 GLsizei height, 1419 GLsizei height,
1396 const char* functionName); 1420 const char* functionName);
1397 1421
1398 friend class WebGLStateRestorer; 1422 friend class WebGLStateRestorer;
1399 friend class WebGLRenderingContextEvictionManager; 1423 friend class WebGLRenderingContextEvictionManager;
1400 1424
1401 static void activateContext(WebGLRenderingContextBase*); 1425 static void activateContext(WebGLRenderingContextBase*);
1402 static void deactivateContext(WebGLRenderingContextBase*); 1426 static void deactivateContext(WebGLRenderingContextBase*);
1403 static void addToEvictedList(WebGLRenderingContextBase*); 1427 static void addToEvictedList(WebGLRenderingContextBase*);
1404 static void removeFromEvictedList(WebGLRenderingContextBase*); 1428 static void removeFromEvictedList(WebGLRenderingContextBase*);
1405 static void willDestroyContext(WebGLRenderingContextBase*); 1429 static void willDestroyContext(WebGLRenderingContextBase*);
1406 static void forciblyLoseOldestContext(const String& reason); 1430 static void forciblyLoseOldestContext(const String& reason);
1407 // Return the least recently used context's position in the active context vec tor. 1431 // Return the least recently used context's position in the active context
1408 // If the vector is empty, return the maximum allowed active context number. 1432 // vector. If the vector is empty, return the maximum allowed active context
1433 // number.
1409 static WebGLRenderingContextBase* oldestContext(); 1434 static WebGLRenderingContextBase* oldestContext();
1410 static WebGLRenderingContextBase* oldestEvictedContext(); 1435 static WebGLRenderingContextBase* oldestEvictedContext();
1411 1436
1412 ImageBitmap* transferToImageBitmapBase(); 1437 ImageBitmap* transferToImageBitmapBase();
1413 1438
1414 // Helper functions for tex(Sub)Image2D && texSubImage3D 1439 // Helper functions for tex(Sub)Image2D && texSubImage3D
1415 void texImageHelperDOMArrayBufferView(TexImageFunctionID, 1440 void texImageHelperDOMArrayBufferView(TexImageFunctionID,
1416 GLenum, 1441 GLenum,
1417 GLint, 1442 GLint,
1418 GLint, 1443 GLint,
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 context, 1535 context,
1511 context->is3d(), 1536 context->is3d(),
1512 context.is3d()); 1537 context.is3d());
1513 1538
1514 } // namespace blink 1539 } // namespace blink
1515 1540
1516 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS( 1541 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(
1517 blink::WebGLRenderingContextBase::TextureUnitState); 1542 blink::WebGLRenderingContextBase::TextureUnitState);
1518 1543
1519 #endif // WebGLRenderingContextBase_h 1544 #endif // WebGLRenderingContextBase_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698