Commit a6be4e72 authored by Sam Lantinga's avatar Sam Lantinga

Don't reset the viewport unless you have to.

parent 2a4134c2
...@@ -704,7 +704,6 @@ static int ...@@ -704,7 +704,6 @@ static int
D3D_RenderClear(SDL_Renderer * renderer) D3D_RenderClear(SDL_Renderer * renderer)
{ {
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
D3DVIEWPORT9 viewport;
DWORD color; DWORD color;
HRESULT result; HRESULT result;
...@@ -712,6 +711,16 @@ D3D_RenderClear(SDL_Renderer * renderer) ...@@ -712,6 +711,16 @@ D3D_RenderClear(SDL_Renderer * renderer)
return -1; return -1;
} }
color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b);
/* Don't reset the viewport if we don't have to! */
if (!renderer->viewport.x && !renderer->viewport.y &&
renderer->viewport.w == data->pparams.BackBufferWidth &&
renderer->viewport.h == data->pparams.BackBufferHeight) {
result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0);
} else {
D3DVIEWPORT9 viewport;
/* Clear is defined to clear the entire render target */ /* Clear is defined to clear the entire render target */
viewport.X = 0; viewport.X = 0;
viewport.Y = 0; viewport.Y = 0;
...@@ -721,8 +730,6 @@ D3D_RenderClear(SDL_Renderer * renderer) ...@@ -721,8 +730,6 @@ D3D_RenderClear(SDL_Renderer * renderer)
viewport.MaxZ = 1.0f; viewport.MaxZ = 1.0f;
IDirect3DDevice9_SetViewport(data->device, &viewport); IDirect3DDevice9_SetViewport(data->device, &viewport);
color = D3DCOLOR_ARGB(renderer->a, renderer->r, renderer->g, renderer->b);
result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0); result = IDirect3DDevice9_Clear(data->device, 0, NULL, D3DCLEAR_TARGET, color, 0.0f, 0);
/* Reset the viewport */ /* Reset the viewport */
...@@ -733,6 +740,7 @@ D3D_RenderClear(SDL_Renderer * renderer) ...@@ -733,6 +740,7 @@ D3D_RenderClear(SDL_Renderer * renderer)
viewport.MinZ = 0.0f; viewport.MinZ = 0.0f;
viewport.MaxZ = 1.0f; viewport.MaxZ = 1.0f;
IDirect3DDevice9_SetViewport(data->device, &viewport); IDirect3DDevice9_SetViewport(data->device, &viewport);
}
if (FAILED(result)) { if (FAILED(result)) {
D3D_SetError("Clear()", result); D3D_SetError("Clear()", result);
......
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