Commit a328d569 by Brandon Jones

Removed sampler state getters and setters from gl::Texture

BUG=angle:688 Change-Id: I3f203e4d10059c12a0c00e967ad6c7d3b3a18074 Reviewed-on: https://chromium-review.googlesource.com/206335Reviewed-by: 's avatarShannon Woods <shannonwoods@chromium.org> Tested-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 787fc03f
...@@ -2439,7 +2439,7 @@ size_t Context::getCurrentTexturesAndSamplerStates(ProgramBinary *programBinary, ...@@ -2439,7 +2439,7 @@ size_t Context::getCurrentTexturesAndSamplerStates(ProgramBinary *programBinary,
if (textureUnit != -1) if (textureUnit != -1)
{ {
outTextures[i] = getSamplerTexture(textureUnit, outTextureTypes[i]); outTextures[i] = getSamplerTexture(textureUnit, outTextureTypes[i]);
outTextures[i]->getSamplerState(&outSamplers[i]); outTextures[i]->getSamplerStateWithNativeOffset(&outSamplers[i]);
if (mState.samplers[textureUnit] != 0) if (mState.samplers[textureUnit] != 0)
{ {
Sampler *samplerObject = getSampler(mState.samplers[textureUnit]); Sampler *samplerObject = getSampler(mState.samplers[textureUnit]);
...@@ -2459,7 +2459,7 @@ void Context::generateSwizzles(Texture *textures[], size_t count) ...@@ -2459,7 +2459,7 @@ void Context::generateSwizzles(Texture *textures[], size_t count)
{ {
for (size_t i = 0; i < count; i++) for (size_t i = 0; i < count; i++)
{ {
if (textures[i] && textures[i]->isSwizzled()) if (textures[i] && textures[i]->getSamplerState().swizzleRequired())
{ {
mRenderer->generateSwizzle(textures[i]); mRenderer->generateSwizzle(textures[i]);
} }
......
...@@ -53,22 +53,6 @@ Texture::Texture(rx::Renderer *renderer, GLuint id, GLenum target) : RefCountObj ...@@ -53,22 +53,6 @@ Texture::Texture(rx::Renderer *renderer, GLuint id, GLenum target) : RefCountObj
{ {
mRenderer = renderer; mRenderer = renderer;
mSamplerState.minFilter = GL_NEAREST_MIPMAP_LINEAR;
mSamplerState.magFilter = GL_LINEAR;
mSamplerState.wrapS = GL_REPEAT;
mSamplerState.wrapT = GL_REPEAT;
mSamplerState.wrapR = GL_REPEAT;
mSamplerState.maxAnisotropy = 1.0f;
mSamplerState.baseLevel = 0;
mSamplerState.maxLevel = 1000;
mSamplerState.minLod = -1000.0f;
mSamplerState.maxLod = 1000.0f;
mSamplerState.compareMode = GL_NONE;
mSamplerState.compareFunc = GL_LEQUAL;
mSamplerState.swizzleRed = GL_RED;
mSamplerState.swizzleGreen = GL_GREEN;
mSamplerState.swizzleBlue = GL_BLUE;
mSamplerState.swizzleAlpha = GL_ALPHA;
mUsage = GL_NONE; mUsage = GL_NONE;
mDirtyImages = true; mDirtyImages = true;
...@@ -87,170 +71,12 @@ GLenum Texture::getTarget() const ...@@ -87,170 +71,12 @@ GLenum Texture::getTarget() const
return mTarget; return mTarget;
} }
void Texture::setMinFilter(GLenum filter)
{
mSamplerState.minFilter = filter;
}
void Texture::setMagFilter(GLenum filter)
{
mSamplerState.magFilter = filter;
}
void Texture::setWrapS(GLenum wrap)
{
mSamplerState.wrapS = wrap;
}
void Texture::setWrapT(GLenum wrap)
{
mSamplerState.wrapT = wrap;
}
void Texture::setWrapR(GLenum wrap)
{
mSamplerState.wrapR = wrap;
}
void Texture::setMaxAnisotropy(float textureMaxAnisotropy, float contextMaxAnisotropy)
{
mSamplerState.maxAnisotropy = std::min(textureMaxAnisotropy, contextMaxAnisotropy);
}
void Texture::setCompareMode(GLenum mode)
{
mSamplerState.compareMode = mode;
}
void Texture::setCompareFunc(GLenum func)
{
mSamplerState.compareFunc = func;
}
void Texture::setSwizzleRed(GLenum swizzle)
{
mSamplerState.swizzleRed = swizzle;
}
void Texture::setSwizzleGreen(GLenum swizzle)
{
mSamplerState.swizzleGreen = swizzle;
}
void Texture::setSwizzleBlue(GLenum swizzle)
{
mSamplerState.swizzleBlue = swizzle;
}
void Texture::setSwizzleAlpha(GLenum swizzle)
{
mSamplerState.swizzleAlpha = swizzle;
}
void Texture::setBaseLevel(GLint baseLevel)
{
mSamplerState.baseLevel = baseLevel;
}
void Texture::setMaxLevel(GLint maxLevel)
{
mSamplerState.maxLevel = maxLevel;
}
void Texture::setMinLod(GLfloat minLod)
{
mSamplerState.minLod = minLod;
}
void Texture::setMaxLod(GLfloat maxLod)
{
mSamplerState.maxLod = maxLod;
}
void Texture::setUsage(GLenum usage) void Texture::setUsage(GLenum usage)
{ {
mUsage = usage; mUsage = usage;
} }
GLenum Texture::getMinFilter() const void Texture::getSamplerStateWithNativeOffset(SamplerState *sampler)
{
return mSamplerState.minFilter;
}
GLenum Texture::getMagFilter() const
{
return mSamplerState.magFilter;
}
GLenum Texture::getWrapS() const
{
return mSamplerState.wrapS;
}
GLenum Texture::getWrapT() const
{
return mSamplerState.wrapT;
}
GLenum Texture::getWrapR() const
{
return mSamplerState.wrapR;
}
float Texture::getMaxAnisotropy() const
{
return mSamplerState.maxAnisotropy;
}
GLenum Texture::getSwizzleRed() const
{
return mSamplerState.swizzleRed;
}
GLenum Texture::getSwizzleGreen() const
{
return mSamplerState.swizzleGreen;
}
GLenum Texture::getSwizzleBlue() const
{
return mSamplerState.swizzleBlue;
}
GLenum Texture::getSwizzleAlpha() const
{
return mSamplerState.swizzleAlpha;
}
GLint Texture::getBaseLevel() const
{
return mSamplerState.baseLevel;
}
GLint Texture::getMaxLevel() const
{
return mSamplerState.maxLevel;
}
GLfloat Texture::getMinLod() const
{
return mSamplerState.minLod;
}
GLfloat Texture::getMaxLod() const
{
return mSamplerState.maxLod;
}
bool Texture::isSwizzled() const
{
return mSamplerState.swizzleRed != GL_RED ||
mSamplerState.swizzleGreen != GL_GREEN ||
mSamplerState.swizzleBlue != GL_BLUE ||
mSamplerState.swizzleAlpha != GL_ALPHA;
}
void Texture::getSamplerState(SamplerState *sampler)
{ {
*sampler = mSamplerState; *sampler = mSamplerState;
......
...@@ -65,40 +65,11 @@ class Texture : public RefCountObject ...@@ -65,40 +65,11 @@ class Texture : public RefCountObject
GLenum getTarget() const; GLenum getTarget() const;
void setMinFilter(GLenum filter); const SamplerState &getSamplerState() const { return mSamplerState; }
void setMagFilter(GLenum filter); SamplerState &getSamplerState() { return mSamplerState; }
void setWrapS(GLenum wrap); void getSamplerStateWithNativeOffset(SamplerState *sampler);
void setWrapT(GLenum wrap);
void setWrapR(GLenum wrap);
void setMaxAnisotropy(float textureMaxAnisotropy, float contextMaxAnisotropy);
void setCompareMode(GLenum mode);
void setCompareFunc(GLenum func);
void setSwizzleRed(GLenum swizzle);
void setSwizzleGreen(GLenum swizzle);
void setSwizzleBlue(GLenum swizzle);
void setSwizzleAlpha(GLenum swizzle);
void setBaseLevel(GLint baseLevel);
void setMaxLevel(GLint maxLevel);
void setMinLod(GLfloat minLod);
void setMaxLod(GLfloat maxLod);
void setUsage(GLenum usage);
GLenum getMinFilter() const; void setUsage(GLenum usage);
GLenum getMagFilter() const;
GLenum getWrapS() const;
GLenum getWrapT() const;
GLenum getWrapR() const;
float getMaxAnisotropy() const;
GLenum getSwizzleRed() const;
GLenum getSwizzleGreen() const;
GLenum getSwizzleBlue() const;
GLenum getSwizzleAlpha() const;
GLint getBaseLevel() const;
GLint getMaxLevel() const;
GLfloat getMinLod() const;
GLfloat getMaxLod() const;
bool isSwizzled() const;
void getSamplerState(SamplerState *sampler);
GLenum getUsage() const; GLenum getUsage() const;
GLint getBaseLevelWidth() const; GLint getBaseLevelWidth() const;
......
...@@ -14,6 +14,25 @@ ...@@ -14,6 +14,25 @@
namespace gl namespace gl
{ {
SamplerState::SamplerState()
: minFilter(GL_NEAREST_MIPMAP_LINEAR),
magFilter(GL_LINEAR),
wrapS(GL_REPEAT),
wrapT(GL_REPEAT),
wrapR(GL_REPEAT),
maxAnisotropy(1.0f),
baseLevel(0),
maxLevel(1000),
minLod(-1000.0f),
maxLod(1000.0f),
compareMode(GL_NONE),
compareFunc(GL_LEQUAL),
swizzleRed(GL_RED),
swizzleGreen(GL_GREEN),
swizzleBlue(GL_BLUE),
swizzleAlpha(GL_ALPHA)
{}
bool SamplerState::swizzleRequired() const bool SamplerState::swizzleRequired() const
{ {
return swizzleRed != GL_RED || swizzleGreen != GL_GREEN || return swizzleRed != GL_RED || swizzleGreen != GL_GREEN ||
......
...@@ -147,6 +147,8 @@ struct DepthStencilState ...@@ -147,6 +147,8 @@ struct DepthStencilState
struct SamplerState struct SamplerState
{ {
SamplerState();
GLenum minFilter; GLenum minFilter;
GLenum magFilter; GLenum magFilter;
GLenum wrapS; GLenum wrapS;
......
...@@ -3397,23 +3397,23 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) ...@@ -3397,23 +3397,23 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
switch (pname) switch (pname)
{ {
case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAG_FILTER:
*params = (GLfloat)texture->getMagFilter(); *params = (GLfloat)texture->getSamplerState().magFilter;
break; break;
case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MIN_FILTER:
*params = (GLfloat)texture->getMinFilter(); *params = (GLfloat)texture->getSamplerState().minFilter;
break; break;
case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_S:
*params = (GLfloat)texture->getWrapS(); *params = (GLfloat)texture->getSamplerState().wrapS;
break; break;
case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_T:
*params = (GLfloat)texture->getWrapT(); *params = (GLfloat)texture->getSamplerState().wrapT;
break; break;
case GL_TEXTURE_WRAP_R: case GL_TEXTURE_WRAP_R:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getWrapR(); *params = (GLfloat)texture->getSamplerState().wrapR;
break; break;
case GL_TEXTURE_IMMUTABLE_FORMAT: case GL_TEXTURE_IMMUTABLE_FORMAT:
// Exposed to ES2.0 through EXT_texture_storage, no client version validation. // Exposed to ES2.0 through EXT_texture_storage, no client version validation.
...@@ -3434,63 +3434,63 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) ...@@ -3434,63 +3434,63 @@ void __stdcall glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getMaxAnisotropy(); *params = (GLfloat)texture->getSamplerState().maxAnisotropy;
break; break;
case GL_TEXTURE_SWIZZLE_R: case GL_TEXTURE_SWIZZLE_R:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getSwizzleRed(); *params = (GLfloat)texture->getSamplerState().swizzleRed;
break; break;
case GL_TEXTURE_SWIZZLE_G: case GL_TEXTURE_SWIZZLE_G:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getSwizzleGreen(); *params = (GLfloat)texture->getSamplerState().swizzleGreen;
break; break;
case GL_TEXTURE_SWIZZLE_B: case GL_TEXTURE_SWIZZLE_B:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getSwizzleBlue(); *params = (GLfloat)texture->getSamplerState().swizzleBlue;
break; break;
case GL_TEXTURE_SWIZZLE_A: case GL_TEXTURE_SWIZZLE_A:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getSwizzleAlpha(); *params = (GLfloat)texture->getSamplerState().swizzleAlpha;
break; break;
case GL_TEXTURE_BASE_LEVEL: case GL_TEXTURE_BASE_LEVEL:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getBaseLevel(); *params = (GLfloat)texture->getSamplerState().baseLevel;
break; break;
case GL_TEXTURE_MAX_LEVEL: case GL_TEXTURE_MAX_LEVEL:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLfloat)texture->getMaxLevel(); *params = (GLfloat)texture->getSamplerState().maxLevel;
break; break;
case GL_TEXTURE_MIN_LOD: case GL_TEXTURE_MIN_LOD:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getMinLod(); *params = texture->getSamplerState().minLod;
break; break;
case GL_TEXTURE_MAX_LOD: case GL_TEXTURE_MAX_LOD:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getMaxLod(); *params = texture->getSamplerState().maxLod;
break; break;
default: default:
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
...@@ -3523,23 +3523,23 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) ...@@ -3523,23 +3523,23 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
switch (pname) switch (pname)
{ {
case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAG_FILTER:
*params = texture->getMagFilter(); *params = texture->getSamplerState().magFilter;
break; break;
case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MIN_FILTER:
*params = texture->getMinFilter(); *params = texture->getSamplerState().minFilter;
break; break;
case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_S:
*params = texture->getWrapS(); *params = texture->getSamplerState().wrapS;
break; break;
case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_T:
*params = texture->getWrapT(); *params = texture->getSamplerState().wrapT;
break; break;
case GL_TEXTURE_WRAP_R: case GL_TEXTURE_WRAP_R:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getWrapR(); *params = texture->getSamplerState().wrapR;
break; break;
case GL_TEXTURE_IMMUTABLE_FORMAT: case GL_TEXTURE_IMMUTABLE_FORMAT:
// Exposed to ES2.0 through EXT_texture_storage, no client version validation. // Exposed to ES2.0 through EXT_texture_storage, no client version validation.
...@@ -3560,63 +3560,63 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) ...@@ -3560,63 +3560,63 @@ void __stdcall glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLint)texture->getMaxAnisotropy(); *params = (GLint)texture->getSamplerState().maxAnisotropy;
break; break;
case GL_TEXTURE_SWIZZLE_R: case GL_TEXTURE_SWIZZLE_R:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getSwizzleRed(); *params = texture->getSamplerState().swizzleRed;
break; break;
case GL_TEXTURE_SWIZZLE_G: case GL_TEXTURE_SWIZZLE_G:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getSwizzleGreen(); *params = texture->getSamplerState().swizzleGreen;
break; break;
case GL_TEXTURE_SWIZZLE_B: case GL_TEXTURE_SWIZZLE_B:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getSwizzleBlue(); *params = texture->getSamplerState().swizzleBlue;
break; break;
case GL_TEXTURE_SWIZZLE_A: case GL_TEXTURE_SWIZZLE_A:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getSwizzleAlpha(); *params = texture->getSamplerState().swizzleAlpha;
break; break;
case GL_TEXTURE_BASE_LEVEL: case GL_TEXTURE_BASE_LEVEL:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getBaseLevel(); *params = texture->getSamplerState().baseLevel;
break; break;
case GL_TEXTURE_MAX_LEVEL: case GL_TEXTURE_MAX_LEVEL:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = texture->getMaxLevel(); *params = texture->getSamplerState().maxLevel;
break; break;
case GL_TEXTURE_MIN_LOD: case GL_TEXTURE_MIN_LOD:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLint)texture->getMinLod(); *params = (GLint)texture->getSamplerState().minLod;
break; break;
case GL_TEXTURE_MAX_LOD: case GL_TEXTURE_MAX_LOD:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
{ {
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
} }
*params = (GLint)texture->getMaxLod(); *params = (GLint)texture->getSamplerState().maxLod;
break; break;
default: default:
return gl::error(GL_INVALID_ENUM); return gl::error(GL_INVALID_ENUM);
...@@ -4930,23 +4930,23 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param) ...@@ -4930,23 +4930,23 @@ void __stdcall glTexParameterf(GLenum target, GLenum pname, GLfloat param)
switch (pname) switch (pname)
{ {
case GL_TEXTURE_WRAP_S: texture->setWrapS(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_WRAP_S: texture->getSamplerState().wrapS = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_WRAP_T: texture->setWrapT(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_WRAP_T: texture->getSamplerState().wrapT = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_WRAP_R: texture->setWrapR(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_WRAP_R: texture->getSamplerState().wrapR = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_MIN_FILTER: texture->setMinFilter(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_MIN_FILTER: texture->getSamplerState().minFilter = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_MAG_FILTER: texture->setMagFilter(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_MAG_FILTER: texture->getSamplerState().magFilter = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_USAGE_ANGLE: texture->setUsage(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_USAGE_ANGLE: texture->setUsage(gl::uiround<GLenum>(param)); break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->setMaxAnisotropy(param, context->getCaps().extensions.maxTextureAnisotropy); break; case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min(param, context->getCaps().extensions.maxTextureAnisotropy); break;
case GL_TEXTURE_COMPARE_MODE: texture->setCompareMode(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_COMPARE_MODE: texture->getSamplerState().compareMode = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_COMPARE_FUNC: texture->setCompareFunc(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_COMPARE_FUNC: texture->getSamplerState().compareFunc = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_SWIZZLE_R: texture->setSwizzleRed(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_SWIZZLE_R: texture->getSamplerState().swizzleRed = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_SWIZZLE_G: texture->setSwizzleGreen(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_SWIZZLE_G: texture->getSamplerState().swizzleGreen = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_SWIZZLE_B: texture->setSwizzleBlue(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_SWIZZLE_B: texture->getSamplerState().swizzleBlue = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_SWIZZLE_A: texture->setSwizzleAlpha(gl::uiround<GLenum>(param)); break; case GL_TEXTURE_SWIZZLE_A: texture->getSamplerState().swizzleAlpha = gl::uiround<GLenum>(param); break;
case GL_TEXTURE_BASE_LEVEL: texture->setBaseLevel(gl::iround<GLint>(param)); break; case GL_TEXTURE_BASE_LEVEL: texture->getSamplerState().baseLevel = gl::iround<GLint>(param); break;
case GL_TEXTURE_MAX_LEVEL: texture->setMaxLevel(gl::iround<GLint>(param)); break; case GL_TEXTURE_MAX_LEVEL: texture->getSamplerState().maxLevel = gl::iround<GLint>(param); break;
case GL_TEXTURE_MIN_LOD: texture->setMinLod(param); break; case GL_TEXTURE_MIN_LOD: texture->getSamplerState().minLod = param; break;
case GL_TEXTURE_MAX_LOD: texture->setMaxLod(param); break; case GL_TEXTURE_MAX_LOD: texture->getSamplerState().maxLod = param; break;
default: UNREACHABLE(); break; default: UNREACHABLE(); break;
} }
} }
...@@ -4986,23 +4986,23 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param) ...@@ -4986,23 +4986,23 @@ void __stdcall glTexParameteri(GLenum target, GLenum pname, GLint param)
switch (pname) switch (pname)
{ {
case GL_TEXTURE_WRAP_S: texture->setWrapS((GLenum)param); break; case GL_TEXTURE_WRAP_S: texture->getSamplerState().wrapS = (GLenum)param; break;
case GL_TEXTURE_WRAP_T: texture->setWrapT((GLenum)param); break; case GL_TEXTURE_WRAP_T: texture->getSamplerState().wrapT = (GLenum)param; break;
case GL_TEXTURE_WRAP_R: texture->setWrapR((GLenum)param); break; case GL_TEXTURE_WRAP_R: texture->getSamplerState().wrapR = (GLenum)param; break;
case GL_TEXTURE_MIN_FILTER: texture->setMinFilter((GLenum)param); break; case GL_TEXTURE_MIN_FILTER: texture->getSamplerState().minFilter = (GLenum)param; break;
case GL_TEXTURE_MAG_FILTER: texture->setMagFilter((GLenum)param); break; case GL_TEXTURE_MAG_FILTER: texture->getSamplerState().magFilter = (GLenum)param; break;
case GL_TEXTURE_USAGE_ANGLE: texture->setUsage((GLenum)param); break; case GL_TEXTURE_USAGE_ANGLE: texture->setUsage((GLenum)param); break;
case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->setMaxAnisotropy((float)param, context->getCaps().extensions.maxTextureAnisotropy); break; case GL_TEXTURE_MAX_ANISOTROPY_EXT: texture->getSamplerState().maxAnisotropy = std::min((float)param, context->getCaps().extensions.maxTextureAnisotropy); break;
case GL_TEXTURE_COMPARE_MODE: texture->setCompareMode((GLenum)param); break; case GL_TEXTURE_COMPARE_MODE: texture->getSamplerState().compareMode = (GLenum)param; break;
case GL_TEXTURE_COMPARE_FUNC: texture->setCompareFunc((GLenum)param); break; case GL_TEXTURE_COMPARE_FUNC: texture->getSamplerState().compareFunc = (GLenum)param; break;
case GL_TEXTURE_SWIZZLE_R: texture->setSwizzleRed((GLenum)param); break; case GL_TEXTURE_SWIZZLE_R: texture->getSamplerState().swizzleRed = (GLenum)param; break;
case GL_TEXTURE_SWIZZLE_G: texture->setSwizzleGreen((GLenum)param); break; case GL_TEXTURE_SWIZZLE_G: texture->getSamplerState().swizzleGreen = (GLenum)param; break;
case GL_TEXTURE_SWIZZLE_B: texture->setSwizzleBlue((GLenum)param); break; case GL_TEXTURE_SWIZZLE_B: texture->getSamplerState().swizzleBlue = (GLenum)param; break;
case GL_TEXTURE_SWIZZLE_A: texture->setSwizzleAlpha((GLenum)param); break; case GL_TEXTURE_SWIZZLE_A: texture->getSamplerState().swizzleAlpha = (GLenum)param; break;
case GL_TEXTURE_BASE_LEVEL: texture->setBaseLevel(param); break; case GL_TEXTURE_BASE_LEVEL: texture->getSamplerState().baseLevel = param; break;
case GL_TEXTURE_MAX_LEVEL: texture->setMaxLevel(param); break; case GL_TEXTURE_MAX_LEVEL: texture->getSamplerState().maxLevel = param; break;
case GL_TEXTURE_MIN_LOD: texture->setMinLod((GLfloat)param); break; case GL_TEXTURE_MIN_LOD: texture->getSamplerState().minLod = (GLfloat)param; break;
case GL_TEXTURE_MAX_LOD: texture->setMaxLod((GLfloat)param); break; case GL_TEXTURE_MAX_LOD: texture->getSamplerState().maxLod = (GLfloat)param; break;
default: UNREACHABLE(); break; default: UNREACHABLE(); break;
} }
} }
......
...@@ -417,8 +417,10 @@ void Renderer11::generateSwizzle(gl::Texture *texture) ...@@ -417,8 +417,10 @@ void Renderer11::generateSwizzle(gl::Texture *texture)
{ {
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(texStorage->getStorageInstance()); TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(texStorage->getStorageInstance());
storage11->generateSwizzles(texture->getSwizzleRed(), texture->getSwizzleGreen(), texture->getSwizzleBlue(), storage11->generateSwizzles(texture->getSamplerState().swizzleRed,
texture->getSwizzleAlpha()); texture->getSamplerState().swizzleGreen,
texture->getSamplerState().swizzleBlue,
texture->getSamplerState().swizzleAlpha);
} }
} }
} }
...@@ -490,7 +492,7 @@ void Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *textur ...@@ -490,7 +492,7 @@ void Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *textur
{ {
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(texStorage->getStorageInstance()); TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(texStorage->getStorageInstance());
gl::SamplerState samplerState; gl::SamplerState samplerState;
texture->getSamplerState(&samplerState); texture->getSamplerStateWithNativeOffset(&samplerState);
textureSRV = storage11->getSRV(samplerState); textureSRV = storage11->getSRV(samplerState);
} }
......
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