(GL) Cleanups

This commit is contained in:
twinaphex 2016-05-05 01:29:52 +02:00
parent b0193885ca
commit 7feac862db
1 changed files with 9 additions and 12 deletions

View File

@ -3121,6 +3121,8 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
rarch_perf_init(&read_viewport, "read_viewport"); rarch_perf_init(&read_viewport, "read_viewport");
retro_perf_start(&read_viewport); retro_perf_start(&read_viewport);
num_pixels = gl->vp.width * gl->vp.height;
#ifdef HAVE_GL_ASYNC_READBACK #ifdef HAVE_GL_ASYNC_READBACK
if (gl->pbo_readback_enable) if (gl->pbo_readback_enable)
{ {
@ -3134,10 +3136,10 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
gl->pbo_readback_valid[gl->pbo_readback_index] = false; gl->pbo_readback_valid[gl->pbo_readback_index] = false;
glBindBuffer(GL_PIXEL_PACK_BUFFER, glBindBuffer(GL_PIXEL_PACK_BUFFER,
gl->pbo_readback[gl->pbo_readback_index]); gl->pbo_readback[gl->pbo_readback_index]);
#ifdef HAVE_OPENGLES3 #ifdef HAVE_OPENGLES3
/* Slower path, but should work on all implementations at least. */ /* Slower path, but should work on all implementations at least. */
num_pixels = gl->vp.width * gl->vp.height; ptr = (const uint8_t*)glMapBufferRange(GL_PIXEL_PACK_BUFFER,
ptr = (const uint8_t*)glMapBufferRange(GL_PIXEL_PACK_BUFFER,
0, num_pixels * sizeof(uint32_t), GL_MAP_READ_BIT); 0, num_pixels * sizeof(uint32_t), GL_MAP_READ_BIT);
if (ptr) if (ptr)
@ -3151,21 +3153,18 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
gl->vp.width); gl->vp.width);
} }
} }
else
{
RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n");
goto error;
}
#else #else
ptr = (const uint8_t*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); ptr = (const uint8_t*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
if (ptr)
scaler_ctx_scale(&gl->pbo_readback_scaler, buffer, ptr);
#endif
if (!ptr) if (!ptr)
{ {
RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n"); RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n");
goto error; goto error;
} }
scaler_ctx_scale(&gl->pbo_readback_scaler, buffer, ptr);
#endif
glUnmapBuffer(GL_PIXEL_PACK_BUFFER); glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
} }
@ -3182,10 +3181,8 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
* *
* Keep codepath similar for GLES and desktop GL. * Keep codepath similar for GLES and desktop GL.
*/ */
num_pixels = gl->vp.width * gl->vp.height;
gl->readback_buffer_screenshot = malloc(num_pixels * sizeof(uint32_t)); gl->readback_buffer_screenshot = malloc(num_pixels * sizeof(uint32_t));
if (!gl->readback_buffer_screenshot) if (!gl->readback_buffer_screenshot)
{ {
retro_perf_stop(&read_viewport); retro_perf_stop(&read_viewport);