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()
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)
......
......@@ -189,6 +189,7 @@ protected:
ScriptValue getInt64Parameter(ScriptState*, GLenum);
void texSubImage3DImpl(GLenum, GLint, GLint, GLint, GLint, GLenum, GLenum, Image*, WebGLImageConversion::ImageHtmlDomSource, bool, bool);
void samplerParameter(WebGLSampler*, GLenum, GLfloat, GLint, bool);
/* WebGLRenderingContextBase overrides */
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