| Index: Source/modules/webgl/WebGL2RenderingContextBase.cpp
|
| diff --git a/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/Source/modules/webgl/WebGL2RenderingContextBase.cpp
|
| index 8c61c89da95560926cbff64fb2e0759630ec2f9e..672270918c6d75a9ccdd2152dd3c76bb7ab830f9 100644
|
| --- a/Source/modules/webgl/WebGL2RenderingContextBase.cpp
|
| +++ b/Source/modules/webgl/WebGL2RenderingContextBase.cpp
|
| @@ -1294,6 +1294,9 @@ WebGLSampler* WebGL2RenderingContextBase::createSampler()
|
|
|
| void WebGL2RenderingContextBase::deleteSampler(WebGLSampler* sampler)
|
| {
|
| + if (isContextLost())
|
| + return;
|
| +
|
| for (size_t i = 0; i < m_samplerUnits.size(); ++i) {
|
| if (sampler == m_samplerUnits[i]) {
|
| m_samplerUnits[i] = nullptr;
|
| @@ -1314,6 +1317,9 @@ GLboolean WebGL2RenderingContextBase::isSampler(WebGLSampler* sampler)
|
|
|
| void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler)
|
| {
|
| + if (isContextLost())
|
| + return;
|
| +
|
| bool deleted;
|
| if (!checkObjectToBeBound("bindSampler", sampler, deleted))
|
| return;
|
| @@ -1332,20 +1338,42 @@ void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler)
|
| webContext()->bindSampler(unit, objectOrZero(sampler));
|
| }
|
|
|
| -void WebGL2RenderingContextBase::samplerParameteri(WebGLSampler* sampler, GLenum pname, GLint param)
|
| +void WebGL2RenderingContextBase::samplerParameter(WebGLSampler* sampler, GLenum pname, GLfloat paramf, GLint parami, bool isFloat)
|
| {
|
| - if (isContextLost() || !validateWebGLObject("samplerParameteri", sampler))
|
| + if (isContextLost() || !validateWebGLObject("samplerParameter", sampler))
|
| + return;
|
| +
|
| + switch (pname) {
|
| + case GL_TEXTURE_COMPARE_FUNC:
|
| + case GL_TEXTURE_COMPARE_MODE:
|
| + case GL_TEXTURE_MAG_FILTER:
|
| + case GL_TEXTURE_MIN_FILTER:
|
| + case GL_TEXTURE_WRAP_R:
|
| + case GL_TEXTURE_WRAP_S:
|
| + case GL_TEXTURE_WRAP_T:
|
| + case GL_TEXTURE_MAX_LOD:
|
| + case GL_TEXTURE_MIN_LOD:
|
| + break;
|
| + default:
|
| + synthesizeGLError(GL_INVALID_ENUM, "samplerParameter", "invalid parameter name");
|
| return;
|
| + }
|
|
|
| - webContext()->samplerParameteri(objectOrZero(sampler), pname, param);
|
| + if (isFloat) {
|
| + webContext()->samplerParameterf(objectOrZero(sampler), pname, paramf);
|
| + } else {
|
| + webContext()->samplerParameteri(objectOrZero(sampler), pname, parami);
|
| + }
|
| }
|
|
|
| -void WebGL2RenderingContextBase::samplerParameterf(WebGLSampler* sampler, GLenum pname, GLfloat param)
|
| +void WebGL2RenderingContextBase::samplerParameteri(WebGLSampler* sampler, GLenum pname, GLint param)
|
| {
|
| - if (isContextLost() || !validateWebGLObject("samplerParameterf", sampler))
|
| - return;
|
| + samplerParameter(sampler, pname, 0, param, false);
|
| +}
|
|
|
| - webContext()->samplerParameterf(objectOrZero(sampler), pname, param);
|
| +void WebGL2RenderingContextBase::samplerParameterf(WebGLSampler* sampler, GLenum pname, GLfloat param)
|
| +{
|
| + samplerParameter(sampler, pname, param, 0, true);
|
| }
|
|
|
| ScriptValue WebGL2RenderingContextBase::getSamplerParameter(ScriptState* scriptState, WebGLSampler* sampler, GLenum pname)
|
|
|