Chromium Code Reviews| Index: Source/core/html/canvas/WebGL2RenderingContextBase.cpp |
| diff --git a/Source/core/html/canvas/WebGL2RenderingContextBase.cpp b/Source/core/html/canvas/WebGL2RenderingContextBase.cpp |
| index b6f57f87ac8c23137bcad0062f63a038e1dc62b6..849c69dec194b4f4699f961de9f11ff62d4802e3 100644 |
| --- a/Source/core/html/canvas/WebGL2RenderingContextBase.cpp |
| +++ b/Source/core/html/canvas/WebGL2RenderingContextBase.cpp |
| @@ -1201,4 +1201,68 @@ DEFINE_TRACE(WebGL2RenderingContextBase) |
| WebGLRenderingContextBase::trace(visitor); |
| } |
| +WebGLTexture* WebGL2RenderingContextBase::validateTextureBinding(const char* functionName, GLenum target, bool useSixEnumsForCubeMap) |
| +{ |
| + switch (target) { |
| + case GL_TEXTURE_2D_ARRAY: |
| + // return m_textureUnits[m_activeTextureUnit].m_texture2DArrayBinding.get(); |
|
yunchao
2015/03/04 07:11:31
Will Implement TexParameter and add 2D Array and 3
Zhenyao Mo
2015/03/04 17:55:10
You should add a FIXME and ASSERT(false) for now.
yunchao
2015/03/05 07:40:53
Done.
|
| + case GL_TEXTURE_3D: |
| + // return m_textureUnits[m_activeTextureUnit].m_texture3DBinding.get(); |
| + default: |
| + return WebGLRenderingContextBase::validateTextureBinding(functionName, target, useSixEnumsForCubeMap); |
| + } |
| +} |
| + |
| +ScriptValue WebGL2RenderingContextBase::getTexParameter(ScriptState* scriptState, GLenum target, GLenum pname) |
| +{ |
| + if (isContextLost() || !validateTextureBinding("getTexParameter", target, false)) |
| + return ScriptValue::createNull(scriptState); |
| + |
| + switch (pname) { |
| + case GL_TEXTURE_MAG_FILTER: |
| + case GL_TEXTURE_MIN_FILTER: |
| + case GL_TEXTURE_WRAP_S: |
| + case GL_TEXTURE_WRAP_T: |
| + case GL_TEXTURE_WRAP_R: |
| + case GL_TEXTURE_COMPARE_FUNC: |
| + case GL_TEXTURE_COMPARE_MODE: |
|
Zhenyao Mo
2015/03/04 17:55:10
The above seven return type is GLenum, which is un
yunchao
2015/03/05 07:40:53
Acknowledged.
|
| + case GL_TEXTURE_IMMUTABLE_LEVELS: |
|
Zhenyao Mo
2015/03/04 17:55:10
This is defined as GLuint
yunchao
2015/03/05 07:40:53
Acknowledged.
|
| + case GL_TEXTURE_SWIZZLE_R: |
| + case GL_TEXTURE_SWIZZLE_G: |
| + case GL_TEXTURE_SWIZZLE_B: |
| + case GL_TEXTURE_SWIZZLE_A: |
|
Zhenyao Mo
2015/03/04 17:55:10
These above four are not exposed in WebGL 2
yunchao
2015/03/05 07:40:53
Acknowledged.
|
| + { |
| + GLint value = 0; |
| + webContext()->getTexParameteriv(target, pname, &value); |
| + return WebGLAny(scriptState, value); |
| + } |
| + case GL_TEXTURE_IMMUTABLE_FORMAT: |
| + { |
| + GLint value = 0; |
| + webContext()->getTexParameteriv(target, pname, &value); |
| + return WebGLAny(scriptState, static_cast<bool>(value)); |
| + } |
| + case GL_TEXTURE_BASE_LEVEL: |
| + case GL_TEXTURE_MAX_LEVEL: |
|
Zhenyao Mo
2015/03/04 17:55:10
The above two return type is GLint.
yunchao
2015/03/05 07:40:53
Acknowledged.
It's my fault. When I implemented t
|
| + case GL_TEXTURE_MAX_LOD: |
| + case GL_TEXTURE_MIN_LOD: |
| + { |
| + GLfloat value = 0.f; |
| + webContext()->getTexParameterfv(target, pname, &value); |
| + return WebGLAny(scriptState, value); |
| + } |
| + case GL_TEXTURE_MAX_ANISOTROPY_EXT: // EXT_texture_filter_anisotropic |
| + if (extensionEnabled(EXTTextureFilterAnisotropicName)) { |
| + GLfloat value = 0.f; |
| + webContext()->getTexParameterfv(target, pname, &value); |
| + return WebGLAny(scriptState, value); |
| + } |
| + synthesizeGLError(GL_INVALID_ENUM, "getTexParameter", "invalid parameter name, EXT_texture_filter_anisotropic not enabled"); |
| + return ScriptValue::createNull(scriptState); |
| + default: |
| + synthesizeGLError(GL_INVALID_ENUM, "getTexParameter", "invalid parameter name"); |
| + return ScriptValue::createNull(scriptState); |
| + } |
| +} |
| + |
| } // namespace blink |