|
@@ -898,39 +898,14 @@ SetDrawState(GLES2_RenderData *data, const SDL_RenderCommand *cmd, const GLES2_I
|
|
|
data->drawstate.cliprect_dirty = SDL_FALSE;
|
|
|
}
|
|
|
|
|
|
- if (texture != data->drawstate.texture) {
|
|
|
- if ((texture != NULL) != data->drawstate.texturing) {
|
|
|
- if (texture == NULL) {
|
|
|
- data->glDisableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
|
|
- data->drawstate.texturing = SDL_FALSE;
|
|
|
- } else {
|
|
|
- data->glEnableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
|
|
- 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);
|
|
|
+ if ((texture != NULL) != data->drawstate.texturing) {
|
|
|
+ if (texture == NULL) {
|
|
|
+ data->glDisableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
|
|
+ data->drawstate.texturing = SDL_FALSE;
|
|
|
+ } else {
|
|
|
+ data->glEnableVertexAttribArray((GLenum) GLES2_ATTRIBUTE_TEXCOORD);
|
|
|
+ data->drawstate.texturing = SDL_TRUE;
|
|
|
}
|
|
|
-
|
|
|
- data->drawstate.texture = 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_ImageSource sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR;
|
|
|
SDL_Texture *texture = cmd->data.draw.texture;
|
|
|
+ int ret;
|
|
|
|
|
|
/* Pick an appropriate shader */
|
|
|
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
|