wiiu/render: Fix GX2ContextState alignment

This commit is contained in:
rw-r-r-0644 2018-10-27 17:48:35 +02:00 committed by Ash Logan
parent 0ea992080b
commit aa08e434c9
3 changed files with 13 additions and 8 deletions

View File

@ -78,7 +78,7 @@ int WIIU_SDL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, a_texCoord, sizeof(float) * 8);
/* Render */
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
wiiuSetTextureShader();
GX2SetPixelTexture(&tdata->texture, 0);
GX2SetPixelSampler(&tdata->sampler, 0);
@ -130,7 +130,7 @@ int WIIU_SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, a_texCoord, sizeof(float) * 8);
/* Render */
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
wiiuSetTextureShader();
GX2SetPixelTexture(&tdata->texture, 0);
GX2SetPixelSampler(&tdata->sampler, 0);
@ -164,7 +164,7 @@ int WIIU_SDL_RenderDrawPoints(SDL_Renderer * renderer, const SDL_FPoint * points
(float)renderer->b / 255.0f,
(float)renderer->a / 255.0f};
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
wiiuSetColorShader();
GX2SetAttribBuffer(0, sizeof(float) * 2 * count, sizeof(float) * 2, a_position);
GX2SetPixelUniformReg(wiiuColorShader.pixelShader->uniformVars[0].offset, 4, (uint32_t*)u_color);
@ -197,7 +197,7 @@ int WIIU_SDL_RenderDrawLines(SDL_Renderer * renderer, const SDL_FPoint * points,
(float)renderer->b / 255.0f,
(float)renderer->a / 255.0f};
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
wiiuSetColorShader();
GX2SetAttribBuffer(0, sizeof(float) * 2 * count, sizeof(float) * 2, a_position);
GX2SetPixelUniformReg(wiiuColorShader.pixelShader->uniformVars[0].offset, 4, (uint32_t*)u_color);
@ -238,7 +238,7 @@ int WIIU_SDL_RenderFillRects(SDL_Renderer * renderer, const SDL_FRect * rects, i
(float)renderer->b / 255.0f,
(float)renderer->a / 255.0f};
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
wiiuSetColorShader();
GX2SetAttribBuffer(0, sizeof(float) * 2 * 4 * count, sizeof(float) * 2, a_position);
GX2SetPixelUniformReg(wiiuColorShader.pixelShader->uniformVars[0].offset, 4, (uint32_t*)u_color);

View File

@ -31,6 +31,7 @@
#include <gx2/registers.h>
#include <malloc.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
@ -103,7 +104,9 @@ SDL_Renderer *WIIU_SDL_CreateRenderer(SDL_Window * window, Uint32 flags)
GX2SetPointSize(1.0f, 1.0f);
// Create a fresh context state
GX2SetupContextStateEx(&data->ctx, TRUE);
data->ctx = (GX2ContextState *) memalign(GX2_CONTEXT_STATE_ALIGNMENT, sizeof(GX2ContextState));
memset(data->ctx, 0, sizeof(GX2ContextState));
GX2SetupContextStateEx(data->ctx, TRUE);
// Setup colour buffer, rendering to the window
WIIU_SDL_SetRenderTarget(renderer, NULL);
@ -135,7 +138,7 @@ int WIIU_SDL_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
GX2InitColorBufferRegs(&data->cbuf);
// Update context state
GX2SetContextState(&data->ctx);
GX2SetContextState(data->ctx);
GX2SetColorBuffer(&data->cbuf, GX2_RENDER_TARGET_0);
// These may be unnecessary - see SDL_render.c: SDL_SetRenderTarget's calls
// to UpdateViewport and UpdateClipRect. TODO for once the render is
@ -156,6 +159,8 @@ void WIIU_SDL_DestroyRenderer(SDL_Renderer * renderer)
SDL_free(ptr);
}
free(data->ctx);
wiiuFreeColorShader();
wiiuFreeTextureShader();

View File

@ -39,7 +39,7 @@ typedef struct
typedef struct
{
GX2ColorBuffer cbuf;
GX2ContextState ctx;
GX2ContextState *ctx;
WIIU_RenderAllocData *listfree;
} WIIU_RenderData;