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

Unified Diff: Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 1300583002: Improve samplerParameter[if] in WebGL2 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/webgl/WebGL2RenderingContextBase.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « Source/modules/webgl/WebGL2RenderingContextBase.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698