summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* debug: define COGL_DEBUG_ macros for non-debug buildsRobert Bragg2012-09-031-16/+0
| | | | | | | | | | Since we only want to disable the debug features that may impact performance when building with --disable-debug this ensures that the COGL_DEBUG_ macros aren't defined as NOPs for non-debug builds. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit c4b50040b5c033e370eb721d1d217eced8ebdaad)
* pipeline: make _GET_LAYER_NO_CREATE enum a flagRobert Bragg2012-09-031-1/+1
| | | | | | | | | | | | _cogl_pipeline_get_layer_with_flags accepts a CoglPipelineGetLayerFlags flags argument and understands one COGL_PIPELINE_GET_LAYER_NO_CREATE flag. There was a mistake with the definition of this enum though so COGL_PIPELINE_GET_LAYER_NO_CREATE had a value of 0 and so testing for the flag using the bitwise & operator would never find the flag set. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 5923f92f1428b3eb4977b5f21723f1b19a9d284a)
* debug: ignore wireframe debug drawing for line primitivesRobert Bragg2012-09-031-2/+8
| | | | | | | | | If a primitive is already line based then we don't need to do anything special to draw it in wireframe mode. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit fb575a42c308739a7185311a613b1a5f49dbfb39)
* primitive: Don't leak indicesRobert Bragg2012-09-031-0/+3
| | | | | | | | | If a CoglPrimitive is associated with a set of indices then we must unref those indices when freeing the primitive to avoid a leak. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 45cac786b55c953e44f98b864add952b9e398b13)
* kms: Update to latest gbm apiRobert Bragg2012-09-032-3/+16
| | | | | | | | | | | | | | | gbm_bo_get_pitch was renamed to gbm_bo_get_stride to be consistent with how the terms pitch and stride are used throughout mesa. This updates the Cogl backend to use the new gbm_bo_get_stride name. For compatibility with previous version of libgbm we now explicitly check the version of libgbm in configure.ac and expose COGL_GBM_{MAJOR,MINOR,MICRO} defines to the code so we can conditionally use the older gbm_bo_get_pitch() name with older versions. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 47c6247095e2f1f8725c4eb08d38c9de15e283cd)
* cogl-version: Fix the 'since' tags in the documentationNeil Roberts2012-09-031-10/+11
| | | | | | The COGL_VERSION_* macros will also be in Cogl 1.12.0. (cherry picked from commit e9473b58b80a06d3be34a4b518aade190ed9b666)
* cogl-version: Fix the version numberNeil Roberts2012-09-031-4/+4
| | | | | | | The version number macros were using the @COGL_VERSION_*@ substitutions. These are always defined to 2.0.0 in the 1.x releases so we need to use the Cogl @COGL_1_VERSION_*@ substitutions instead to get the real version number.
* Updated Polish translationPiotr Drąg2012-08-291-2/+18
|
* Updated Polish translationPiotr Drąg2012-08-291-18/+24
|
* tex-driver-gles: Fix subregion uploads without GL_EXT_unpack_subimageNeil Roberts2012-08-291-0/+2
| | | | | | | | | | | | | When the GL_EXT_unpack_subimage extension is not available and a subregion of a texture is uploaded then it should first copy the subregion to a newly allocated bitmap. However it was then later still trying to prepare the upload using the original src_x and src_y values which would cause an assertion failure. This patch fixes it to just reset those to zero if the subregion is first copied. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 6f9a62db6f846f1d76e3ca16d9d8cdadf82a7009)
* test(1) uses '=' to test if strings are identicalPatrick Welche2012-08-281-5/+5
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=682340 Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 5cd15e7781466307a27c31e6e3f1e7f5ade5cfee)
* cogl-crate.vcproj: Don't link to SDL for non-SDL x64 buildsChun-wei Fan2012-08-171-1/+1
| | | | | The x64 Release (non-SDL) build was linking to SDL. Remove that dependency.
* Update/fix cogl.symbols for 1.12Chun-wei Fan2012-08-171-4/+76
| | | | | | | | | | | | | | | | | | Update the cogl.symbols file for the 1.12 series, where symbols were added for the following commits: 010d16f6: Adds initial GLES2 integration support 6eb88648: Add a cogl_matrix_init_from_euler function 5e8ff248: Add functions to directly transform from a euler or a quaternion 1686e754: bitmap: Adds cogl_android_bitmap_new_from_asset() df515741: onscreen: Adds support for resizable windows e347135b: Move cogl_wayland_display_ proto to cogl-wayland-server.h Plus, when we branched out for 1.12, some needed symbols were missing, so we would need to make up for them, in particular those in cogl-shader.h and cogl-path-functions.h. Reviewed-by: Robert Bragg <robert@linux.intel.com>
* cogl/Makefile.am: Correct the way gen-enums.bat is createdChun-wei Fan2012-08-171-2/+2
| | | | | | | | Don't use --symbol-prefix cogl_gtype as we are still using the old namespace in cogl-1.12, so there will still be the various _get_type()'s like before Reviewed-by: Robert Bragg <robert@linux.intel.com>
* Fix cogl.vcprojChun-wei Fan2012-08-171-1/+1
| | | | | x64 release builds with the SDL winsys need to link to the SDL libraries as well, which was missed. Make up for that.
* cogl-gles2: Install headers in cogl/ instead of in cogl2/Tomeu Vizoso2012-08-162-2/+2
| | | | Reviewed-by: Robert Bragg <robert@linux.intel.com>
* cogl-gles2: Require cogl-1.0Tomeu Vizoso2012-08-151-1/+1
| | | | Reviewed-by: Robert Bragg <robert@linux.intel.com>
* Post-release version bump to 1.11.3Robert Bragg2012-08-151-2/+2
|
* Release 1.11.2 (snapshot)1.11.2Robert Bragg2012-08-151-4/+4
|
* Updates NEWS for the 1.11.2 releaseRobert Bragg2012-08-151-0/+118
|
* kms: Use a dummy surface instead of the surfaceless extensionNeil Roberts2012-08-153-50/+49
| | | | | | | | | | | | | | | | | | | The surfaceless extension that Mesa advertises has been renamed to EGL_KHR_surfaceless_context instead of a separate extension for the GLES, GLES2 and GL APIs and the new extension has been ratified by Khronos. Therefore the KMS backend no longer runs against Mesa master. We could just rename the extension we check for, however Weston (the sample Wayland compositor) has switched to just creating a dummy GBM surface and not using the surfaceless extension at all. We should probably do the same thing. Using the surfaceless extension could be a good idea but we don't really need to rely on it for KMS and we would want to do it for all EGL backends, not just the KMS backend. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit d4f22f8cb013d417c99ba03924538924191c2fe6)
* framebuffer: Take const pointers for the matrix settersNeil Roberts2012-08-152-4/+4
| | | | | | | | | cogl_framebuffer_set_{projection,modelview}_matrix don't need to read from the matrix argument so they should probably take a const pointer. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 710d6af053aca97935b54f9ff68858ef51f4482b)
* build: remove unneeded check for libdrmAntoine Jacoutot2012-08-152-11/+0
| | | | | | | | | | | | Since fallback for vblank wait via manual drm ioctl was removed in commit 3bc70687ac92b237febeb0f369394e8e6bea9d53 there is no need to check for libdrm anymore. https://bugzilla.gnome.org/show_bug.cgi?id=678316 Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit b84047a578b7746e421cd553e781788925cff90f)
* bitmap: Use the 'copy' blend mode when loading images on QuartzNeil Roberts2012-08-151-0/+2
| | | | | | | | | | | | | | | | | | | | When loading images on Quartz, the image is rendered into a bitmap context using a buffer allocated with _cogl_bitmap_new_with_malloc_buffer. However this buffer is not initialised and by default Quartz will blend the source image with the destination so if there are transparent parts in the source image it will leave garbage in the destination. This patch changes the blend mode to 'copy' so that it won't try to blend. Before 5b785dd4 the buffer was cleared because it was allocated with g_malloc0 so it was working in that case. Presumably it should be more efficient to disable blending and avoid the clear though. https://bugzilla.gnome.org/show_bug.cgi?id=680124 Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 5ba7f4e6837a539d92cbe45491f79a8926fd6828)
* configure: use AC_GNU_SOURCERobert Bragg2012-08-151-0/+1
| | | | | | | | | | This adds the AC_GNU_SOURCE macro to configure.ac to ensure _GNU_SOURCE is defined while compiling Cogl. This is required to use memmem for example. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 1ed717dc12fc4d2cb49010232de93ff46684aa6a)
* Remove one final user of cogl-handle and cogl-handle.h itselfSjoerd Simons2012-08-152-36/+1
| | | | Reviewed-by: Robert Bragg <robert@linux.intel.com>
* Updated Hebrew translation.Yaron Shahrabani2012-08-151-15/+22
| | | | (cherry picked from commit 139079499c6b6bd33987d92b01a9e55928157f65)
* Support building with automake 1.12.xStef Walter2012-08-151-11/+16
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=681285 Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit e5b5c5017487cec6426c93c364ff853831bc2080)
* cogl-gles2-context: Wrap glCopyTex{Sub,}Image2D to flip the resultNeil Roberts2012-08-153-14/+442
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the CoglGLES2Context is bound to read from a CoglOffscreen then the result will be upside down from what GL expects if glCopyTexImage2D is used directly. To fix that, this patch now wraps glCopyTexImage2D and glCopyTexSubImage2D so that the copy is doing by binding an FBO to the target texture and then rendering a quad sampling from the texture in the offscreen framebuffer. The rendering is done using the Cogl context rather than the GLES2 context because otherwise it would have to do a fair bit of work to try and stash the old state on the context before setting up the state to do the blit. The down side of this is that the contexts need to be synchronized so that the rendering will be up-to-date. As far as I understand from the GL spec, this requires a glFinish and then the texture needs to be rebound in the new context because updates to shared objects are guaranteed to be reflected until the object is rebound. GLES2 supports using glCopyTexImage2D for cube map textures. As Cogl doesn't currently have support for cube maps, it is quite hard to get that to work with this patch. For now attempts to copy to a cube map texture will just be sliently ignored. This patch also includes a test case which renders an image to the framebuffer and then copies it to a texture. The texture is then rendered back to the framebuffer and the contents are checked for the correct orientation using glReadPixels. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 30b6da8134bad95267265e26685c7475f6c351c9)
* cogl-gles2-context: Keep track of extra data per texture objectNeil Roberts2012-08-152-4/+240
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a hash table mapping texture object IDs to a struct so that we can keep track of some of the state for each texture object. Currently it will just track the width and height of the texture 2D target. Additionally it will now try to delete any texture objects that have data created for them by the GLES2 context so that it won't leak them. It only tracks objects that get data set on them, not all objects that are bound because it is possible to use the GLES2 context with foreign textures via cogl_gles2_texture_get_handle() and we don't want to delete those. In order to keep track of the currently bound texture object it also needs to track the active texture unit. Note that this state tracking will probably go wrong if GL throws an error for invalid state. For example if glActiveTexture is called with an invalid texture unit then GL will ignore the binding but Cogl will assume it is valid and the state tracking will get out of sync. Perhaps it would be good if Cogl could detect the errors but this is difficult to do without consuming them. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit d8c72bb56cf3598fc57d629edc618f1bfa79f125)
* test-gles2-context: Add a test case for rendering to an FBONeil Roberts2012-08-152-0/+360
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds an extra test to test-gles2-context which renders to an FBO and then checks that the orientation is correct once the texture is rendered via Cogl. This should test the code path to flip the GLES2 rendering in Cogl. The rendering is done in three different ways to test the various state that needs flipping: • Just renders two triangle strips, one at the top and one at the bottom. • Renders two full screen triangle strips, but each with a different viewport to clip it to the top or the bottom. • Clears the screen with two different colors and a scissor to either the top or the bottom. • Renders both quads twice with two different colors and two different front face states. Additionally the rendering is verified by calling glReadPixels to check that the returned pixels are flipped correctly. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 5b097f9bc4a3eb316c6bf0d9fe8db00ff93bfe73)
* test-gles2-context: Fix error checking for cogl_gles2_context_newNeil Roberts2012-08-141-1/+1
| | | | | | | | | The test was passing NULL as the error argument but then trying to use the error object if it failed so it would just crash in that case. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 61cbbb3000fb4001d51999fd05179c620b7e56bf)
* cogl-gles2-context: Flip the rendering when framebuffer is offscreenNeil Roberts2012-08-142-0/+788
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cogl has a different origin for texture coordinates than OpenGL so that the results of rendering to a texture should leave the top of the image at the texture coordinate 0,0 rather than the bottom. When a GLES2 context is used to render to a Cogl texture via a CoglOffscreen we don't really want the application to have to be aware of the mismatch and flip the texture coordinates. To get that to work, this patch now tracks all of the programs that the application generates using the context and sneaks in an extra vertex shader with an alternative main function. This main function multiplies the final calculated gl_Position by a vector uniform which we can use to flip the image. When the application uploads the source code for a vertex shader we now replace any occurrences of the token 'main' with '_c31' and this renamed function gets called from the replacement main function. The token has a weird name so that it will be unlikely to conflict with a variable name in the application's source but it also needs to have the same number of characters as the original token so that it won't affect column numbers in the error reporting. We are also wrapping glGetShaderSource so that we can try to revert the token name. The same goes for the error logs just in case the error report mentions function names. Both places that cause drawing to occur (glDrawElements and glDrawArrays) are now also wrapped so that we can update the uniform value whenever the program is used with a different type of framebuffer from last time. We additionally need to manually track the state for the viewport, the stencil box and the front face because all of these will be affected by whether we are flipping the image or not. Any attempts to change these states will be queued and instead flushed at the last minute before drawing. There are still some known issues with this patch: • glCopyTexImage2D and glCopyTexSubImage2D will do the wrong thing when copying data from a CoglOffscreen. This could be quite fiddly to solve. • Point sprites won't flip correctly. To make this work we would need to flip the gl_PointSprite builtin variable somehow. This is done in the fragment shader not the vertex shader so flipping the calculated gl_Position doesn't help here. • The patch doesn't attempt to flip rendering to framebuffers for textures created within the GLES2 context. This probably makes sense because those textures are likely to be used within the GLES2 context in which case we want to leave the texture coordinates as they are. However, if the texture is shared back out to Cogl with cogl_gles2_texture_2d_new_from_handle then the texture will be upside-down. • The application can discover our secret uniform that we added via glGetActiveUniform. It might be worth trying to disguise this by wrapping that function although that could be quite fiddly. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit d589bf19e51f22c3241b2a18db10f22131ac126a)
* Add a wrapper for 'memmem'Neil Roberts2012-08-143-0/+37
| | | | | | | | | | | | | | | memmem is a GNU libc extension that works like strstr except that the size of the needle and the haystack are passed into the function instead of using null-terminated strings. This patch adds a wrapper function called 'cogl_util_memmem' so that we can use this function. There is a configure check and if the function is not available then a fallback implementation will be used. Otherwise cogl_util_memmem is just defined to memmem. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 1dd1b0a67f6238e13f7f9253fb03addada0541b7)
* cogl-gles2-context: Keep some extra data for shaders and programsNeil Roberts2012-08-142-0/+327
| | | | | | | | | | | | | | | | | | | | | | | | All of the functions that create and destroy shaders are now wrapped in the CoglGLES2Context so that we can track some extra data for them. There are hash tables mapping object IDs to the corresponding data. The data is currently not used for anything but will be in later patches. The glUseProgram, glAttachShader and glDetachShader functions additionally need to be wrapped because GL does not delete shader objects that are in use. Therefore we need to have a reference count on the data so we can recognise when the last use has been removed. The IDs are assumed to be specific to an individual CoglGLES2Context. This is technically not the case because all of the CoglGLES2Contexts are in the same share list. However we don't really want this to be the case so currently we will assume sharing the object IDs between contexts is undefined behaviour. Eventually we may want to actually enforce this. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 05dc1e34785ae5f5484cd398ecc5464bd8bd3dcd)
* cogl-gles2-context: Fix the default viewport and scissor sizeNeil Roberts2012-08-142-0/+26
| | | | | | | | | | | | | In GL, the default viewport and scissor should be set to the size of the first surface that the context is bound to. If a CoglGLES2Context is first used with an offscreen framebuffer then this surface will actually be the dummy 1x1 window which will mess up the defaults. To fix that, this patch makes it just always override the viewport and scissor the first time the context is bound to something. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 02567b3e6b64e6849b9f7c6aa2137401be7ece8d)
* Assamese translation updatedNilamdyuti Goswami2012-08-141-112/+124
| | | | (cherry picked from commit b9c1d87ddd6d3038690cc2ce99f08418caf3238a)
* Updated Spanish translationDaniel Mustieles2012-08-141-16/+27
| | | | (cherry picked from commit d3b8a5ab38ec8e63b158472d1bc6aa7140369835)
* Updated Slovenian translationMatej Urbančič2012-08-141-2/+14
| | | | (cherry picked from commit 69b6f82065d6930ce2fee1503a4022cea3d14563)
* Updated Traditional Chinese translation(Hong Kong and Taiwan)Chao-Hsiung Liao2012-08-142-4/+28
| | | | (cherry picked from commit fb6d1e67a874f0d7ab12412de8d2f51655f6be8f)
* display: inc cogl-wayland-server.h if neededRobert Bragg2012-08-061-0/+3
| | | | | | | | | Since 0773107deb9ede the prototype for cogl_wayland_display_set_compositor_display() has moved into cogl-wayland-server.h but cogl-display.c wasn't updated to include this header. (cherry picked from commit f6ccff9992fcfb9497ce91dd299460362476ba7a)
* build: Remove clutter-project.org from the release rulesNeil Roberts2012-08-061-9/+2
| | | | | | | clutter-project.org is no longer accessible for uploading releases so this just removes all mention of it from the release rules. (cherry picked from commit 66c291a3a4e811bde7f022e756f93d0f224975c3)
* Move cogl_wayland_display_ proto to cogl-wayland-server.hRobert Bragg2012-08-062-20/+16
| | | | | | | | | | | | | | We need to avoid including wayland-server.h or wayland-client.h indirectly when including cogl.h because there are overlapping typedef names between the client and server wayland headers and we can't assume whether Cogl is being used client or server side. This moves the prototype for cogl_wayland_display_set_compositor_display() into cogl-wayland-server.h which Cogl apps must include explicitly if the want access to server side Cogl Wayland symbols. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 0773107deb9eded408e2801f217462c5d551f15a)
* Updated Serbian translationМирослав Николић2012-08-062-12/+38
| | | | (cherry picked from commit 5c5c577d44317e472c51aac2409df161bc4c63f4)
* Fix the header guards for cogl-texture-2d{,-private}.hNeil Roberts2012-08-062-6/+6
| | | | | | | | | | | The header guard for cogl-texture-2d-private.h was __COGL_TEXTURE_2D_H. This would conflict with the header guard for cogl-texture-2d.h except there a small typo ('TEXURE') so that it was subtly different. This fixes them both to make more sense. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 222ec4d009973cb62020a9da05f72dea41460b33)
* cogl-winsys-sdl: Fix the signature for the get_proc_address methodNeil Roberts2012-08-061-1/+2
| | | | | | | | | | This function should take an extra third paramter to specify whether the procedure is in core or not. The parameter is not used so this patch just fixes an annoying warning. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit eed4ac80cd8c3fa1859493c9bb00547038be6095)
* cogl-winsys-egl-kms: Remove some unused variablesNeil Roberts2012-08-061-2/+0
| | | | | | | | This just gets rid of some annoying warnings. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit 3d0aea04d1f6a8094b749e20a59d8a9a95a6235e)
* cogl-texture-2d-private: Include egl-defines.hNeil Roberts2012-08-061-0/+4
| | | | | | | | | | | | | The cogl-texture-2d-private.h header checks for the presence of EGL_KHR_image_base before declaring _cogl_egl_texture_2d_new_from_image. This define will only be available if the EGL headers are included so we should make sure that happens. This was resulting in a warning complaining that the function was not previously declared. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit bd4840d7858efcf30eb5cf5d6fd0d39bdd59d1c1)
* Add conf vars to trick Cogl to think extensions are disabledNeil Roberts2012-08-069-24/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds two new configuration environment variables: COGL_DISABLE_GL_EXTENSIONS and COGL_OVERRIDE_GL_VERSION The variables can also be set in the cogl.conf file using the same names. The first one is a list of GL extension names separated by commas. When set Cogl will assume any extension listed here is not available by removing it from the string returned from glGetString(GL_EXTENSIONS). If the string is set in both the config file and the environment variable then the union of the two lists will be used. The second overrides the value returned from glGetString(GL_VERSION). If the string is set in both places the version from the environment variable will take priority. These are sometimes useful for debugging Cogl to test the various combinations of extensions. It could also be useful to work around driver bugs where an extension is badly supported and it would be better not to use it. The variables in cogl-config that just set a global char * variable have been put together in an array instead of having a separate blob of code for each one in order to make it simpler to add new variables. Reviewed-by: Robert Bragg <robert@linux.intel.com> (cherry picked from commit ec69c2dc576c78664e0b73879365cb7414ecf441)
* egl-x11: Don't use GLXDrawable on EGLDamien Lespiau2012-08-061-1/+1
| | | | | | | | | | | | Someone trying to compile cogl (ThijsNL on irc0 for the Rasberry Pi stumbled into that one. GLXDrawable may not be defined in a pure EGL/X environment. Change it to Window, the type used for XConfigureEvent.window. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit f05d6923fff28b1d167a391d486e319743c49215)