From 9406b0a7711be974fdc13b9a82fda80f30b81231 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 18 May 2013 16:51:10 +0100 Subject: [PATCH] More explicit logging of FBO errors. --- gfx/gl.c | 14 +++++++++++--- gfx/gl_common.h | 4 ++++ gfx/shader_cg.c | 2 +- gfx/shader_glsl.c | 2 +- retroarch.c | 2 +- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gfx/gl.c b/gfx/gl.c index 0d3d77733a..78bcb20eff 100644 --- a/gfx/gl.c +++ b/gfx/gl.c @@ -694,11 +694,19 @@ bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height) GLenum status = pglCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { - RARCH_ERR("[GL]: Failed to create HW render FBO.\n"); + RARCH_ERR("[GL]: Failed to create HW render FBO #%u.\n", i); + const char *err = NULL; + switch (status) + { + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: err = "Incomplete Attachment"; break; + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: err = "Incomplete Dimensions"; break; + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: err = "Missing Attachment"; break; + case GL_FRAMEBUFFER_UNSUPPORTED: err = "Unsupported"; break; + default: err = "Unknown"; break; + } + RARCH_ERR("[GL]: Error: %s.\n", err); return false; } - else - RARCH_LOG("[GL]: HW render FBO #%u initialized.\n", i); } gl_bind_backbuffer(); diff --git a/gfx/gl_common.h b/gfx/gl_common.h index 2f2b395945..5974059bb6 100644 --- a/gfx/gl_common.h +++ b/gfx/gl_common.h @@ -174,7 +174,11 @@ typedef struct gl_shader_backend gl_shader_backend_t; #define MAX_SHADERS 16 #if (defined(HAVE_GLSL) || defined(HAVE_CG)) +#ifdef HAVE_VIDEOCORE +#define TEXTURES 2 // Very little video RAM ... +#else #define TEXTURES 8 +#endif #else #define TEXTURES 1 #endif diff --git a/gfx/shader_cg.c b/gfx/shader_cg.c index 165b3302fa..7b57be65f6 100644 --- a/gfx/shader_cg.c +++ b/gfx/shader_cg.c @@ -98,7 +98,7 @@ struct cg_fbo_params #define MAX_TEXTURES 8 #define MAX_VARIABLES 64 -#define PREV_TEXTURES 7 +#define PREV_TEXTURES (TEXTURES - 1) struct cg_program { diff --git a/gfx/shader_glsl.c b/gfx/shader_glsl.c index da8d47fc1a..43085dd821 100644 --- a/gfx/shader_glsl.c +++ b/gfx/shader_glsl.c @@ -118,7 +118,7 @@ static PFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer; #define BORDER_FUNC GL_CLAMP_TO_BORDER #endif -#define PREV_TEXTURES 7 +#define PREV_TEXTURES (TEXTURES - 1) static struct gfx_shader *glsl_shader; diff --git a/retroarch.c b/retroarch.c index 814f5f43e3..e0e1cc92d0 100644 --- a/retroarch.c +++ b/retroarch.c @@ -254,7 +254,7 @@ static void video_frame(const void *data, unsigned width, unsigned height, size_ g_extern.frame_cache.height = height; g_extern.frame_cache.pitch = pitch; - if (g_extern.system.pix_fmt == RETRO_PIXEL_FORMAT_0RGB1555 && data) + if (g_extern.system.pix_fmt == RETRO_PIXEL_FORMAT_0RGB1555 && data && data != RETRO_HW_FRAME_BUFFER_VALID) { RARCH_PERFORMANCE_INIT(video_frame_conv); RARCH_PERFORMANCE_START(video_frame_conv);