More platform build fixes

This commit is contained in:
twinaphex 2017-01-10 21:15:52 +01:00
parent f233745483
commit c1c35c5120
6 changed files with 100 additions and 80 deletions

View File

@ -297,7 +297,6 @@ static void* ctr_init(const video_info_t* video,
memset(ctr, 0, sizeof(ctr_video_t)); memset(ctr, 0, sizeof(ctr_video_t));
ctr->vp.x = 0; ctr->vp.x = 0;
ctr->vp.y = 0; ctr->vp.y = 0;
ctr->vp.width = CTR_TOP_FRAMEBUFFER_WIDTH; ctr->vp.width = CTR_TOP_FRAMEBUFFER_WIDTH;
@ -406,13 +405,14 @@ static void* ctr_init(const video_info_t* video,
sizeof(ctr_vertex_t)); sizeof(ctr_vertex_t));
GPUCMD_Finalize(); GPUCMD_Finalize();
ctrGuFlushAndRun(true); ctrGuFlushAndRun(true);
// gspWaitForEvent(GSPGPU_EVENT_P3D, false);
ctr->p3d_event_pending = true; ctr->p3d_event_pending = true;
ctr->ppf_event_pending = false; ctr->ppf_event_pending = false;
if (input && input_data) if (input && input_data)
{ {
ctrinput = input_ctr.init(); settings_t *settings = config_get_ptr();
ctrinput = input_ctr.init(settings->input.joypad_driver);
*input = ctrinput ? &input_ctr : NULL; *input = ctrinput ? &input_ctr : NULL;
*input_data = ctrinput; *input_data = ctrinput;
} }

View File

@ -444,7 +444,8 @@ static void *psp_init(const video_info_t *video,
if (input && input_data) if (input && input_data)
{ {
pspinput = input_psp.init(); settings_t *settings = config_get_ptr();
pspinput = input_psp.init(settings->input.joypad_driver);
*input = pspinput ? &input_psp : NULL; *input = pspinput ? &input_psp : NULL;
*input_data = pspinput; *input_data = pspinput;
} }

View File

@ -91,7 +91,8 @@ static void *vita2d_gfx_init(const video_info_t *video,
if (input && input_data) if (input && input_data)
{ {
void *pspinput = input_psp.init(); settings_t *settings = config_get_ptr();
void *pspinput = input_psp.init(settings->input.joypad_driver);
*input = pspinput ? &input_psp : NULL; *input = pspinput ? &input_psp : NULL;
*input_data = pspinput; *input_data = pspinput;
} }

View File

@ -263,18 +263,22 @@ static void* wiiu_gfx_init(const video_info_t* video,
const input_driver_t** input, void** input_data) const input_driver_t** input, void** input_data)
{ {
int i; int i;
*input = NULL; float refresh_rate = 60.0f / 1.001f;
*input_data = NULL; u32 size = 0;
u32 tmp = 0;
void* wiiuinput = NULL;
wiiu_video_t* wiiu = calloc(1, sizeof(*wiiu)); wiiu_video_t* wiiu = calloc(1, sizeof(*wiiu));
if (!wiiu) if (!wiiu)
return NULL; return NULL;
void* wiiuinput = NULL; *input = NULL;
*input_data = NULL;
if (input && input_data) if (input && input_data)
{ {
wiiuinput = input_wiiu.init(); settings_t *settings = config_get_ptr();
wiiuinput = input_wiiu.init(settings->input.joypad_driver);
*input = wiiuinput ? &input_wiiu : NULL; *input = wiiuinput ? &input_wiiu : NULL;
*input_data = wiiuinput; *input_data = wiiuinput;
} }
@ -292,23 +296,28 @@ static void* wiiu_gfx_init(const video_info_t* video,
GX2Init(init_attributes); GX2Init(init_attributes);
/* setup scanbuffers */ /* setup scanbuffers */
u32 size = 0;
u32 tmp = 0;
wiiu->render_mode = wiiu_render_mode_map[GX2GetSystemTVScanMode()]; wiiu->render_mode = wiiu_render_mode_map[GX2GetSystemTVScanMode()];
GX2CalcTVSize(wiiu->render_mode.mode, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8, GX2_BUFFERING_MODE_DOUBLE, &size, &tmp); GX2CalcTVSize(wiiu->render_mode.mode, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8,
GX2_BUFFERING_MODE_DOUBLE, &size, &tmp);
wiiu->tv_scan_buffer = MEMBucket_alloc(size, GX2_SCAN_BUFFER_ALIGNMENT); wiiu->tv_scan_buffer = MEMBucket_alloc(size, GX2_SCAN_BUFFER_ALIGNMENT);
GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->tv_scan_buffer, size); GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->tv_scan_buffer, size);
GX2SetTVBuffer(wiiu->tv_scan_buffer, size, wiiu->render_mode.mode, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8, GX2SetTVBuffer(wiiu->tv_scan_buffer, size, wiiu->render_mode.mode,
GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8,
GX2_BUFFERING_MODE_DOUBLE); GX2_BUFFERING_MODE_DOUBLE);
GX2CalcDRCSize(GX2_DRC_RENDER_MODE_SINGLE, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8, GX2_BUFFERING_MODE_DOUBLE, &size, GX2CalcDRCSize(GX2_DRC_RENDER_MODE_SINGLE, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8,
GX2_BUFFERING_MODE_DOUBLE, &size,
&tmp); &tmp);
wiiu->drc_scan_buffer = MEMBucket_alloc(size, GX2_SCAN_BUFFER_ALIGNMENT); wiiu->drc_scan_buffer = MEMBucket_alloc(size, GX2_SCAN_BUFFER_ALIGNMENT);
GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->drc_scan_buffer, size); GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->drc_scan_buffer, size);
GX2SetDRCBuffer(wiiu->drc_scan_buffer, size, GX2_DRC_RENDER_MODE_SINGLE, GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8, GX2SetDRCBuffer(wiiu->drc_scan_buffer, size, GX2_DRC_RENDER_MODE_SINGLE,
GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8,
GX2_BUFFERING_MODE_DOUBLE); GX2_BUFFERING_MODE_DOUBLE);
memset(&wiiu->color_buffer, 0, sizeof(GX2ColorBuffer)); memset(&wiiu->color_buffer, 0, sizeof(GX2ColorBuffer));
wiiu->color_buffer.surface.dim = GX2_SURFACE_DIM_TEXTURE_2D; wiiu->color_buffer.surface.dim = GX2_SURFACE_DIM_TEXTURE_2D;
wiiu->color_buffer.surface.width = wiiu->render_mode.width; wiiu->color_buffer.surface.width = wiiu->render_mode.width;
wiiu->color_buffer.surface.height = wiiu->render_mode.height; wiiu->color_buffer.surface.height = wiiu->render_mode.height;
@ -317,12 +326,14 @@ static void* wiiu_gfx_init(const video_info_t* video,
wiiu->color_buffer.surface.format = GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8; wiiu->color_buffer.surface.format = GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8;
wiiu->color_buffer.surface.use = GX2_SURFACE_USE_TEXTURE_COLOR_BUFFER_TV; wiiu->color_buffer.surface.use = GX2_SURFACE_USE_TEXTURE_COLOR_BUFFER_TV;
wiiu->color_buffer.viewNumSlices = 1; wiiu->color_buffer.viewNumSlices = 1;
GX2CalcSurfaceSizeAndAlignment(&wiiu->color_buffer.surface); GX2CalcSurfaceSizeAndAlignment(&wiiu->color_buffer.surface);
GX2InitColorBufferRegs(&wiiu->color_buffer); GX2InitColorBufferRegs(&wiiu->color_buffer);
wiiu->color_buffer.surface.image = MEM1_alloc(wiiu->color_buffer.surface.imageSize, wiiu->color_buffer.surface.image = MEM1_alloc(wiiu->color_buffer.surface.imageSize,
wiiu->color_buffer.surface.alignment); wiiu->color_buffer.surface.alignment);
GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->color_buffer.surface.image, wiiu->color_buffer.surface.imageSize); GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->color_buffer.surface.image,
wiiu->color_buffer.surface.imageSize);
wiiu->ctx_state = (GX2ContextState*)MEM2_alloc(sizeof(GX2ContextState), GX2_CONTEXT_STATE_ALIGNMENT); wiiu->ctx_state = (GX2ContextState*)MEM2_alloc(sizeof(GX2ContextState), GX2_CONTEXT_STATE_ALIGNMENT);
GX2SetupContextStateEx(wiiu->ctx_state, GX2_TRUE); GX2SetupContextStateEx(wiiu->ctx_state, GX2_TRUE);
@ -344,8 +355,8 @@ static void* wiiu_gfx_init(const video_info_t* video,
#ifdef GX2_CAN_ACCESS_DATA_SECTION #ifdef GX2_CAN_ACCESS_DATA_SECTION
wiiu->shader = &tex_shader; wiiu->shader = &tex_shader;
#else #else
/* init shader */ /* init shader */
// wiiu->shader = MEM2_alloc(sizeof(*wiiu->shader), GX2_VERTEX_BUFFER_ALIGNMENT);
wiiu->shader = MEM2_alloc(sizeof(tex_shader), 0x1000); wiiu->shader = MEM2_alloc(sizeof(tex_shader), 0x1000);
memcpy(wiiu->shader, &tex_shader, sizeof(tex_shader)); memcpy(wiiu->shader, &tex_shader, sizeof(tex_shader));
GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->shader, sizeof(tex_shader)); GX2Invalidate(GX2_INVALIDATE_MODE_CPU, wiiu->shader, sizeof(tex_shader));
@ -367,7 +378,8 @@ static void* wiiu_gfx_init(const video_info_t* video,
wiiu->shader->ps.samplerVarCount * sizeof(GX2SamplerVar)); wiiu->shader->ps.samplerVarCount * sizeof(GX2SamplerVar));
#endif #endif
wiiu->shader->fs.size = GX2CalcFetchShaderSizeEx(2, GX2_FETCH_SHADER_TESSELLATION_NONE, GX2_TESSELLATION_MODE_DISCRETE); wiiu->shader->fs.size = GX2CalcFetchShaderSizeEx(2, GX2_FETCH_SHADER_TESSELLATION_NONE,
GX2_TESSELLATION_MODE_DISCRETE);
wiiu->shader->fs.program = MEM2_alloc(wiiu->shader->fs.size, GX2_SHADER_ALIGNMENT); wiiu->shader->fs.program = MEM2_alloc(wiiu->shader->fs.size, GX2_SHADER_ALIGNMENT);
GX2InitFetchShaderEx(&wiiu->shader->fs, (uint8_t*)wiiu->shader->fs.program, GX2InitFetchShaderEx(&wiiu->shader->fs, (uint8_t*)wiiu->shader->fs.program,
sizeof(wiiu->shader->attribute_stream) / sizeof(GX2AttribStream), sizeof(wiiu->shader->attribute_stream) / sizeof(GX2AttribStream),
@ -379,19 +391,23 @@ static void* wiiu_gfx_init(const video_info_t* video,
GX2SetFetchShader(&wiiu->shader->fs); GX2SetFetchShader(&wiiu->shader->fs);
wiiu->position = MEM2_alloc(4 * sizeof(*wiiu->position), GX2_VERTEX_BUFFER_ALIGNMENT); wiiu->position = MEM2_alloc(4 * sizeof(*wiiu->position), GX2_VERTEX_BUFFER_ALIGNMENT);
wiiu_set_position(wiiu->position, &wiiu->color_buffer, 0, 0, wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height); wiiu_set_position(wiiu->position, &wiiu->color_buffer, 0, 0,
wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height);
wiiu->tex_coord = MEM2_alloc(4 * sizeof(*wiiu->tex_coord), GX2_VERTEX_BUFFER_ALIGNMENT); wiiu->tex_coord = MEM2_alloc(4 * sizeof(*wiiu->tex_coord), GX2_VERTEX_BUFFER_ALIGNMENT);
wiiu_set_tex_coords(wiiu->tex_coord, &wiiu->texture, 0, 0, wiiu->texture.surface.width, wiiu->texture.surface.height); wiiu_set_tex_coords(wiiu->tex_coord, &wiiu->texture, 0, 0,
wiiu->texture.surface.width, wiiu->texture.surface.height);
GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->position), sizeof(*wiiu->position), wiiu->position); GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->position), sizeof(*wiiu->position), wiiu->position);
GX2SetAttribBuffer(1, 4 * sizeof(*wiiu->tex_coord), sizeof(*wiiu->tex_coord), wiiu->tex_coord); GX2SetAttribBuffer(1, 4 * sizeof(*wiiu->tex_coord), sizeof(*wiiu->tex_coord), wiiu->tex_coord);
wiiu->menu.position = MEM2_alloc(4 * sizeof(*wiiu->menu.position), GX2_VERTEX_BUFFER_ALIGNMENT); wiiu->menu.position = MEM2_alloc(4 * sizeof(*wiiu->menu.position), GX2_VERTEX_BUFFER_ALIGNMENT);
wiiu_set_position(wiiu->menu.position, &wiiu->color_buffer, 0, 0, wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height); wiiu_set_position(wiiu->menu.position, &wiiu->color_buffer, 0, 0,
wiiu->color_buffer.surface.width, wiiu->color_buffer.surface.height);
wiiu->menu.tex_coord = MEM2_alloc(4 * sizeof(*wiiu->menu.tex_coord), GX2_VERTEX_BUFFER_ALIGNMENT); wiiu->menu.tex_coord = MEM2_alloc(4 * sizeof(*wiiu->menu.tex_coord), GX2_VERTEX_BUFFER_ALIGNMENT);
wiiu_set_tex_coords(wiiu->menu.tex_coord, &wiiu->menu.texture, 0, 0, wiiu->menu.texture.surface.width, wiiu->menu.texture.surface.height); wiiu_set_tex_coords(wiiu->menu.tex_coord, &wiiu->menu.texture, 0, 0,
wiiu->menu.texture.surface.width, wiiu->menu.texture.surface.height);
/* init frame texture */ /* init frame texture */
memset(&wiiu->texture, 0, sizeof(GX2Texture)); memset(&wiiu->texture, 0, sizeof(GX2Texture));
@ -402,6 +418,7 @@ static void* wiiu_gfx_init(const video_info_t* video,
wiiu->texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED; wiiu->texture.surface.tileMode = GX2_TILE_MODE_LINEAR_ALIGNED;
wiiu->texture.viewNumSlices = 1; wiiu->texture.viewNumSlices = 1;
wiiu->rgb32 = video->rgb32; wiiu->rgb32 = video->rgb32;
if(wiiu->rgb32) if(wiiu->rgb32)
{ {
wiiu->texture.surface.format = GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8; wiiu->texture.surface.format = GX2_SURFACE_FORMAT_UNORM_R8_G8_B8_A8;
@ -475,11 +492,11 @@ static void* wiiu_gfx_init(const video_info_t* video,
wiiu->vp.full_height = 480; wiiu->vp.full_height = 480;
video_driver_set_size(&wiiu->vp.width, &wiiu->vp.height); video_driver_set_size(&wiiu->vp.width, &wiiu->vp.height);
float refresh_rate = 60.0f / 1.001f;
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate); driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
return wiiu; return wiiu;
} }
static void wiiu_gfx_free(void* data) static void wiiu_gfx_free(void* data)
{ {
wiiu_video_t* wiiu = (wiiu_video_t*) data; wiiu_video_t* wiiu = (wiiu_video_t*) data;

View File

@ -37,6 +37,8 @@
#endif #endif
#include "../../frontend/drivers/platform_linux.h" #include "../../frontend/drivers/platform_linux.h"
#include "../../configuration.h"
#include "../../runloop.h" #include "../../runloop.h"
static enum gfx_ctx_api android_api = GFX_CTX_NONE; static enum gfx_ctx_api android_api = GFX_CTX_NONE;
@ -365,9 +367,8 @@ static bool android_gfx_ctx_set_video_mode(void *data,
static void android_gfx_ctx_input_driver(void *data, static void android_gfx_ctx_input_driver(void *data,
const input_driver_t **input, void **input_data) const input_driver_t **input, void **input_data)
{ {
void *androidinput = input_android.init(); settings_t *settings = config_get_ptr();
void *androidinput = input_android.init(settings->input.joypad_driver);
(void)data;
*input = androidinput ? &input_android : NULL; *input = androidinput ? &input_android : NULL;
*input_data = androidinput; *input_data = androidinput;

View File

@ -44,6 +44,7 @@
#include "../common/gl_common.h" #include "../common/gl_common.h"
#endif #endif
#include "../../configuration.h"
#include "../../runloop.h" #include "../../runloop.h"
#define WINDOW_BUFFERS 2 #define WINDOW_BUFFERS 2
@ -346,9 +347,8 @@ static bool gfx_ctx_qnx_set_video_mode(void *data,
static void gfx_ctx_qnx_input_driver(void *data, static void gfx_ctx_qnx_input_driver(void *data,
const input_driver_t **input, void **input_data) const input_driver_t **input, void **input_data)
{ {
void *qnxinput = input_qnx.init(); settings_t *settings = config_get_ptr();
void *qnxinput = input_qnx.init(settings->input.joypad_driver);
(void)data;
*input = qnxinput ? &input_qnx : NULL; *input = qnxinput ? &input_qnx : NULL;
*input_data = qnxinput; *input_data = qnxinput;