Commit b547542f authored by Sam Lantinga's avatar Sam Lantinga

The scale mode is per texture, not per texture unit.

parent 75dcb278
...@@ -91,7 +91,6 @@ typedef struct ...@@ -91,7 +91,6 @@ typedef struct
GL_Shader shader; GL_Shader shader;
Uint32 color; Uint32 color;
int blendMode; int blendMode;
GLenum scaleMode;
} current; } current;
/* OpenGL functions */ /* OpenGL functions */
...@@ -119,7 +118,6 @@ typedef struct ...@@ -119,7 +118,6 @@ typedef struct
GLenum formattype; GLenum formattype;
void *pixels; void *pixels;
int pitch; int pitch;
int scaleMode;
SDL_Rect locked_rect; SDL_Rect locked_rect;
/* YV12 texture support */ /* YV12 texture support */
...@@ -220,7 +218,6 @@ GL_ResetState(SDL_Renderer *renderer) ...@@ -220,7 +218,6 @@ GL_ResetState(SDL_Renderer *renderer)
data->current.shader = SHADER_NONE; data->current.shader = SHADER_NONE;
data->current.color = 0; data->current.color = 0;
data->current.blendMode = -1; data->current.blendMode = -1;
data->current.scaleMode = 0;
data->glDisable(GL_DEPTH_TEST); data->glDisable(GL_DEPTH_TEST);
data->glDisable(GL_CULL_FACE); data->glDisable(GL_CULL_FACE);
...@@ -413,6 +410,7 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -413,6 +410,7 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
GLint internalFormat; GLint internalFormat;
GLenum format, type; GLenum format, type;
int texture_w, texture_h; int texture_w, texture_h;
GLenum scaleMode;
GLenum result; GLenum result;
GL_ActivateRenderer(renderer); GL_ActivateRenderer(renderer);
...@@ -467,9 +465,11 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -467,9 +465,11 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
data->format = format; data->format = format;
data->formattype = type; data->formattype = type;
data->scaleMode = GetScaleQuality(); scaleMode = GetScaleQuality();
renderdata->glEnable(data->type); renderdata->glEnable(data->type);
renderdata->glBindTexture(data->type, data->texture); renderdata->glBindTexture(data->type, data->texture);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER, scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER, scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S,
GL_CLAMP_TO_EDGE); GL_CLAMP_TO_EDGE);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T,
...@@ -524,6 +524,10 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -524,6 +524,10 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
renderdata->glEnable(data->type); renderdata->glEnable(data->type);
renderdata->glBindTexture(data->type, data->utexture); renderdata->glBindTexture(data->type, data->utexture);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER,
scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER,
scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S,
GL_CLAMP_TO_EDGE); GL_CLAMP_TO_EDGE);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T,
...@@ -532,6 +536,10 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -532,6 +536,10 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
texture_h/2, 0, format, type, NULL); texture_h/2, 0, format, type, NULL);
renderdata->glBindTexture(data->type, data->vtexture); renderdata->glBindTexture(data->type, data->vtexture);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER,
scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER,
scaleMode);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_S,
GL_CLAMP_TO_EDGE); GL_CLAMP_TO_EDGE);
renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T, renderdata->glTexParameteri(data->type, GL_TEXTURE_WRAP_T,
...@@ -855,34 +863,14 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, ...@@ -855,34 +863,14 @@ GL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
if (texturedata->yuv) { if (texturedata->yuv) {
data->glActiveTextureARB(GL_TEXTURE2_ARB); data->glActiveTextureARB(GL_TEXTURE2_ARB);
data->glBindTexture(texturedata->type, texturedata->vtexture); data->glBindTexture(texturedata->type, texturedata->vtexture);
if (texturedata->scaleMode != data->current.scaleMode) {
data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
texturedata->scaleMode);
data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
texturedata->scaleMode);
}
data->glActiveTextureARB(GL_TEXTURE1_ARB); data->glActiveTextureARB(GL_TEXTURE1_ARB);
data->glBindTexture(texturedata->type, texturedata->utexture); data->glBindTexture(texturedata->type, texturedata->utexture);
if (texturedata->scaleMode != data->current.scaleMode) {
data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
texturedata->scaleMode);
data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
texturedata->scaleMode);
}
data->glActiveTextureARB(GL_TEXTURE0_ARB); data->glActiveTextureARB(GL_TEXTURE0_ARB);
} }
data->glBindTexture(texturedata->type, texturedata->texture); data->glBindTexture(texturedata->type, texturedata->texture);
if (texturedata->scaleMode != data->current.scaleMode) {
data->glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
texturedata->scaleMode);
data->glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
texturedata->scaleMode);
data->current.scaleMode = texturedata->scaleMode;
}
if (texture->modMode) { if (texture->modMode) {
GL_SetColor(data, texture->r, texture->g, texture->b, texture->a); GL_SetColor(data, texture->r, texture->g, texture->b, texture->a);
} else { } else {
......
...@@ -88,7 +88,6 @@ typedef struct ...@@ -88,7 +88,6 @@ typedef struct
struct { struct {
Uint32 color; Uint32 color;
int blendMode; int blendMode;
GLenum scaleMode;
SDL_bool tex_coords; SDL_bool tex_coords;
} current; } current;
...@@ -106,7 +105,6 @@ typedef struct ...@@ -106,7 +105,6 @@ typedef struct
GLenum formattype; GLenum formattype;
void *pixels; void *pixels;
int pitch; int pitch;
GLenum scaleMode;
} GLES_TextureData; } GLES_TextureData;
static void static void
...@@ -175,7 +173,6 @@ GLES_ResetState(SDL_Renderer *renderer) ...@@ -175,7 +173,6 @@ GLES_ResetState(SDL_Renderer *renderer)
data->current.color = 0; data->current.color = 0;
data->current.blendMode = -1; data->current.blendMode = -1;
data->current.scaleMode = 0;
data->current.tex_coords = SDL_FALSE; data->current.tex_coords = SDL_FALSE;
glDisable(GL_DEPTH_TEST); glDisable(GL_DEPTH_TEST);
...@@ -312,6 +309,7 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -312,6 +309,7 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
GLint internalFormat; GLint internalFormat;
GLenum format, type; GLenum format, type;
int texture_w, texture_h; int texture_w, texture_h;
GLenum scaleMode;
GLenum result; GLenum result;
GLES_ActivateRenderer(renderer); GLES_ActivateRenderer(renderer);
...@@ -358,8 +356,10 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) ...@@ -358,8 +356,10 @@ GLES_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
data->format = format; data->format = format;
data->formattype = type; data->formattype = type;
data->scaleMode = GetScaleQuality(); scaleMode = GetScaleQuality();
glBindTexture(data->type, data->texture); glBindTexture(data->type, data->texture);
glTexParameteri(data->type, GL_TEXTURE_MIN_FILTER, scaleMode);
glTexParameteri(data->type, GL_TEXTURE_MAG_FILTER, scaleMode);
glTexParameteri(data->type, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(data->type, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(data->type, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(data->type, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
...@@ -674,14 +674,6 @@ GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, ...@@ -674,14 +674,6 @@ GLES_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
glBindTexture(texturedata->type, texturedata->texture); glBindTexture(texturedata->type, texturedata->texture);
if (texturedata->scaleMode != data->current.scaleMode) {
glTexParameteri(texturedata->type, GL_TEXTURE_MIN_FILTER,
texturedata->scaleMode);
glTexParameteri(texturedata->type, GL_TEXTURE_MAG_FILTER,
texturedata->scaleMode);
data->current.scaleMode = texturedata->scaleMode;
}
if (texture->modMode) { if (texture->modMode) {
GLES_SetColor(data, texture->r, texture->g, texture->b, texture->a); GLES_SetColor(data, texture->r, texture->g, texture->b, texture->a);
} else { } else {
......
...@@ -59,7 +59,6 @@ typedef struct GLES2_TextureData ...@@ -59,7 +59,6 @@ typedef struct GLES2_TextureData
GLenum pixel_type; GLenum pixel_type;
void *pixel_data; void *pixel_data;
size_t pitch; size_t pitch;
GLenum scaleMode;
} GLES2_TextureData; } GLES2_TextureData;
typedef struct GLES2_ShaderCacheEntry typedef struct GLES2_ShaderCacheEntry
...@@ -122,7 +121,6 @@ typedef struct GLES2_DriverContext ...@@ -122,7 +121,6 @@ typedef struct GLES2_DriverContext
SDL_GLContext *context; SDL_GLContext *context;
struct { struct {
int blendMode; int blendMode;
GLenum scaleMode;
SDL_bool tex_coords; SDL_bool tex_coords;
} current; } current;
...@@ -253,6 +251,7 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) ...@@ -253,6 +251,7 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture)
GLES2_TextureData *tdata; GLES2_TextureData *tdata;
GLenum format; GLenum format;
GLenum type; GLenum type;
GLenum scaleMode;
GLES2_ActivateRenderer(renderer); GLES2_ActivateRenderer(renderer);
...@@ -279,7 +278,7 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) ...@@ -279,7 +278,7 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture)
tdata->texture_type = GL_TEXTURE_2D; tdata->texture_type = GL_TEXTURE_2D;
tdata->pixel_format = format; tdata->pixel_format = format;
tdata->pixel_type = type; tdata->pixel_type = type;
tdata->scaleMode = GetScaleQuality(); scaleMode = GetScaleQuality();
/* Allocate a blob for image data */ /* Allocate a blob for image data */
if (texture->access == SDL_TEXTUREACCESS_STREAMING) if (texture->access == SDL_TEXTUREACCESS_STREAMING)
...@@ -299,6 +298,8 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture) ...@@ -299,6 +298,8 @@ GLES2_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture)
glGenTextures(1, &tdata->texture); glGenTextures(1, &tdata->texture);
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(tdata->texture_type, tdata->texture); glBindTexture(tdata->texture_type, tdata->texture);
glTexParameteri(tdata->texture_type, GL_TEXTURE_MIN_FILTER, scaleMode);
glTexParameteri(tdata->texture_type, GL_TEXTURE_MAG_FILTER, scaleMode);
glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(tdata->texture_type, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(tdata->texture_type, 0, format, texture->w, texture->h, 0, format, type, NULL); glTexImage2D(tdata->texture_type, 0, format, texture->w, texture->h, 0, format, type, NULL);
...@@ -1007,14 +1008,6 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s ...@@ -1007,14 +1008,6 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s
glBindTexture(tdata->texture_type, tdata->texture); glBindTexture(tdata->texture_type, tdata->texture);
glUniform1i(locTexture, 0); glUniform1i(locTexture, 0);
if (tdata->scaleMode != rdata->current.scaleMode) {
glTexParameteri(tdata->texture_type, GL_TEXTURE_MIN_FILTER,
tdata->scaleMode);
glTexParameteri(tdata->texture_type, GL_TEXTURE_MAG_FILTER,
tdata->scaleMode);
rdata->current.scaleMode = tdata->scaleMode;
}
/* Configure color modulation */ /* Configure color modulation */
locModulation = rdata->current_program->uniform_locations[GLES2_UNIFORM_MODULATION]; locModulation = rdata->current_program->uniform_locations[GLES2_UNIFORM_MODULATION];
glUniform4f(locModulation, glUniform4f(locModulation,
...@@ -1083,7 +1076,6 @@ GLES2_ResetState(SDL_Renderer *renderer) ...@@ -1083,7 +1076,6 @@ GLES2_ResetState(SDL_Renderer *renderer)
} }
rdata->current.blendMode = -1; rdata->current.blendMode = -1;
rdata->current.scaleMode = 0;
rdata->current.tex_coords = SDL_FALSE; rdata->current.tex_coords = SDL_FALSE;
glEnableVertexAttribArray(GLES2_ATTRIBUTE_POSITION); glEnableVertexAttribArray(GLES2_ATTRIBUTE_POSITION);
......
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