Merge lp://qastaging/~linaro-graphics-wg/compiz-core/linaro-gles2 into lp://qastaging/compiz-core/0.9.5
Status: | Superseded | ||||||||
---|---|---|---|---|---|---|---|---|---|
Proposed branch: | lp://qastaging/~linaro-graphics-wg/compiz-core/linaro-gles2 | ||||||||
Merge into: | lp://qastaging/compiz-core/0.9.5 | ||||||||
Diff against target: |
41667 lines (+29201/-5352) (has conflicts) 161 files modified
CMakeLists.txt (+26/-0) VERSION (+4/-0) cmake/CMakeLists.txt (+2/-0) cmake/CompizCommon.cmake (+67/-0) cmake/CompizGSettings.cmake (+76/-0) cmake/CompizPlugin.cmake (+14/-10) cmake/FindOpenGLES2.cmake (+51/-0) cmake/base.cmake (+3/-1) cmake/plugin_extensions/CompizGenGSettings.cmake (+0/-104) cmake/plugin_extensions/CompizOpenGLFixups.cmake (+22/-0) gtk/CMakeLists.txt (+1/-1) gtk/config.h.gtk.in (+0/-25) gtk/gnome/CMakeLists.txt (+74/-0) gtk/gnome/compiz.desktop.in (+1/-1) gtk/window-decorator/actionmenu.c (+0/-133) gtk/window-decorator/blurprops.c (+0/-89) gtk/window-decorator/cairo.c (+915/-0) gtk/window-decorator/decorator.c (+1301/-0) gtk/window-decorator/decorprops.c (+161/-0) gtk/window-decorator/events.c (+1177/-0) gtk/window-decorator/forcequit.c (+0/-201) gtk/window-decorator/frames.c (+316/-0) gtk/window-decorator/gdk.c (+0/-106) gtk/window-decorator/gtk-window-decorator.c (+453/-0) gtk/window-decorator/gtk-window-decorator.h (+1140/-0) gtk/window-decorator/gwd.schemas.in (+81/-0) gtk/window-decorator/metacity.c (+1634/-0) gtk/window-decorator/settings.c (+546/-0) gtk/window-decorator/style.c (+0/-66) gtk/window-decorator/switcher.c (+512/-0) gtk/window-decorator/util.c (+0/-299) gtk/window-decorator/wnck.c (+709/-0) include/core/core.h (+4/-0) include/core/rect.h.OTHER (+229/-0) include/core/screen.h (+3/-1) include/core/window.h (+28/-1) include/decoration.h (+50/-59) kde/window-decorator-kde4/decorator.cpp (+6/-17) kde/window-decorator-kde4/decorator.h (+2/-19) kde/window-decorator-kde4/switcher.cpp (+5/-10) kde/window-decorator-kde4/utils.cpp (+2/-0) kde/window-decorator-kde4/window.cpp (+14/-110) kde/window-decorator-kde4/window.h (+1/-1) libdecoration/decoration.c (+88/-112) metadata/core.xml.in (+3/-3) plugins/annotate/src/annotate.cpp (+160/-86) plugins/bailer/CMakeLists.txt (+5/-0) plugins/bailer/bailer.xml.in (+82/-0) plugins/bailer/src/bailer.cpp (+277/-0) plugins/bailer/src/bailer.h (+86/-0) plugins/blur/CMakeLists.txt (+12/-12) plugins/clone/src/clone.cpp (+4/-9) plugins/compiztoolbox/include/compiztoolbox/compiztoolbox.h (+1/-1) plugins/compiztoolbox/src/compiztoolbox.cpp (+14/-28) plugins/composite/include/composite/composite.h (+26/-13) plugins/composite/src/privates.h (+12/-0) plugins/composite/src/screen.cpp (+77/-0) plugins/copytex/src/copytex.cpp (+9/-0) plugins/cube/CMakeLists.txt (+1/-1) plugins/cube/cube.xml.in (+7/-6) plugins/cube/src/cube.cpp (+40/-39) plugins/debugspew/CMakeLists.txt (+5/-0) plugins/debugspew/debugspew.xml.in (+24/-0) plugins/debugspew/src/debugspew.cpp (+622/-0) plugins/debugspew/src/debugspew.h (+55/-0) plugins/decor/decor.xml.in (+38/-0) plugins/decor/src/decor.cpp (+338/-885) plugins/decor/src/decor.h (+14/-36) plugins/detection/CMakeLists.txt (+5/-0) plugins/detection/detection.xml.in (+28/-0) plugins/detection/src/detection.cpp (+74/-0) plugins/detection/src/detection.h (+52/-0) plugins/fade/fade.xml.in (+2/-1) plugins/imgsvg/src/imgsvg.cpp (+12/-9) plugins/imgsvg/src/imgsvg.h (+2/-1) plugins/kde/src/dispatcher.cpp (+18/-18) plugins/kde/src/dispatcher.h (+8/-8) plugins/kde/src/socket.cpp (+1/-1) plugins/kde/src/timer.cpp (+1/-1) plugins/move/src/move.cpp (+41/-0) plugins/move/src/move.h (+7/-1) plugins/obs/src/obs.cpp (+10/-9) plugins/obs/src/obs.h (+1/-1) plugins/opengl/CMakeLists.txt (+9/-4) plugins/opengl/compiz-opengl.pc.in (+2/-2) plugins/opengl/include/opengl/framebufferobject.h (+107/-0) plugins/opengl/include/opengl/matrix.h (+2/-0) plugins/opengl/include/opengl/opengl.h (+275/-65) plugins/opengl/include/opengl/program.h (+75/-0) plugins/opengl/include/opengl/programcache.h (+51/-0) plugins/opengl/include/opengl/texture.h (+9/-0) plugins/opengl/include/opengl/vector.h (+1/-1) plugins/opengl/include/opengl/vertexbuffer.h (+100/-0) plugins/opengl/opengl.xml.in (+1/-1) plugins/opengl/src/framebufferobject.cpp (+191/-0) plugins/opengl/src/matrix.cpp (+54/-0) plugins/opengl/src/paint.cpp (+446/-360) plugins/opengl/src/privatefragment.h (+0/-54) plugins/opengl/src/privates.h (+41/-9) plugins/opengl/src/privatetexture.h (+37/-0) plugins/opengl/src/privatevertexbuffer.h (+136/-0) plugins/opengl/src/program.cpp (+262/-0) plugins/opengl/src/programcache.cpp (+175/-0) plugins/opengl/src/screen.cpp (+813/-69) plugins/opengl/src/shaders.h (+136/-0) plugins/opengl/src/texture.cpp (+137/-12) plugins/opengl/src/vertexbuffer.cpp (+530/-0) plugins/opengl/src/window.cpp (+44/-84) plugins/place/place.xml.in (+5/-0) plugins/place/src/place.h (+15/-2) plugins/resize/resize.xml.in (+8/-8) plugins/resize/src/resize.cpp (+95/-40) plugins/rotate/CMakeLists.txt (+1/-1) plugins/rotate/src/rotate.cpp (+21/-21) plugins/scale/scale.xml.in (+8/-10) plugins/scale/src/privates.h (+4/-0) plugins/scale/src/scale.cpp (+39/-24) plugins/screenshot/src/screenshot.cpp (+52/-25) plugins/switcher/src/switcher.cpp (+49/-48) plugins/water/CMakeLists.txt (+1/-1) plugins/water/src/shaders.h (+201/-0) plugins/water/src/water.cpp (+265/-803) plugins/water/src/water.h (+37/-67) plugins/water/water.xml.in (+24/-0) plugins/wobbly/CMakeLists.txt (+1/-1) plugins/zoom/src/zoom.cpp.OTHER (+764/-0) src/CMakeLists.txt (+36/-0) src/event.cpp (+62/-0) src/main.cpp (+67/-1) src/plugin.cpp (+1/-3) src/privatescreen.h (+83/-1) src/screen.cpp (+212/-64) src/stackdebugger.cpp (+985/-491) src/window.cpp (+873/-104) unity/unity_window_decorator/AUTHORS (+29/-0) unity/unity_window_decorator/CMakeLists.txt (+38/-0) unity/unity_window_decorator/COPYING (+6/-0) unity/unity_window_decorator/COPYING.GPL (+340/-0) unity/unity_window_decorator/INSTALL (+14/-0) unity/unity_window_decorator/README (+8/-0) unity/unity_window_decorator/src/CMakeLists.txt (+161/-0) unity/unity_window_decorator/src/TODO (+6/-0) unity/unity_window_decorator/src/actionmenu.c (+109/-0) unity/unity_window_decorator/src/blurprops.c (+68/-0) unity/unity_window_decorator/src/cairo.c (+1001/-0) unity/unity_window_decorator/src/config.h.gtk.in (+25/-0) unity/unity_window_decorator/src/decorator.c (+874/-0) unity/unity_window_decorator/src/decorprops.c (+150/-0) unity/unity_window_decorator/src/events.c (+1146/-0) unity/unity_window_decorator/src/forcequit.c (+176/-0) unity/unity_window_decorator/src/gdk.c (+87/-0) unity/unity_window_decorator/src/gtk-window-decorator.c (+442/-0) unity/unity_window_decorator/src/gtk-window-decorator.h (+1009/-0) unity/unity_window_decorator/src/gwd.schemas.in (+81/-0) unity/unity_window_decorator/src/metacity.c (+1943/-0) unity/unity_window_decorator/src/settings.c (+567/-0) unity/unity_window_decorator/src/style.c (+42/-0) unity/unity_window_decorator/src/switcher.c (+452/-0) unity/unity_window_decorator/src/util.c (+278/-0) unity/unity_window_decorator/src/wnck.c (+714/-0) xslt/compiz_gsettings_schemas.xslt.in (+0/-441) Text conflict in CMakeLists.txt Text conflict in VERSION Text conflict in cmake/CompizCommon.cmake Contents conflict in cmake/CompizGSettings.cmake Text conflict in gtk/gnome/CMakeLists.txt Contents conflict in gtk/window-decorator/cairo.c Contents conflict in gtk/window-decorator/decorator.c Contents conflict in gtk/window-decorator/decorprops.c Contents conflict in gtk/window-decorator/events.c Contents conflict in gtk/window-decorator/frames.c Contents conflict in gtk/window-decorator/gtk-window-decorator.c Contents conflict in gtk/window-decorator/gtk-window-decorator.h Contents conflict in gtk/window-decorator/gwd.schemas.in Contents conflict in gtk/window-decorator/metacity.c Contents conflict in gtk/window-decorator/settings.c Contents conflict in gtk/window-decorator/switcher.c Contents conflict in gtk/window-decorator/wnck.c Text conflict in include/core/core.h Contents conflict in include/core/rect.h Text conflict in include/core/window.h Text conflict in libdecoration/decoration.c Text conflict in plugins/composite/include/composite/composite.h Text conflict in plugins/composite/src/privates.h Text conflict in plugins/composite/src/screen.cpp Text conflict in plugins/cube/src/cube.cpp Text conflict in plugins/decor/decor.xml.in Text conflict in plugins/decor/src/decor.cpp Text conflict in plugins/decor/src/decor.h Text conflict in plugins/move/src/move.cpp Contents conflict in plugins/opengl/include/opengl/fragment.h Text conflict in plugins/opengl/include/opengl/opengl.h Text conflict in plugins/opengl/include/opengl/texture.h Contents conflict in plugins/opengl/src/fragment.cpp Text conflict in plugins/opengl/src/paint.cpp Text conflict in plugins/opengl/src/privates.h Text conflict in plugins/opengl/src/privatetexture.h Text conflict in plugins/opengl/src/screen.cpp Text conflict in plugins/place/place.xml.in Text conflict in plugins/place/src/place.h Text conflict in plugins/scale/src/privates.h Text conflict in plugins/scale/src/scale.cpp Conflict adding files to plugins/zoom. Created directory. Conflict because plugins/zoom is not versioned, but has versioned children. Versioned directory. Conflict adding files to plugins/zoom/src. Created directory. Conflict because plugins/zoom/src is not versioned, but has versioned children. Versioned directory. Contents conflict in plugins/zoom/src/zoom.cpp Text conflict in src/CMakeLists.txt Text conflict in src/event.cpp Text conflict in src/main.cpp Text conflict in src/privatescreen.h Text conflict in src/screen.cpp Text conflict in src/stackdebugger.cpp Text conflict in src/window.cpp |
||||||||
To merge this branch: | bzr merge lp://qastaging/~linaro-graphics-wg/compiz-core/linaro-gles2 | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Sam Spilsbury | Pending | ||
Review via email: mp+89765@code.qastaging.launchpad.net |
This proposal supersedes a proposal from 2011-08-10.
This proposal has been superseded by a proposal from 2012-02-21.
Description of the change
This branch contains the code to make compiz work on GLES. This includes several changes to the compiz API.
* GLVertexBuffer class added for managing vertices, normals, texture coordinates, and colors
* GLProgram class added for managing GLSL programs
* GLProgramCache class added for managing per-plugin GLSL programs efficiently, uses an LRU cache
to avoid recompiling recently used GLSL programs all the time
* GLFragment class removed as fragment programs are no longer used (replaced with GLSL programs)
* GL_BLEND now always enabled when rendering as almost everything was enabling it anyway
* EGL context setup added
* EglTexture class added to use EGL_image extension instead of GLX_EXT_
Things left to do for a complete port:
* properly check for GLSL support on desktop, currently assumes if you have VBO support you
have GLSL support
* port blur, wobbly, rotate, cube, and water plugins
* wobbly, cube, and rotate should be fairly straightforward, water and blur need updated to
use GLSL instead of fragment programs
Unmerged revisions
- 2922. By Alexandros Frantzis
-
Sync with lp:compiz-core.
- 2921. By Alexandros Frantzis
-
Sync with lp:compiz-core.
- 2920. By Alexandros Frantzis
-
opengl: For OpenGL ES 2.0 ensure that format equals internalFormat when uploading texture data.
In OpenGL ES 2.0 no format conversion is allowed, i.e., format must equal internalFormat.
- 2919. By Alexandros Frantzis
-
Fix compilation with desktop GL.
- 2918. By Alexandros Frantzis
-
opengl: Disable blending by default when drawing the screen.
Each operation/plugin should enable it (and reset it) as needed
(as most operations are currently doing). - 2917. By Alexandros Frantzis
-
Sync with lp:compiz-core.
- 2916. By Alexandros Frantzis
-
opengl: Refactor shader infrastructure to use small, performant programs.
This commit replaces the single complicated shader with minimal,
performant shaders, tailored to specific use cases. The new GLShaderCache
object is used for creating and caching the shader data for specific uses
cases (GLShaderParameters). This commit also adds automatic creation of suitable GL programs in
GLVertexBuffers (see ::setAutoProgram) that don't have a program
explicitly set. - 2915. By Alexandros Frantzis
-
opengl: Ensure blending is enabled, when needed, when drawing window contents.
- 2914. By Alexandros Frantzis
-
Sync with lp:compiz-core.
- 2913. By Alexandros Frantzis
-
Sync with lp:compiz-core.
1682 + int render (const GLMatrix &modelview,
1683 + const GLWindowPaintAttrib &attrib);
1684 +
1685 + int render (const GLMatrix &projection,
1686 + const GLMatrix &modelview,
1687 + const GLWindowPaintAttrib &attrib);
Probably for the sake of API confusion, it might be worth swapping the order of projection and modelview in this case, so you have
1685 + int render (const GLMatrix &modelview,
1686 + const GLMatrix &projection,
1687 + const GLWindowPaintAttrib &attrib);
--
1586 + GLProgram* operator () (std::list< GLShaderData* >);
Can that take a const std::list <GLShaderData *> & ?
1116 +#if !defined(GL_BGRA) GL_BGRA_ EXT)
1117 + #if !defined(
1118 + #error GL_BGRA support is required
1119 + #else
1120 + #define GL_BGRA GL_BGRA_EXT
1121 + #endif
1122 +#endif
This can probably be detected in CMake by using try_compile () [1]
1703 - <default> true</default> false</ default>
1704 + <default>
Does this need to be off by default?
1678 + void setProgram (GLProgram *program);
1679 +
1680 + int render (const GLMatrix &modelview);
1681 +
1682 + int render (const GLMatrix &modelview,
1683 + const GLWindowPaintAttrib &attrib);
1684 +
1685 + int render (const GLMatrix &projection,
1686 + const GLMatrix &modelview,
1687 + const GLWindowPaintAttrib &attrib);
The semantics of this are odd. Is GLVertexBuffer meant to be a stateful object which holds on to the state of what its rendering? In that case, it might be more appropriate to have a:
void setProjection ();
void setModelView ();
void setAttrib ();
However, on another though, perhaps all of these arguments are redundant. If glPushMatrix, glLoadMatrixf and glPopMatrix are all parts of the deprecated API, and PrivateGLVertex Buffer: :render is really doing this:
+ GLfloat params[4] = {0, 0, 0, 0};
+ GLfloat attribs[3] = {1, 1, 1};
+ GLint index = 0;
+
+ program->setUniform ("projection", projection);
+ program->setUniform ("modelview", modelview);
+ //convert paint attribs to 0-1 range >setUniform3f ("paintAttrib", attribs[0], attribs[1], attribs[2]);
+ attribs[0] = attrib.opacity / 65535.0f;
+ attribs[1] = attrib.brightness / 65535.0f;
+ attribs[2] = attrib.saturation / 65535.0f;
+ program-
+
Then it might make more sense to have helper objects in the OpenGL plugin to handle that so that you don't need to pass matrices or paint attributes to the GLVertexBuffer at render time and we don't need to continue to expand the ::render () function argument list should we add more things to the core profile.
The helper object might just server to build a GLProgram with that stuff built in so that it can be passed directly to GLVertexBuffer at render time. Just a thought.
+ #ifdef USE_GLES SCREEN_ DAMAGE_ ALL_MASK)
+ Display *xdpy = screen->dpy ();
+
+ glFlush ();
+ if (mask & COMPOSITE_
+ {
+ eglSwapBuffers (eglGetDisplay (xdpy), surface);
+ }
+ else
+ {
+ #warning use proper extension for this
+ eglSwapBuffers (eglGetDisplay (xdpy), surface);
+ }
+ eglW...