Moving samplers behind the hal.
Change-Id: I494e5a9d2b599d07b985328b346f1f10ae4972e1
diff --git a/libs/rs/rsSampler.cpp b/libs/rs/rsSampler.cpp
index 670d07e..2a05d16 100644
--- a/libs/rs/rsSampler.cpp
+++ b/libs/rs/rsSampler.cpp
@@ -15,11 +15,6 @@
*/
#include "rsContext.h"
-#ifndef ANDROID_RS_SERIALIZE
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#endif //ANDROID_RS_SERIALIZE
-
#include "rsSampler.h"
@@ -45,71 +40,12 @@
mHal.state.wrapT = wrapT;
mHal.state.wrapR = wrapR;
mHal.state.aniso = aniso;
+
+ mRSC->mHal.funcs.sampler.init(mRSC, this);
}
Sampler::~Sampler() {
-}
-
-void Sampler::setupGL(const Context *rsc, const Allocation *tex) {
- GLenum trans[] = {
- GL_NEAREST, //RS_SAMPLER_NEAREST,
- GL_LINEAR, //RS_SAMPLER_LINEAR,
- GL_LINEAR_MIPMAP_LINEAR, //RS_SAMPLER_LINEAR_MIP_LINEAR,
- GL_REPEAT, //RS_SAMPLER_WRAP,
- GL_CLAMP_TO_EDGE, //RS_SAMPLER_CLAMP
- GL_LINEAR_MIPMAP_NEAREST, //RS_SAMPLER_LINEAR_MIP_NEAREST
- };
-
- GLenum transNP[] = {
- GL_NEAREST, //RS_SAMPLER_NEAREST,
- GL_LINEAR, //RS_SAMPLER_LINEAR,
- GL_LINEAR, //RS_SAMPLER_LINEAR_MIP_LINEAR,
- GL_CLAMP_TO_EDGE, //RS_SAMPLER_WRAP,
- GL_CLAMP_TO_EDGE, //RS_SAMPLER_CLAMP
- GL_LINEAR, //RS_SAMPLER_LINEAR_MIP_NEAREST,
- };
-
- // This tells us the correct texture type
- GLenum target = (GLenum)tex->getGLTarget();
-
- if (!rsc->ext_OES_texture_npot() && tex->getType()->getIsNp2()) {
- if (tex->getHasGraphicsMipmaps() &&
- (rsc->ext_GL_NV_texture_npot_2D_mipmap() || rsc->ext_GL_IMG_texture_npot())) {
- if (rsc->ext_GL_NV_texture_npot_2D_mipmap()) {
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
- } else {
- switch (trans[mHal.state.minFilter]) {
- case GL_LINEAR_MIPMAP_LINEAR:
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
- break;
- default:
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
- break;
- }
- }
- } else {
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mHal.state.minFilter]);
- }
- glTexParameteri(target, GL_TEXTURE_MAG_FILTER, transNP[mHal.state.magFilter]);
- glTexParameteri(target, GL_TEXTURE_WRAP_S, transNP[mHal.state.wrapS]);
- glTexParameteri(target, GL_TEXTURE_WRAP_T, transNP[mHal.state.wrapT]);
- } else {
- if (tex->getHasGraphicsMipmaps()) {
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, trans[mHal.state.minFilter]);
- } else {
- glTexParameteri(target, GL_TEXTURE_MIN_FILTER, transNP[mHal.state.minFilter]);
- }
- glTexParameteri(target, GL_TEXTURE_MAG_FILTER, trans[mHal.state.magFilter]);
- glTexParameteri(target, GL_TEXTURE_WRAP_S, trans[mHal.state.wrapS]);
- glTexParameteri(target, GL_TEXTURE_WRAP_T, trans[mHal.state.wrapT]);
- }
-
- float anisoValue = rsMin(rsc->ext_texture_max_aniso(), mHal.state.aniso);
- if (rsc->ext_texture_max_aniso() > 1.0f) {
- glTexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, anisoValue);
- }
-
- rsc->checkError("Sampler::setupGL2 tex env");
+ mRSC->mHal.funcs.sampler.destroy(mRSC, this);
}
void Sampler::bindToContext(SamplerState *ss, uint32_t slot) {