Commit 7cc149e8 authored by guanxian.li@intel.com's avatar guanxian.li@intel.com

Improve samplerParameter[if] in WebGL2

Integrate samplerParameter[if] functions and validate the pname in blink.

BUG=295792

Review URL: https://codereview.chromium.org/1300583002

git-svn-id: svn://svn.chromium.org/blink/trunk@200790 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 00732c3c
...@@ -1294,6 +1294,9 @@ WebGLSampler* WebGL2RenderingContextBase::createSampler() ...@@ -1294,6 +1294,9 @@ WebGLSampler* WebGL2RenderingContextBase::createSampler()
void WebGL2RenderingContextBase::deleteSampler(WebGLSampler* sampler) void WebGL2RenderingContextBase::deleteSampler(WebGLSampler* sampler)
{ {
if (isContextLost())
return;
for (size_t i = 0; i < m_samplerUnits.size(); ++i) { for (size_t i = 0; i < m_samplerUnits.size(); ++i) {
if (sampler == m_samplerUnits[i]) { if (sampler == m_samplerUnits[i]) {
m_samplerUnits[i] = nullptr; m_samplerUnits[i] = nullptr;
...@@ -1314,6 +1317,9 @@ GLboolean WebGL2RenderingContextBase::isSampler(WebGLSampler* sampler) ...@@ -1314,6 +1317,9 @@ GLboolean WebGL2RenderingContextBase::isSampler(WebGLSampler* sampler)
void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler) void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler)
{ {
if (isContextLost())
return;
bool deleted; bool deleted;
if (!checkObjectToBeBound("bindSampler", sampler, deleted)) if (!checkObjectToBeBound("bindSampler", sampler, deleted))
return; return;
...@@ -1332,20 +1338,42 @@ void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler) ...@@ -1332,20 +1338,42 @@ void WebGL2RenderingContextBase::bindSampler(GLuint unit, WebGLSampler* sampler)
webContext()->bindSampler(unit, objectOrZero(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; 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)) samplerParameter(sampler, pname, 0, param, false);
return; }
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) ScriptValue WebGL2RenderingContextBase::getSamplerParameter(ScriptState* scriptState, WebGLSampler* sampler, GLenum pname)
......
...@@ -189,6 +189,7 @@ protected: ...@@ -189,6 +189,7 @@ protected:
ScriptValue getInt64Parameter(ScriptState*, GLenum); ScriptValue getInt64Parameter(ScriptState*, GLenum);
void texSubImage3DImpl(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, Image*, WebGLImageConversion::ImageHtmlDomSource, bool, bool); void texSubImage3DImpl(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, Image*, WebGLImageConversion::ImageHtmlDomSource, bool, bool);
void samplerParameter(WebGLSampler*, GLenum, GLfloat, GLint, bool);
/* WebGLRenderingContextBase overrides */ /* WebGLRenderingContextBase overrides */
unsigned getMaxWebGLLocationLength() const override { return 1024; }; unsigned getMaxWebGLLocationLength() const override { return 1024; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment