GLES2: disable texcoord when not using it (see bug #5235)
similar to opengl backend code: - glDisableVertexAttribArray doesn't need to depend on 'drawstate.texture' value - move binding code to SetCopyState()main
parent
096fe37bb2
commit
f5911bdc59
|
@ -898,39 +898,14 @@ SetDrawState(GLES2_RenderData *data, const SDL_RenderCommand *cmd, const GLES2_I
|
||||||
data->drawstate.cliprect_dirty = SDL_FALSE;
|
data->drawstate.cliprect_dirty = SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (texture != data->drawstate.texture) {
|
if ((texture != NULL) != data->drawstate.texturing) {
|
||||||
if ((texture != NULL) != data->drawstate.texturing) {
|
if (texture == NULL) {
|
||||||
if (texture == NULL) {
|
data->glDisableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
||||||
data->glDisableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
data->drawstate.texturing = SDL_FALSE;
|
||||||
data->drawstate.texturing = SDL_FALSE;
|
} else {
|
||||||
} else {
|
data->glEnableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
||||||
data->glEnableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
data->drawstate.texturing = SDL_TRUE;
|
||||||
data->drawstate.texturing = SDL_TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (texture) {
|
|
||||||
GLES2_TextureData *tdata = (GLES2_TextureData *) texture->driverdata;
|
|
||||||
#if SDL_HAVE_YUV
|
|
||||||
if (tdata->yuv) {
|
|
||||||
data->glActiveTexture(GL_TEXTURE2);
|
|
||||||
data->glBindTexture(tdata->texture_type, tdata->texture_v);
|
|
||||||
|
|
||||||
data->glActiveTexture(GL_TEXTURE1);
|
|
||||||
data->glBindTexture(tdata->texture_type, tdata->texture_u);
|
|
||||||
|
|
||||||
data->glActiveTexture(GL_TEXTURE0);
|
|
||||||
} else if (tdata->nv12) {
|
|
||||||
data->glActiveTexture(GL_TEXTURE1);
|
|
||||||
data->glBindTexture(tdata->texture_type, tdata->texture_u);
|
|
||||||
|
|
||||||
data->glActiveTexture(GL_TEXTURE0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
data->glBindTexture(tdata->texture_type, tdata->texture);
|
|
||||||
}
|
|
||||||
|
|
||||||
data->drawstate.texture = texture;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (texture) {
|
if (texture) {
|
||||||
|
@ -988,6 +963,7 @@ SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, void *vertice
|
||||||
GLES2_RenderData *data = (GLES2_RenderData *) renderer->driverdata;
|
GLES2_RenderData *data = (GLES2_RenderData *) renderer->driverdata;
|
||||||
GLES2_ImageSource sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR;
|
GLES2_ImageSource sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR;
|
||||||
SDL_Texture *texture = cmd->data.draw.texture;
|
SDL_Texture *texture = cmd->data.draw.texture;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Pick an appropriate shader */
|
/* Pick an appropriate shader */
|
||||||
if (renderer->target) {
|
if (renderer->target) {
|
||||||
|
@ -1093,7 +1069,31 @@ SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, void *vertice
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return SetDrawState(data, cmd, sourceType, vertices);
|
ret = SetDrawState(data, cmd, sourceType, vertices);
|
||||||
|
|
||||||
|
if (texture != data->drawstate.texture) {
|
||||||
|
GLES2_TextureData *tdata = (GLES2_TextureData *) texture->driverdata;
|
||||||
|
#if SDL_HAVE_YUV
|
||||||
|
if (tdata->yuv) {
|
||||||
|
data->glActiveTexture(GL_TEXTURE2);
|
||||||
|
data->glBindTexture(tdata->texture_type, tdata->texture_v);
|
||||||
|
|
||||||
|
data->glActiveTexture(GL_TEXTURE1);
|
||||||
|
data->glBindTexture(tdata->texture_type, tdata->texture_u);
|
||||||
|
|
||||||
|
data->glActiveTexture(GL_TEXTURE0);
|
||||||
|
} else if (tdata->nv12) {
|
||||||
|
data->glActiveTexture(GL_TEXTURE1);
|
||||||
|
data->glBindTexture(tdata->texture_type, tdata->texture_u);
|
||||||
|
|
||||||
|
data->glActiveTexture(GL_TEXTURE0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
data->glBindTexture(tdata->texture_type, tdata->texture);
|
||||||
|
data->drawstate.texture = texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in New Issue