From 73f4ab4c13fcc9f93306519d2a5226a670fda0ff Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Mon, 20 Sep 2021 16:57:21 +0200
Subject: [PATCH] Direct3D11: remove RenderCopy and RenderCopyEx from back-end
---
src/render/direct3d11/SDL_render_d3d11.c | 195 +----------------------
1 file changed, 2 insertions(+), 193 deletions(-)
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c
index d07a23e2b7..5aa8829fe7 100644
--- a/src/render/direct3d11/SDL_render_d3d11.c
+++ b/src/render/direct3d11/SDL_render_d3d11.c
@@ -1698,174 +1698,6 @@ D3D11_QueueFillRects(SDL_Renderer * renderer, SDL_RenderCommand *cmd, const SDL_
return 0;
}
-static int
-D3D11_QueueCopy(SDL_Renderer * renderer, SDL_RenderCommand *cmd, SDL_Texture * texture,
- const SDL_Rect * srcrect, const SDL_FRect * dstrect)
-{
- VertexPositionColor *verts = (VertexPositionColor *) SDL_AllocateRenderVertices(renderer, 4 * sizeof (VertexPositionColor), 0, &cmd->data.draw.first);
- const float r = (float)(cmd->data.draw.r / 255.0f);
- const float g = (float)(cmd->data.draw.g / 255.0f);
- const float b = (float)(cmd->data.draw.b / 255.0f);
- const float a = (float)(cmd->data.draw.a / 255.0f);
- const float minu = (float) srcrect->x / texture->w;
- const float maxu = (float) (srcrect->x + srcrect->w) / texture->w;
- const float minv = (float) srcrect->y / texture->h;
- const float maxv = (float) (srcrect->y + srcrect->h) / texture->h;
-
- if (!verts) {
- return -1;
- }
-
- cmd->data.draw.count = 1;
-
- verts->pos.x = dstrect->x;
- verts->pos.y = dstrect->y;
- verts->pos.z = 0.0f;
- verts->tex.x = minu;
- verts->tex.y = minv;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts++;
-
- verts->pos.x = dstrect->x;
- verts->pos.y = dstrect->y + dstrect->h;
- verts->pos.z = 0.0f;
- verts->tex.x = minu;
- verts->tex.y = maxv;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts++;
-
- verts->pos.x = dstrect->x + dstrect->w;
- verts->pos.y = dstrect->y;
- verts->pos.z = 0.0f;
- verts->tex.x = maxu;
- verts->tex.y = minv;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts++;
-
- verts->pos.x = dstrect->x + dstrect->w;
- verts->pos.y = dstrect->y + dstrect->h;
- verts->pos.z = 0.0f;
- verts->tex.x = maxu;
- verts->tex.y = maxv;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts++;
-
- return 0;
-}
-
-static int
-D3D11_QueueCopyEx(SDL_Renderer * renderer, SDL_RenderCommand *cmd, SDL_Texture * texture,
- const SDL_Rect * srcrect, const SDL_FRect * dstrect,
- const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip)
-{
- VertexPositionColor *verts = (VertexPositionColor *) SDL_AllocateRenderVertices(renderer, 5 * sizeof (VertexPositionColor), 0, &cmd->data.draw.first);
- const float r = (float)(cmd->data.draw.r / 255.0f);
- const float g = (float)(cmd->data.draw.g / 255.0f);
- const float b = (float)(cmd->data.draw.b / 255.0f);
- const float a = (float)(cmd->data.draw.a / 255.0f);
- float minx, miny, maxx, maxy;
- float minu, maxu, minv, maxv;
-
- if (!verts) {
- return -1;
- }
-
- cmd->data.draw.count = 1;
-
- minx = -center->x;
- maxx = dstrect->w - center->x;
- miny = -center->y;
- maxy = dstrect->h - center->y;
-
- if (flip & SDL_FLIP_HORIZONTAL) {
- minu = (float) (srcrect->x + srcrect->w) / texture->w;
- maxu = (float) srcrect->x / texture->w;
- } else {
- minu = (float) srcrect->x / texture->w;
- maxu = (float) (srcrect->x + srcrect->w) / texture->w;
- }
-
- if (flip & SDL_FLIP_VERTICAL) {
- minv = (float) (srcrect->y + srcrect->h) / texture->h;
- maxv = (float) srcrect->y / texture->h;
- } else {
- minv = (float) srcrect->y / texture->h;
- maxv = (float) (srcrect->y + srcrect->h) / texture->h;
- }
-
-
-
- verts->pos.x = minx;
- verts->pos.y = miny;
- verts->pos.z = 0.0f;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts->tex.x = minu;
- verts->tex.y = minv;
- verts++;
-
- verts->pos.x = minx;
- verts->pos.y = maxy;
- verts->pos.z = 0.0f;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts->tex.x = minu;
- verts->tex.y = maxv;
- verts++;
-
- verts->pos.x = maxx;
- verts->pos.y = miny;
- verts->pos.z = 0.0f;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts->tex.x = maxu;
- verts->tex.y = minv;
- verts++;
-
- verts->pos.x = maxx;
- verts->pos.y = maxy;
- verts->pos.z = 0.0f;
- verts->color.x = r;
- verts->color.y = g;
- verts->color.z = b;
- verts->color.w = a;
- verts->tex.x = maxu;
- verts->tex.y = maxv;
- verts++;
-
- verts->pos.x = dstrect->x + center->x; /* X translation */
- verts->pos.y = dstrect->y + center->y; /* Y translation */
- verts->pos.z = (float)(M_PI * (float) angle / 180.0f); /* rotation */
- verts->color.x = 0;
- verts->color.y = 0;
- verts->color.z = 0;
- verts->color.w = 0;
- verts->tex.x = 0.0f;
- verts->tex.y = 0.0f;
- verts++;
-
- return 0;
-}
-
-#if SDL_HAVE_RENDER_GEOMETRY
static int
D3D11_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *texture,
const float *xy, int xy_stride, const int *color, int color_stride, const float *uv, int uv_stride,
@@ -1921,7 +1753,6 @@ D3D11_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture
}
return 0;
}
-#endif
static int
D3D11_UpdateVertexBuffer(SDL_Renderer *renderer,
@@ -2382,30 +2213,13 @@ D3D11_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver
break;
}
- case SDL_RENDERCMD_COPY: {
- const size_t first = cmd->data.draw.first;
- const size_t start = first / sizeof (VertexPositionColor);
- D3D11_SetCopyState(renderer, cmd, NULL);
- D3D11_DrawPrimitives(renderer, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP, start, 4);
+ case SDL_RENDERCMD_COPY: /* unsued */
break;
- }
- case SDL_RENDERCMD_COPY_EX: {
- const size_t first = cmd->data.draw.first;
- const size_t start = first / sizeof (VertexPositionColor);
- const VertexPositionColor *verts = (VertexPositionColor *) (((Uint8 *) vertices) + first);
- const VertexPositionColor *transvert = verts + 4;
- const float translatex = transvert->pos.x;
- const float translatey = transvert->pos.y;
- const float rotation = transvert->pos.z;
- const Float4X4 matrix = MatrixMultiply(MatrixRotationZ(rotation), MatrixTranslation(translatex, translatey, 0));
- D3D11_SetCopyState(renderer, cmd, &matrix);
- D3D11_DrawPrimitives(renderer, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP, start, 4);
+ case SDL_RENDERCMD_COPY_EX: /* unused */
break;
- }
case SDL_RENDERCMD_GEOMETRY: {
-#if SDL_HAVE_RENDER_GEOMETRY
SDL_Texture *texture = cmd->data.draw.texture;
const size_t count = cmd->data.draw.count;
const size_t first = cmd->data.draw.first;
@@ -2418,7 +2232,6 @@ D3D11_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *ver
}
D3D11_DrawPrimitives(renderer, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST, start, count);
-#endif
break;
}
@@ -2650,11 +2463,7 @@ D3D11_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->QueueDrawPoints = D3D11_QueueDrawPoints;
renderer->QueueDrawLines = D3D11_QueueDrawPoints; /* lines and points queue vertices the same way. */
renderer->QueueFillRects = D3D11_QueueFillRects;
- renderer->QueueCopy = D3D11_QueueCopy;
- renderer->QueueCopyEx = D3D11_QueueCopyEx;
-#if SDL_HAVE_RENDER_GEOMETRY
renderer->QueueGeometry = D3D11_QueueGeometry;
-#endif
renderer->RunCommandQueue = D3D11_RunCommandQueue;
renderer->RenderReadPixels = D3D11_RenderReadPixels;
renderer->RenderPresent = D3D11_RenderPresent;