mutter/cogl/driver/gl
Neil Roberts 29983a7e2c buffer: Don't set the invalidate hint when requesting read access
glMapBufferRange is documented to fail with GL_INVALID_OPERATION if
GL_MAP_INVALIDATE_BUFFER_BIT is set as well as GL_MAP_READ_BIT. I
guess this makes sense when only read access is requested because
there would be no point in reading back uninitialised data. However,
Clutter requests read/write access with the discard hint when
rendering to a CoglBitmap with Cairo. The data is new so the discard
hint makes sense but it also needs read access so that it can read
back the data it just wrote for blending.

This patch works around the GL restriction by skipping the discard
hints if read access is requested. If the buffer discard hint is set
along with read access it will recreate the buffer store as an
alternative way to discard the buffer as it does in the case where the
GL_ARB_map_buffer_range extension is not supported.

https://bugzilla.gnome.org/show_bug.cgi?id=694164

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 986675d6043e8701f2d65415cf72ffc91734debd)
2013-02-19 15:03:30 +00:00
..
gl Don't set GL_TEXTURE_MAX_LEVEL on GLES 2013-01-25 18:21:09 +00:00
gles Don't set GL_TEXTURE_MAX_LEVEL on GLES 2013-01-25 18:21:09 +00:00
cogl-attribute-gl-private.h buffer: splits out GL specific code 2013-01-22 17:47:59 +00:00
cogl-attribute-gl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-buffer-gl-private.h Allow propogation of OOM errors to apps 2013-01-22 17:48:07 +00:00
cogl-buffer-gl.c buffer: Don't set the invalidate hint when requesting read access 2013-02-19 15:03:30 +00:00
cogl-clip-stack-gl-private.h clip-stack: Splits out opengl specific code 2013-01-22 17:47:59 +00:00
cogl-clip-stack-gl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-framebuffer-gl-private.h framebuffer: Bind the framebuffer before querying the bits 2013-01-22 17:48:18 +00:00
cogl-framebuffer-gl.c Don't #ifdef the call to glDiscardFramebuffer 2013-02-13 12:05:26 +00:00
cogl-pipeline-fragend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-fragend-fixed.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-pipeline-fragend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-fragend-glsl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-pipeline-opengl-private.h Remove the varying array for tex_coords 2013-01-22 17:48:06 +00:00
cogl-pipeline-opengl.c Fix a clear of an array allocated with alloca which had the wrong size 2013-02-08 12:20:32 +00:00
cogl-pipeline-progend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-progend-fixed.c Add a GL 3 driver 2013-01-22 17:48:01 +00:00
cogl-pipeline-progend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-progend-glsl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-pipeline-vertend-fixed-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-vertend-fixed.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-pipeline-vertend-glsl-private.h Re-organize the source layout 2013-01-22 17:47:19 +00:00
cogl-pipeline-vertend-glsl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-texture-2d-gl-private.h Allow lazy texture storage allocation 2013-01-22 17:48:17 +00:00
cogl-texture-2d-gl.c Replace some #if HAVE_COGL_GL lines with #ifdef 2013-01-25 18:21:09 +00:00
cogl-texture-gl-private.h Move _cogl_texture_get_gl_format to -texture-gl.c 2013-01-22 17:48:17 +00:00
cogl-texture-gl.c Don't set GL_TEXTURE_MAX_LEVEL on GLES 2013-01-25 18:21:09 +00:00
cogl-util-gl-private.h Remove cogl-internal.h 2013-01-22 17:48:17 +00:00
cogl-util-gl.c Remove cogl-internal.h 2013-01-22 17:48:17 +00:00