Commit 9675b808 by Jamie Madill Committed by Shannon Woods

Add internal accessor functions for querying sampler object parameters.

TRAC #23454 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Authored-by: Jamie Madill
parent a85f6f13
......@@ -3099,19 +3099,63 @@ void Context::samplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
switch (pname)
{
case GL_TEXTURE_MIN_FILTER: samplerObject->setMinFilter(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_MAG_FILTER: samplerObject->setMagFilter(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_S: samplerObject->setWrapS(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_T: samplerObject->setWrapT(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_R: samplerObject->setWrapR(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_MIN_FILTER: samplerObject->setMinFilter(uiround<GLenum>(param)); break;
case GL_TEXTURE_MAG_FILTER: samplerObject->setMagFilter(uiround<GLenum>(param)); break;
case GL_TEXTURE_WRAP_S: samplerObject->setWrapS(uiround<GLenum>(param)); break;
case GL_TEXTURE_WRAP_T: samplerObject->setWrapT(uiround<GLenum>(param)); break;
case GL_TEXTURE_WRAP_R: samplerObject->setWrapR(uiround<GLenum>(param)); break;
case GL_TEXTURE_MIN_LOD: samplerObject->setMinLod(param); break;
case GL_TEXTURE_MAX_LOD: samplerObject->setMaxLod(param); break;
case GL_TEXTURE_COMPARE_MODE: samplerObject->setComparisonMode(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_COMPARE_FUNC: samplerObject->setComparisonFunc(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_COMPARE_MODE: samplerObject->setComparisonMode(uiround<GLenum>(param)); break;
case GL_TEXTURE_COMPARE_FUNC: samplerObject->setComparisonFunc(uiround<GLenum>(param)); break;
default: UNREACHABLE(); break;
}
}
GLint Context::getSamplerParameteri(GLuint sampler, GLenum pname)
{
mResourceManager->checkSamplerAllocation(sampler);
Sampler *samplerObject = getSampler(sampler);
ASSERT(samplerObject);
switch (pname)
{
case GL_TEXTURE_MIN_FILTER: return static_cast<GLint>(samplerObject->getMinFilter());
case GL_TEXTURE_MAG_FILTER: return static_cast<GLint>(samplerObject->getMagFilter());
case GL_TEXTURE_WRAP_S: return static_cast<GLint>(samplerObject->getWrapS());
case GL_TEXTURE_WRAP_T: return static_cast<GLint>(samplerObject->getWrapT());
case GL_TEXTURE_WRAP_R: return static_cast<GLint>(samplerObject->getWrapR());
case GL_TEXTURE_MIN_LOD: return uiround<GLint>(samplerObject->getMinLod());
case GL_TEXTURE_MAX_LOD: return uiround<GLint>(samplerObject->getMaxLod());
case GL_TEXTURE_COMPARE_MODE: return static_cast<GLint>(samplerObject->getComparisonMode());
case GL_TEXTURE_COMPARE_FUNC: return static_cast<GLint>(samplerObject->getComparisonFunc());
default: UNREACHABLE(); return 0;
}
}
GLfloat Context::getSamplerParameterf(GLuint sampler, GLenum pname)
{
mResourceManager->checkSamplerAllocation(sampler);
Sampler *samplerObject = getSampler(sampler);
ASSERT(samplerObject);
switch (pname)
{
case GL_TEXTURE_MIN_FILTER: return static_cast<GLfloat>(samplerObject->getMinFilter());
case GL_TEXTURE_MAG_FILTER: return static_cast<GLfloat>(samplerObject->getMagFilter());
case GL_TEXTURE_WRAP_S: return static_cast<GLfloat>(samplerObject->getWrapS());
case GL_TEXTURE_WRAP_T: return static_cast<GLfloat>(samplerObject->getWrapT());
case GL_TEXTURE_WRAP_R: return static_cast<GLfloat>(samplerObject->getWrapR());
case GL_TEXTURE_MIN_LOD: return samplerObject->getMinLod();
case GL_TEXTURE_MAX_LOD: return samplerObject->getMaxLod();
case GL_TEXTURE_COMPARE_MODE: return static_cast<GLfloat>(samplerObject->getComparisonMode());
case GL_TEXTURE_COMPARE_FUNC: return static_cast<GLfloat>(samplerObject->getComparisonFunc());
default: UNREACHABLE(); return 0;
}
}
// keep list sorted in following order
// OES extensions
// EXT extensions
......
......@@ -316,6 +316,8 @@ class Context
void samplerParameteri(GLuint sampler, GLenum pname, GLint param);
void samplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
GLint getSamplerParameteri(GLuint sampler, GLenum pname);
GLfloat getSamplerParameterf(GLuint sampler, GLenum pname);
Buffer *getBuffer(GLuint handle);
Fence *getFence(GLuint handle);
......
......@@ -31,6 +31,16 @@ class Sampler : public RefCountObject
void setComparisonMode(GLenum comparisonMode) { mComparisonMode = comparisonMode; }
void setComparisonFunc(GLenum comparisonFunc) { mComparisonFunc = comparisonFunc; }
GLenum getMinFilter() const { return mMinFilter; }
GLenum getMagFilter() const { return mMagFilter; }
GLenum getWrapS() const { return mWrapS; }
GLenum getWrapT() const { return mWrapT; }
GLenum getWrapR() const { return mWrapR; }
GLfloat getMinLod() const { return mMinLod; }
GLfloat getMaxLod() const { return mMaxLod; }
GLenum getComparisonMode() const { return mComparisonMode; }
GLenum getComparisonFunc() const { return mComparisonFunc; }
void getState(SamplerState *samplerState) const;
private:
......
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