Combine sampler method and option into a structure.
Change-Id: Ie3caecf275ffb51fbd512560cb66fcf2a32b3bbe
Reviewed-on: https://swiftshader-review.googlesource.com/5595
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Meng-Lin Wu <marleymoo@google.com>
Tested-by: Meng-Lin Wu <marleymoo@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/PixelProgram.cpp b/src/Shader/PixelProgram.cpp
index 567561a..5c04196 100644
--- a/src/Shader/PixelProgram.cpp
+++ b/src/Shader/PixelProgram.cpp
@@ -676,13 +676,13 @@
}
}
- void PixelProgram::sampleTexture(Vector4f &c, const Src &sampler, Vector4f &uvwq, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerMethod method, unsigned int options)
+ void PixelProgram::sampleTexture(Vector4f &c, const Src &sampler, Vector4f &uvwq, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function)
{
Vector4f tmp;
if(sampler.type == Shader::PARAMETER_SAMPLER && sampler.rel.type == Shader::PARAMETER_VOID)
{
- sampleTexture(tmp, sampler.index, uvwq, dsx, dsy, offset, method, options);
+ sampleTexture(tmp, sampler.index, uvwq, dsx, dsy, offset, function);
}
else
{
@@ -694,7 +694,7 @@
{
If(index == i)
{
- sampleTexture(tmp, i, uvwq, dsx, dsy, offset, method, options);
+ sampleTexture(tmp, i, uvwq, dsx, dsy, offset, function);
// FIXME: When the sampler states are the same, we could use one sampler and just index the texture
}
}
@@ -707,14 +707,14 @@
c.w = tmp[(sampler.swizzle >> 6) & 0x3];
}
- void PixelProgram::sampleTexture(Vector4f &c, int samplerIndex, Vector4f &uvwq, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerMethod method, unsigned int options)
+ void PixelProgram::sampleTexture(Vector4f &c, int samplerIndex, Vector4f &uvwq, Vector4f &dsx, Vector4f &dsy, Vector4f &offset, SamplerFunction function)
{
#if PERF_PROFILE
Long texTime = Ticks();
#endif
Pointer<Byte> texture = data + OFFSET(DrawData, mipmap) + samplerIndex * sizeof(Texture);
- sampler[samplerIndex]->sampleTexture(texture, c, uvwq.x, uvwq.y, uvwq.z, uvwq.w, dsx, dsy, offset, options, method);
+ sampler[samplerIndex]->sampleTexture(texture, c, uvwq.x, uvwq.y, uvwq.z, uvwq.w, dsx, dsy, offset, function);
#if PERF_PROFILE
cycles[PERF_TEX] += Ticks() - texTime;
@@ -1103,52 +1103,52 @@
proj.y = src0.y * rw;
proj.z = src0.z * rw;
- sampleTexture(dst, src1, proj, src0, src0, src0, Implicit, None);
+ sampleTexture(dst, src1, proj, src0, src0, src0, Implicit);
}
else
{
- sampleTexture(dst, src1, src0, src0, src0, src0, bias ? Bias : Implicit, None);
+ sampleTexture(dst, src1, src0, src0, src0, src0, bias ? Bias : Implicit);
}
}
void PixelProgram::TEXOFFSET(Vector4f &dst, Vector4f &src0, const Src &src1, Vector4f &src2, bool bias)
{
- sampleTexture(dst, src1, src0, src0, src0, src2, bias ? Bias : Implicit, Offset);
+ sampleTexture(dst, src1, src0, src0, src0, src2, {bias ? Bias : Implicit, Offset});
}
void PixelProgram::TEXLDL(Vector4f &dst, Vector4f &src0, const Src &src1, Vector4f &offset, bool bias)
{
- sampleTexture(dst, src1, src0, src0, src0, offset, Lod, Offset);
+ sampleTexture(dst, src1, src0, src0, src0, offset, {Lod, Offset});
}
void PixelProgram::TEXELFETCH(Vector4f &dst, Vector4f &src0, const Src& src1)
{
- sampleTexture(dst, src1, src0, src0, src0, src0, Lod, Fetch);
+ sampleTexture(dst, src1, src0, src0, src0, src0, Fetch);
}
void PixelProgram::TEXELFETCH(Vector4f &dst, Vector4f &src0, const Src& src1, Vector4f &offset)
{
- sampleTexture(dst, src1, src0, src0, src0, offset, Lod, Fetch | Offset);
+ sampleTexture(dst, src1, src0, src0, src0, offset, {Fetch, Offset});
}
void PixelProgram::TEXGRAD(Vector4f &dst, Vector4f &src0, const Src& src1, Vector4f &src2, Vector4f &src3)
{
- sampleTexture(dst, src1, src0, src2, src3, src0, Grad, None);
+ sampleTexture(dst, src1, src0, src2, src3, src0, Grad);
}
void PixelProgram::TEXGRAD(Vector4f &dst, Vector4f &src0, const Src& src1, Vector4f &src2, Vector4f &src3, Vector4f &offset)
{
- sampleTexture(dst, src1, src0, src2, src3, offset, Grad, Offset);
+ sampleTexture(dst, src1, src0, src2, src3, offset, {Grad, Offset});
}
void PixelProgram::TEXLDD(Vector4f &dst, Vector4f &src0, const Src &src1, Vector4f &src2, Vector4f &src3)
{
- sampleTexture(dst, src1, src0, src2, src3, src0, Grad, None);
+ sampleTexture(dst, src1, src0, src2, src3, src0, Grad);
}
void PixelProgram::TEXLDL(Vector4f &dst, Vector4f &src0, const Src &src1)
{
- sampleTexture(dst, src1, src0, src0, src0, src0, Lod, None);
+ sampleTexture(dst, src1, src0, src0, src0, src0, Lod);
}
void PixelProgram::TEXSIZE(Vector4f &dst, Float4 &lod, const Src &src1)