Commit Graph

2569 Commits

Author SHA1 Message Date
Adam Jackson
f326401094 opengl: Fix conditional call of BlendFuncSeparate
Checking whether src_rgb != src_alpha twice is pointless; not checking
whether dst_rgb != dst_alpha is clearly wrong.

Found by Coverity.

Signed-off-by: Adam Jackson <ajax@redhat.com>

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

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit fc292c25db3004543e277d92693ab9cb388d2121)
2012-12-07 15:52:51 +00:00
Chun-wei Fan
491618a74c cogl-gles2-context: Cast func pointers to void* when filling
vtable

(Sorry, I had to re-apply Neil's patch as the original one somehow did
 not apply)

The function prototypes for the GL functions in CoglContext have the
GLAPIENTRY attribute which on Windows makes them use the stdcall
calling convention. The function pointers exposed from cogl-gles2.h
don't have GLAPIENTRY so they end up having a different calling
convention on Windows. When Cogl is compiled there it ends up giving a
lot of warnings because it assigns a pointer to an incompatible
function type.

We probably don't want to make the functions exposed in cogl-gles2.h
use the stdcall calling convention because we control that API so
there is no need to introduce a second calling convention. The GLES2
context support currently isn't going to work on Windows anyway
because there is no EGL or GLES2 implementation.

Eventually if we make the Cogl GLES2 context virtualized on top of
Cogl then we will provide our own implementations of all these
functions so we can easily keep the C calling convention even on
Windows.

Until then to avoid the warnings on Windows we can just cast the
function pointers temporarily to (void*) when filling in the vtable.

This will also fix the build on Windows using Visual Studio, as it is
more picky on calling convention mismatches.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-11-24 00:18:29 +08:00
Chun-wei Fan
fefa6bc929 cogl.symbols: Add symbols required for Clutter 1.12
Those symbols were missed and are needed for Clutter-1.12.x to build.

Reviewed-by: Robert Bragg <robert@linux.intel.com>
2012-11-24 00:01:40 +08:00
Neil Roberts
6a62e3077b sdl: Don't set SDL_GL_DOUBLEBUFFER when the swap chain has no pref
The ‘length’ for the swap chain is initially -1 which is supposed to
mean ‘no preference’. However, both of the SDL winsys's were
explicitly setting the SDL_GL_DOUBLEBUFFER attribute to zero in that
case which would try to disable double buffering.

On OS X, the equivalent to eglSwapBuffers (ie, [NSOpenGLContext
flushBuffer]) does nothing for a single buffer context. The
cogl-sdl-hello example does not specify the swap chain length so
presumably it would end up with a single buffer config. When
cogl_onscreen_swap_buffers is called it therefore does nothing and
nothing is painted.

I guess to make single-buffered contexts actually useful we should
expose some public equivalent to glFlush so that you can ensure the
rendering commands will actually hit the buffer. Alternatively we
could document that cogl_onscreen_swap_buffers performs this task on
single-buffered configs and then we could make the SDL winsys
explicitly call glFlush in that case.

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

(cherry picked from commit 71e57f99002d5dee79bbd44b3bc57712b99acb55)
2012-11-23 15:45:26 +00:00
Rob Bradford
0e33654efb wayland: Port to new Wayland protocol
Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit db50c3015c589375029a4c26c58db8295bb17bca)
2012-10-18 17:25:21 +01:00
Unticha Pramgoed
ad05cb37c6 Added Thai translation 2012-10-15 13:06:21 +07:00
Rafael Ferreira
cb274ad727 Updated Brazilian Portuguese Translation 2012-10-02 14:53:41 -03:00
Alexander Shopov
5cec3de8b2 Updated Bulgarian translation 2012-10-02 05:28:29 +03:00
Marek Černocký
d6e37fa714 Updated Czech translation 2012-10-01 20:30:12 +02:00
Neil Roberts
0edb848850 Use the right context when pushing the GLES2 context to an onscreen
Previously when pushing the GLES2 context with an onscreen framebuffer
it would just call bind_onscreen. This actually binds it with Cogl's
context so presumably the context isolation wasn't working properly.
This patch splits out bind_onscreen to have a second function called
bind_onscreen_with_context that explicitly takes the EGL context to
use. Cogl now uses this when pushing the GLES2 context.

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

(cherry picked from commit 3653c5b10058a3f79900eb2644cb30f4cf1ca47e)
2012-10-01 15:05:22 +01:00
Neil Roberts
5e730568d4 Remove an out of date comment in the GLES2 context code
There was a FIXME comment about making glCopyTex{Sub,}Image2D work
with CoglOffscreen buffers. This has already been fixed so we should
remove the comment.

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

(cherry picked from commit 750e5668ee64a315c8090dd2223334b1e04bee54)
2012-10-01 15:05:16 +01:00
Neil Roberts
07a50012b9 egl: Only allow GLES2 context creation for the GLES2 driver
Previously, Cogl was advertising the GLES2 context feature whenever
the EGL winsys was used, even if the winsys was used with the GL
driver. This wasn't working because when the GL context is created the
API is set to GL with eglBindAPI and it is never changed back to GLES
when the GLES2 context is created. That meant that the created context
is actually GL not GLES2. Any rendering would then fail because the GL
context does not understand the precision statement.

It could be possible to fix it so that it will set the API correctly
before creating the context. It would then also need to reset the API
and unbind the previous context whenever switching between GLES2 and
GL contexts. If the context isn't unbound first then eglMakeCurrent
will actually try to bind both contexts at the same time and at least
Mesa detects this situation and reports that the two contexts
conflict. Presumably we would also need to do something more clever
when we retrieve the function pointers for the GLES2 context.
Currently we just copy them from the CoglContext but if the context is
using the GL driver then this would mean the functions came from libGL
not libGLESv2.

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

(cherry picked from commit 624dea207cf76ae9ccd7f57c4ebd15d3bd65bff0)
2012-10-01 15:05:11 +01:00
Milo Casagrande
4a4d8153f8 [l10n] Updated Italian translation. 2012-09-29 18:02:19 +02:00
Neil Roberts
9563799655 Fix the terminator in one of the extension lists
The list of extension names in COGL_EXT_BEGIN should be a zero
separated list of strings which is terminated by an empty string. The
name for the GL_ARB_shader_objects extension was missing the zero
separator so presumably it was relying on the following byte to happen
to be a zero in order not to crash.

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

(cherry picked from commit f63381f23fa8b0b17e030561940b8a38efff221f)
2012-09-28 17:15:11 +01:00
Neil Roberts
f9e7f8df94 winsys-glx: Remove the vblank counter feature when indirect rendering
Previously when Cogl detects that the GLX context is indirect it
resets the function pointers for the VBLANK_COUNTER feature to NULL.
However it wasn't removing the VBLANK_COUNTER feature flag. Some other
parts of the winsys check for that feature flag rather than checking
whether the pointer is NULL so it would end up calling an invalid
function pointer and crashing. This just fixes it to also clear the
feature flag.

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

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

(cherry picked from commit e947c713a541086f80a308d22774229f0720196a)
2012-09-28 17:15:11 +01:00
Chun-wei Fan
cfdc1c95eb Clean up Visual C++ projects
Since commit 7253c5ca (Bug 682071-cogl/cogl-sdl.h: MSVC: Link to SDL when
apps are built), on Visual C++ we link to SDL.lib and SDLmain.lib using
a #pragma comment directive in cogl/cogl-sdl.h, so we no longer need
specific project configs for Cogl programs which build against a Cogl built
with SDL.  This removes those unneeded configs.

Also "install" cogl/cogl-sdl.h when Cogl is built with the SDL winsys, as
it is a needed header
2012-09-28 18:45:41 +08:00
Chun-wei Fan
c0e9d9235a Update Visual C++ projects
-Make "install" parts for VS9 and VS10 more consistent with each other
-Create the .def files in the respective intermediate/.obj folders, so that
 it is cleaner duringg the build
-Make up for missed files to "install"
2012-09-28 17:14:28 +08:00
Aurimas Černius
244ee67284 Updated Lithuanian translation 2012-09-27 22:06:21 +03:00
Мирослав Николић
3dd87cbf54 Updated Serbian translation 2012-09-27 05:45:39 +02:00
Ihar Hrachyshka
e2ad3cb86b Updated Belarusian translation. 2012-09-26 15:09:36 +03:00
Rūdolfs Mazurs
248182d3d1 Updated Latvian translation 2012-09-26 12:02:54 +03:00
Tom Tryfonidis
e3373e7cb3 Updated Greek translation 2012-09-26 11:21:43 +03:00
Andika Triwidada
30d3f1a7d3 Update French translation 2012-09-26 08:48:27 +02:00
Andika Triwidada
441e4cf8f6 Updated Indonesian translation 2012-09-26 09:00:39 +07:00
Robert Bragg
a8fa6c7c4d Post-release version bump to 1.12.1 2012-09-24 14:19:41 +01:00
Robert Bragg
fe198cf424 Merge branch 'cogl-1.12-release' into cogl-1.12 2012-09-24 14:08:22 +01:00
Robert Bragg
b1aafcc15f Release 1.12.0 (release) 2012-09-24 13:46:40 +01:00
Robert Bragg
d32bbaf0e0 Updates NEWS for the 1.12.0 release 2012-09-24 13:46:01 +01:00
Yuri Myasoedov
95ad4ce2ef Updated Russian translation
(cherry picked from commit c34e8bb0ca44c90d05753e6790727a462d7fd732)
2012-09-24 13:38:18 +01:00
Mario Blättermann
8a533157b7 [l10n] Updated German translation
(cherry picked from commit b9afd31baabf1e139f51e6042104ab0904e77488)
2012-09-24 13:38:09 +01:00
YunQiang Su
b6ffa02d2f Update zh_CN translation
(cherry picked from commit 7003bd0bf092ea38eab4491ecb56cb8db155190a)
2012-09-24 13:37:55 +01:00
Ani Peter
eb18e471ef Updated Malayalam file
(cherry picked from commit 9cdaf2e8e13c9b255343357e95038e1881578bf7)
2012-09-24 13:37:38 +01:00
Nishio Futoshi
6e9ae288e1 [l10n] Update Japanese translation
(cherry picked from commit 857f9d336ba1940211becfdd637dcfe08b52e079)
2012-09-24 13:37:28 +01:00
Dr.T.Vasudevan
59e6078454 updated Tamil translation
(cherry picked from commit af265ab5d2e2f2dab8294c549e872ef3b2fdf1d3)
2012-09-24 13:37:18 +01:00
Dr.T.Vasudevan
19fa0efb72 updated Tamil translation
(cherry picked from commit 1b7743f0c29981b4d91ca9faa16fa4543662c2a7)
2012-09-24 13:37:07 +01:00
Alexander Shopov
700e7df85d Updated Bulgarian translation
(cherry picked from commit 93d7defa7fbb1a9ccb56beef882699008b7b9d44)
2012-09-24 13:36:53 +01:00
Rajesh Ranjan
fc0c3c8be7 hindi update
(cherry picked from commit 38201324e9543fa4c4b613829b6c1199778f02d5)
2012-09-24 13:36:42 +01:00
Chun-wei Fan
7253c5ca29 Bug 682071-cogl/cogl-sdl.h: MSVC: Link to SDL when apps are built
Link to SDL.lib and SDLmain.lib if Cogl was built with the SDL winsys.

Recent changes to the SDL winsys introduced a direct dependency to
SDLmain.lib (and hence SDL.lib) when programs are built, causing linker
errors to appear when any programs using cogl (with the SDL winsys built
in) are built.

Since we cannot determine whether a Cogl build is built with the SDL winsys
at build time easily, we could use #pragma comment (lib, ...) whenever
cogl-sdl.h is included by cogl.h so that SDLmain.lib and SDL.lib is linked
into the resulting binary, so that the program can link and run correctly.

This does not add any external dependencies as the Cogl DLL already depends
on SDL.dll when it is built with the SDL winsys.

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

(cherry picked from commit 2921d2a4d9c79f1ca7530171e0dfa8c945607bc7)
2012-09-24 13:35:18 +01:00
Carles Ferrando
e3e53f2c70 [l10n]Updated Catalan (Valencian) translation
(cherry picked from commit 829e090deb5decbeb60519c26199a403ae8174b0)
2012-09-24 13:35:05 +01:00
Gil Forcada
192920e351 [l10n] Updated Catalan translation
(cherry picked from commit 1a39fb66c1531ef53c8a700fc85bde1fb97bc624)
2012-09-24 13:34:53 +01:00
Ask H. Larsen
ed32a052e7 Updated Danish translation
(cherry picked from commit bb5220dbd98517544d0ff8676061024fd8a361f3)
2012-09-24 13:34:42 +01:00
Chun-wei Fan
b743d95e21 Bug 682071-cogl/cogl-sdl.h: MSVC: Link to SDL when apps are built
Link to SDL.lib and SDLmain.lib if Cogl was built with the SDL winsys.

Recent changes to the SDL winsys introduced a direct dependency to
SDLmain.lib (and hence SDL.lib) when programs are built, causing linker
errors to appear when any programs using cogl (with the SDL winsys built
in) are built.

Since we cannot determine whether a Cogl build is built with the SDL winsys
at build time easily, we could use #pragma comment (lib, ...) whenever
cogl-sdl.h is included by cogl.h so that SDLmain.lib and SDL.lib is linked
into the resulting binary, so that the program can link and run correctly.

This does not add any external dependencies as the Cogl DLL already depends
on SDL.dll when it is built with the SDL winsys.
2012-09-19 15:33:47 +08:00
Robert Bragg
f904f2099a Post-release version bump to 1.11.7 2012-09-17 23:47:25 +01:00
Robert Bragg
3aa7bdaf49 Release 1.11.6 (snapshot) 2012-09-17 23:11:34 +01:00
Robert Bragg
7429fb8df7 Updates NEWS for the 1.11.6 release 2012-09-17 23:08:45 +01:00
Neil Roberts
1b3a7ac0ab gles2-context: Don't split the wrapper snippet into two
We don't need to split the wrapper snippet into two separate parts
because it should be ok to declare the flip uniform in the middle of
the shader as long as it is somewhere in the global scope. Therefore
we can just declare it right before the definition for the replacement
main function. This is important because we don't want to put anything
at the top of the application's shader in case it is using a
'#version' directive. In that case moving it to anything other than
the first line would break things.

This patch also adds a marker in a comment around the wrapper snippet
so that we can easily locate the snippet when glGetShaderSource is
called and remove it.

The wrapper for glGetAttachedShaders has been removed because there
are no longer any additional shaders attached to the program so we can
just let GL handle it directly.

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

(cherry picked from commit dbd92e24ae61dcbe7ef26f61c9117c5516a7fa87)
2012-09-17 23:06:21 +01:00
Robert Bragg
5f3768f086 gles2-context: only insert prelude + wrapper into strv once
In our wrapper for glShaderSource we special case when a vertex shader
is being specified so we can sneak in a wrapper for the main function to
potentially flip all rendering upside down for better integration with
Cogl.

Previously we were appending the wrapper to all the sub-strings passed
via the vector of strings to glShaderSource but we now grow the vector
instead and insert the prelude and wrapper strings into the beginning
and end of the vector respectively so we should only have one copy for a
single shader.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit d2904d518718e3fbf4441abe2c2bcfd63edfd64b)
2012-09-17 23:06:21 +01:00
Daniel Stone
a491789637 cogl-gles2-context: Append wrapper shader to user shaders
The SGX GLSL compiler refuses to accept shaders of the form:
    void foo();
    void bar() {
        foo();
    }
where foo is undefined at glShaderSource() time, left for definition at
link time.  To work around this, simply append the wrapper shader to
user shaders, rather than building a separate shader that's always
linked with user shaders.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 96f02c445f763ace088be71dc32b3374b2cdbab2)
2012-09-17 23:06:21 +01:00
Robert Bragg
50ba5fa130 gpu-info: Match latest Mesa strings
Mesa now reports a vendor string of "Mesa Project" instead of "VMWare,
Inc." and the software rasterizer renderer string is now "Software
Rasterizer". This update cogl-gpu-info.c to recognize these new strings.

Thanks to Alexander Larsson for the original patch.

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

(cherry picked from commit dfacbbd96f3fbadaffa4a76dfd71c47ece6ed6a3)
2012-09-17 23:06:20 +01:00
Robert Bragg
0f0ee4a909 texture: Add a context pointer to each texture
As part of our on-going goal to remove our dependence on a global Cogl
context this patch adds a pointer to the context to each CoglTexture
so that the various texture apis no longer need to use
_COGL_GET_CONTEXT.

Reviewed-by: Neil Roberts <neil@linux.intel.com>

(cherry picked from commit 83131072eea395f18ab0525ea2446f443a6033b1)
2012-09-17 23:06:20 +01:00