Meta tags:
description= FOSS diaries of a Collaboran by the name of Frederic Plourde;
Headings (most frequently used words):
the, of, compiz, port, to, gles2, project, unity, content, for, gecko, on, plugin, electrolysis, world, is, open, foss, diaries, collaboran, by, name, frederic, plourde, svvr2016, vr, tracking, audio, haptics, social, moving, forward, wayland, firefox, getting, rid, xlib, surfaces, importance, arm, architecture, references, sgx, stack, new, me, putting, everything, together, porting, water, supporting, desktop, depending, nux, running, as, another, cool, revealed, types, security, performance, stability, ui, responsiveness, my, tags,
Text of the page (most frequently used words):
the (243), and (123), that (60), for (58), compiz (42), this (41), #plugin (35), process (35), with (34), content (34), you (31), was (30), from (29), opengl (25), are (25), but (23), not (21), like (20), have (20), will (20), audio (20), all (19), more (18), very (17), unity (16), arm (16), really (16), just (16), firefox (15), when (15), can (15), most (15), about (15), water (14), mozilla (14), there (14), linux (14), nux (14), now (13), sgx (13), multi (13), which (13), using (13), layers (13), main (12), one (12), work (12), here (12), fbo (12), based (12), world (11), some (11), because (11), since (11), new (11), use (11), series (11), comment (10), desktop (10), devices (10), time (10), only (10), had (10), 2012 (10), look (10), see (10), surfaces (10), open (9), omap (9), electrolysis (9), chrome (9), user (9), around (9), into (9), its (9), those (9), leave (9), our (9), port (9), what (9), way (9), were (9), xlib (9), tracking (9), pandaboard (8), gles (8), experience (8), any (8), plugins (8), default (8), well (8), processes (8), good (8), their (8), omap4 (8), think (8), let (8), after (8), rendering (8), course (8), real (8), phones (8), skia (8), get (7), design (7), pvr (7), tagged (7), important (7), web (7), fact (7), also (7), may (7), project (7), been (7), task (7), cool (7), demo (7), platform (7), used (7), two (7), right (7), take (7), out (7), being (7), pretty (7), want (7), already (6), shaders (6), framebuffer (6), simply (6), browser (6), run (6), space (6), other (6), each (6), system (6), through (6), why (6), called (6), working (6), first (6), actually (6), rather (6), fun (6), lot (6), code (6), gles2 (6), rid (6), technologies (6), under (6), many (6), basically (6), make (6), got (6), etc (6), geometry (6), problem (6), long (6), image (6), contents (6), wayland (6), social (6), haptic (6), sound (6), generated (6), wobbly (5), unityshell (5), gpu (5), mobile (5), ipdl (5), collabora (5), texas (5), responsiveness (5), every (5), say (5), feel (5), single (5), own (5), thus (5), performance (5), they (5), moving (5), goal (5), currently (5), porting (5), example (5), running (5), find (5), start (5), objects (5), another (5), interesting (5), usage (5), still (5), thing (5), back (5), limited (5), video (5), level (5), than (5), how (5), htc (5), gtk3 (5), omtc (5), front (5), users (5), virtual (5), games (5), vive (5), your (5), name (4), blaze (4), glsl (4), cube (4), instruments (4), soc (4), could (4), whole (4), coming (4), software (4), going (4), types (4), must (4), show (4), uncategorized (4), org (4), did (4), made (4), videos (4), embedded (4), calls (4), brand (4), post (4), source (4), last (4), them (4), reference (4), int (4), comes (4), understand (4), applications (4), everything (4), same (4), high (4), game (4), computer (4), details (4), xrender (4), compositor (4), render (4), gecko (4), bug (4), term (4), reality (4), svvr2016 (4), room (4), yourself (4), talking (4), exhibitors (4), usually (4), stereo (4), binaural (4), 360 (4), started (3), site (3), wordpress (3), com (3), write (3), log (3), img (3), arb (3), associated (3), feedback (3), area (3), having (3), would (3), case (3), address (3), letting (3), cpu (3), market (3), systems (3), security (3), keep (3), untrusted (3), regular (3), considered (3), browsers (3), thread (3), google (3), people (3), interest (3), core (3), months (3), who (3), worked (3), implementation (3), originally (3), written (3), ubuntu (3), makes (3), components (3), manner (3), framebuffers (3), big (3), windowcompositor (3), external (3), fbo_object (3), lets (3), such (3), uses (3), unsafe (3), mean (3), fbos (3), problems (3), reasons (3), over (3), nice (3), per (3), heights (3), current (3), ones (3), factor (3), yet (3), rewrite (3), before (3), talk (3), too (3), much (3), always (3), check (3), article (3), kernel (3), ddx (3), low (3), ambient (3), quite (3), powerful (3), developing (3), samsung (3), year (3), processors (3), architecture (3), panda (3), someone (3), something (3), perf (3), side (3), layer (3), support (3), buffers (3), gfxxlibsurface (3), doing (3), compositing (3), x11 (3), force (3), quickly (3), issues (3), lots (3), turning (3), has (3), below (3), becoming (3), forward (3), david (3), play (3), away (3), even (3), believe (3), svvr (3), painting (3), his (3), rendered (3), enough (3), promising (3), application (3), haptics (3), tiny (3), day (3), where (3), dog (3), barking (3), interact (3), conference (3), website (2), required (2), comments (2), manage (2), view (2), sign (2), subscribed (2), subscribe (2), create (2), blog (2), tutorial (2), opengles (2), nokia (2), linkedin (2), ipc (2), fennec (2), build (2), aspect (2), especially (2), between (2), click (2), visual (2), stuff (2), related (2), surely (2), increase (2), crash (2), crashes (2), scripts (2), stability (2), should (2), near (2), processor (2), cores (2), nowadays (2), added (2), load (2), above (2), generally (2), potential (2), exploit (2), though (2), communicate (2), protocol (2), language (2), easily (2), caugth (2), error (2), detected (2), versions (2), three (2), starting (2), http (2), git (2), linaro (2), briefly (2), damage (2), community (2), branch (2), power (2), amazing (2), don (2), opengles1 (2), implementations (2), ported (2), instead (2), completely (2), eye (2), candy (2), wanted (2), showcased (2), window (2), manager (2), tackle (2), runs (2), capable (2), wrote (2), professional (2), weird (2), intensive (2), foolish (2), graceful (2), drawing (2), second (2), decision (2), canonical (2), 0000 (2), 175 (2), mode (2), then (2), param (2), fbo_geometry (2), unsigned (2), object (2), return (2), true (2), api (2), frame (2), different (2), trying (2), scheme (2), possible (2), ahead (2), change (2), share (2), part (2), natty (2), narwhal (2), supporting (2), action (2), shader (2), clearly (2), didn (2), drops (2), showcases (2), fragment (2), shading (2), devised (2), 256 (2), bump (2), normals (2), fragments (2), computed (2), along (2), end (2), unity3d (2), today (2), results (2), module (2), dkms (2), however (2), ppa (2), beginning (2), implementing (2), fixing (2), drivers (2), various (2), down (2), stack (2), fully (2), considering (2), often (2), jun (2), wikipedia (2), wiki (2), motorola (2), bit (2), extensively (2), consumer (2), personal (2), digital (2), players (2), hand (2), held (2), calculators (2), peripherals (2), hard (2), blah (2), galaxy (2), purpose (2), development (2), board (2), chip (2), quick (2), hardware (2), recently (2), saying (2), https (2), central (2), rev (2), complete (2), read (2), boost (2), gain (2), solution (2), server (2), buffering (2), noticed (2), basic (2), theme (2), happen (2), narrow (2), paths (2), plug (2), gtk (2), become (2), easy (2), creation (2), means (2), seemed (2), webkit (2), getting (2), bugs (2), off (2), lately (2), few (2), explain (2), aug (2), 2014 (2), actual (2), broken (2), days (2), little (2), difficult (2), years (2), things (2), probably (2), technology (2), vast (2), majority (2), gamers (2), immersive (2), workers (2), truly (2), 2016 (2), home (2), sense (2), textures (2), wand (2), gloves (2), tools (2), app (2), requiring (2), wands (2), tried (2), glove (2), natural (2), simulator (2), pushing (2), feeling (2), seems (2), far (2), ups (2), awesome (2), kickstarter (2), funded (2), omni (2), consists (2), nor (2), channels (2), touch (2), brought (2), number (2), sounds (2), headset (2), recording (2), microphones (2), human (2), ears (2), realism (2), does (2), releasing (2), left (2), try (2), former (2), latter (2), leap (2), camera (2), detection (2), solid (2), oculus (2), captured (2), life (2), kind (2), companies (2), foss (2), diaries (2), collaboran (2), frederic (2), plourde (2), email, loading, collapse, bar, subscriptions, reader, report, privacy, account, free, tech, n900, n810, dual, debug, debugging, tags, older, posts, browsing, defined, elapsed, panning, wants, manipulating, realtime, responsible, management, isolated, trusted, formerly, happened, caused, affect, tabs, browse, sites, normally, breakthrough, increased, self, contained, tested, rate, drop, seeing, likely, separation, greatly, general, suited, therefore, separately, feature, multiprocess, implement, sandboxing, accessing, resources, features, malicious, harm, tab, separate, leading, mentioned, advantages, threat, integrity, themselves, weak, entry, points, calling, functions, forged, string, arguments, gets, loaded, inter, communication, developed, attack, attempts, shutdown, toward, several, benefits, script, arch, old, idea, competitors, microsoft, released, concurrent, admit, increasing, decided, further, document, herein, revealed, feb, 2010, during, pleasure, travis, watkins, amaranth, rounds, whom, closely, mention, pekka, paalanen, contributions, paint, interested, pulling, compizgles, clone, fast, boxes, theses, socs, delivered, remember, legacy, ogl, conventional, glvertex, almost, vertexbuffer, glvertices, fixed, functionality, include, imagination, oct2011, till, mar2012, might, never, showing, while, highlights, minute, making, primitives, coordinate, declares, callbacks, knowed, glpaint, gldrawtexture, preparepaint, operations, done, filled, order, thought, landed, upstream, recent, merge, modified, file, 2011, public, set, draw, basewindow, restored, completes, parameter, invalid, index, void, setreferenceframebuffer, bind, bool, restorereferenceframebuffer, objectptr, iopenglframebufferobject, getwindowframebufferobject, m_framebufferobject, 561, 578, m_tooltipx, m_tooltipy, restore, reference_fbo_, reference_fbo_geometry_, buffer, allows, nesting, came, jay, taoko, wouldn, deal, stacking, common, carefully, unbinding, previous, owners, caller, nest, drawings, couldn, standalone, point, somewhat, compatible, depending, challenges, elements, posed, peculiar, displays, gui, widgets, toolkit, knew, extensive, depended, ouch, interference, promised, bring, mainly, seemlessly, appeared, final, version, original, rewritting, liberating, know, practical, pop, minutes, excitment, demoing, purposes, capabilities, clever, square, resolution, aren, colors, component, binding, calculating, proceed, calculates, acceleration, comparing, output, newly, next, tackled, rest, following, plateform, harmonize, partial, scale, parrt, learn, metacity, internals, tons, led, putting, together, package, libs, call, sgxlib, closed, download, binary, blob, trom, libegl1, libgles1, libgles2, libopenvg, omap4_xxx, packages, release, april, nicely, hack, levels, drm, shows, powervr, device, cell, particles, occlusion, maps, lighting, custom, 540, es2, spec, driver, instrument, pandaboards, engineers, designers, smart, multicore, cost, value, complex, polygon, scenes, retrieved, june, references, beagleboard, pandabord, isn, panasonic, blackberry, smartphones, chips, story, 2005, billion, sold, least, 2009, accounted, approximately, risc, electronics, including, assistants, pdas, tablets, media, music, consoles, drives, routers, widespread, others, nintendo, 3ds, gameboy, advance, nexus, apple, ipods, iphones, ipads, develop, bottom, line, integrates, either, omap4430, omap4460, apart, platforms, imagine, list, small, irc, channel, reading, questioning, relevancy, importance, jul, cheers, 6e532c9826e7, a500c62330d4, checked, solve, patches, effort, decisions, resulting, numbers, please, corresponding, bugzilla, ticket, satisfying, tp5o_shutdown_paint, cart, tresize, tscrollx, tcanvasmark, backends, targetted, frequent, intuitive, subclass, basiccompositor, x11basiccompositor, specialized, datatexturesource, x11datatexturesourcebasic, upcoming, update, alive, texturesource, lifetime, unless, surface, changes, size, format, upfront, implemented, properly, managing, saw, streamlining, glitch, gtk2, choice, efforts, alone, integral, cairo, type, cairo_surface_t, detail, naively, gives, rise, regressions, sub, optimal, taken, copy, passing, across, boundaries, unnecessary, copying, fix, pulled, implicitly, replace, memory, composite, gfx, framework, gfxplatformgtk, createoffscreensurfaces, gfximagesurfaces, gfximagesurface, attention, accelerate, ran, interoperability, texture_from_pixmap, extension, assumed, insurmountable, initial, analysis, quote, roc, fallbacks, crappy, servers, pixmap, certain, setups, particular, sensitive, quality, opera, 496204, rig, detailed, explanation, considerations, pertaining, page, integrated, wider, enable, glimpse, initially, writing, enabled, failing, reftests, stable, moment, needed, choose, grandfathered, mtc, path, dropped, dream, 722012, 740200, 1038800, enabling, past, helped, primary, keeping, goals, thereafter, give, ago, simple, proof, concept, stripping, moz_x11, ifdefs, bunch, hacks, couple, weston, official, dependencies, keyboard, input, decorations, suffered, screenshot, lookout, opportunities, involving, short, display, popular, lightweight, versatile, designed, replacement, ports, exciting, journey, predict, cover, parameters, augmented, these, magicleap, takes, mass, someday, soon, heard, paraphrased, baszucki, titled, future, essence, appropriation, acknowledge, rely, connect, suddenly, daily, tasks, productivity, put, glasses, relatives, thousands, miles, sitting, referred, matter, consider, successful, discovered, focused, telepresence, controller, collaborate, guy, hooked, apartment, france, 9850, presence, perfect, collaboration, mimesys, outdated, relies, brush, remote, surgery, medical, scalpel, multiplied, fit, actuators, gyros, once, joystick, cad, swear, hitting, tool, stunning, mostly, picture, rain, falling, fingers, flight, buttons, stuck, button, pushes, able, spatial, resolutions, involved, available, neurodigital, virtuix, hands, gloveone, domain, perceive, aural, special, diversity, found, feed, missing, air, flows, respiration, noise, cancellation, capability, ability, suppress, pitched, outside, guess, factors, recorded, cheap, promises, conversion, algorithm, technique, records, located, diaphragm, structures, resembling, bounced, routed, reaching, striking, magnified, ear, structure, direct, impact, spectrum, techniques, modeling, field, reflected, models, tiled, metal, shed, differently, wooden, chalet, brain, pick, guys, nvidia, vrworks, physically, acoustic, engine, hear, proper, localization, obviously, appearing, impression, hovercraft, approaching, fortunately, engines, correctly, anywhere, discrimination, 3dception, specialization, absolute, minimum, opinion, coherent, spatially, twobigears, increasingly, crucial, flow, adds, agreed, localised, add, visuals, centric, pan, rotating, head, showcasing, body, suit, tactile, transducers, vibrotactile, membranes, review, specific, discuss, aspects, domains, unfortunately, subpac, ossic, talks, motion, cto, holz, orion, impressive, algos, latency, watch, looked, personally, lighthouse, towers, placed, track, larger, close, times, constant, literally, walk, without, losing, competition, poorly, cv1, movement, angle, lost, faced, disappointing, zig, zag, dodge, innervision, baobab, studios, sculptvr, middlevr, cubicle, ninjas, facade, sports, koncept, production, projected, commonly, spherical, projections, processing, stitching, filtering, said, both, immersively, played, replayed, online, television, except, watchers, refer, thinking, worlds, wander, great, info, tiltbrush, artificially, realize, manufacturers, building, infrastructure, speak, comfortably, usable, move, standards, sure, creating, live, events, realms, deployment, possibilities, developer, elaborate, creators, targeting, built, virtually, family, headsets, playstation, gearvr, generic, d3d, mac, fortunate, attend, largest, event, silicon, valley, 100, exhibit, floor, welcomed, 1400, professionals, enthusiasts, enthusiast, myself, attended, full, met, summarize, thoughts, learned, grouped, themes, exhaustive, opinions,
Text of the page (random words):
gecko getting rid of xlib surfaces over the past few months working at collabora i have helped mozilla get rid of xlib surfaces for content on linux platform this task was the primary problem keeping mozilla from turning opengl layers on by default on linux which is one of their long term goals i ll briefly explain this long term goal and will thereafter give details about how i got rid of xlib surfaces long term goal enabling skia layers by default on linux my work integrated into a wider long term goal that mozilla currently has to enable skia layers by default on linux bug 1038800 and for a glimpse into how mozilla initially made skia layers work on linux see bug 740200 at the time of writing this article skia layers are still not enabled by default because there are some open bugs about failing skia reftests and omtc off main thread compositing not being fully stable on linux at the moment bug 722012 why is omtc needed to get skia layers on by default on linux simply because by design users that choose opengl layers are being grandfathered omtc on linux and since the mtc main thread compositing path has been dropped lately we must tackle the omtc bugs before we can dream about turning skia layers on by default on linux for a more detailed explanation of issues and design considerations pertaining turning skia layers on by default on linux see this wiki page my task getting rig of xlib surfaces for content xlib surfaces for content rendering have been used extensively for a long time now but when opengl got attention as a means to accelerate layers we quickly ran into interoperability issues between xrender and texture_from_pixmap opengl extension issues that were assumed insurmountable after initial analysis also and i quote roc here we had lots of problems with x fallbacks crappy x servers pixmap usage weird performance problems in certain setups etc in particular we seemed to be more sensitive to xrender implementation quality that say opera or webkit gtk bug 496204 so for all those reasons someone had to get rid of xlib surfaces and that someone was me the problem so problem was to get rid of xlib surfaces gfxxlibsurface for content under linux gtk platform and implicitly of course replace them with image surfaces gfximagesurface so they become regular memory buffers in which we can render with gl gles and from which we can composite using gpu now it s pretty easy to force creation of image surfaces instead of xlib ones for just all content layers in gecko gfx layers framework just force gfxplatformgtk createoffscreensurfaces to create gfximagesurfaces in any case problem is naively doing so gives rise to a series of perf regressions and sub optimal paths being taken for example to copy image buffers around when passing them across process boundaries or unnecessary copying when compositing under x11 with xrender support so the real work was to fix everything after having pulled the gfxxlibsurface plug the solution first glitch on the way was that gtk2 theme rendering per design had to happen on xlib surfaces we didn t have much choice as to narrow down our efforts to the gtk3 branch alone what s nice with gtk3 on that front is that it makes integral use of cairo thus letting theme rendering happen on any type of cairo_surface_t for more detail on that decision read this upfront we noticed that the already implemented gl compositor was properly managing and buffering image layer contents which is a good thing but on the way we saw that the basic compositor did not so we started streamlining basic compositor under omtc for gtk3 the core of the solution here was about implementing server side buffering of layer contents that were using image backends since targetted platform was linux gtk3 and since xrender support is rather frequent the most intuitive thing to do was to subclass basiccompositor into a new x11basiccompositor and make it use a new specialized datatexturesource that we called x11datatexturesourcebasic that basically buffers upcoming layer content in update to an gfxxlibsurface that we keep alive for the texturesource lifetime unless surface changes size and or format performance results were satisfying for 64 bit systems we had around 75 boost in tp5o_shutdown_paint 6 perf gain for cart 14 for tresize 33 for tscrollx and 12 perf gain on tcanvasmark for complete details about this effort design decisions and resulting performance numbers please read the corresponding bugzilla ticket to see the code that we checked in to solve this look at those 2 patches https hg mozilla org mozilla central rev a500c62330d4 https hg mozilla org mozilla central rev 6e532c9826e7 cheers jul 12 2012 leave a comment arm the importance of the arm architecture recently in a compiz related irc channel i was reading someone questioning the relevancy of omap platform development basically he was saying something like i still don t understand what the main purpose of the panda board is just a very small hardware with desktop power or all about soc or what well the main purpose is to develop for arm devices that s the bottom line see the pandaboard is a development board that integrates the texas instruments omap4 system on a chip soc and this omap4 chip either omap4430 or omap4460 if you re using panda or panda es of course is arm based apart from ti s omap platforms you can t imagine how many devices out there are using the arm architecture here a quick list of devices using arm processors apple ipods iphones and ipads google galaxy nexus phones htc one series phones samsung galaxy s series phones nokia s n series phones motorola phones lg phones blah blah gameboy advance nintendo ds 3ds calculators peripherals and many others so you see just how widespread arm architecture is in 2005 about 98 of the more than one billion mobile phones sold each year used at least one arm processor as of 2009 arm processors accounted for approximately 90 of all embedded 32 bit risc processors and were used extensively in consumer electronics including personal digital assistants pdas tablets mobile phones digital media and music players hand held game consoles calculators and computer peripherals such as hard drives and routers 1 now developing on the beagleboard pandabord or blaze really isn t just about developing for arm devices it s about developing for omap devices still there are a lot of motorola panasonic lg blackberry and samsung smartphones out there based on omap chips but that s another story references arm in wikipedia retrieved june 26 2012 from http en wikipedia org wiki arm tagged arm omap texas instruments soc jun 07 2012 leave a comment sgx the sgx stack a new project for me when considering x ddx driver implementation on an arm platform texas instrument s blaze and pandaboards are quite often considered by engineers and designers because of their smart multicore design low cost value and of course powerful sgx gpu devices which make real time rendering of complex high polygon scenes possible take a look at this user demo which basically shows everything the powervr sgx device is capable of rendering from cell shading and particles systems all the way to ambient occlusion bump maps and image based lighting with custom shaders currently the sgx 540 is fully supporting the opengl es2 0 spec so since beginning of april 2012 i m working on implementing fixing our ddx drivers to work nicely with our pvr sgx on the pandaboard es this lets me hack at code at various levels down the stack high level ddx drivers and low level drm kernel code and pvr kernel module currently only the pvr kernel module dkms is open source you can get the code from our ti omap release ppa pvr omap4 dkms package however all the user libs that is the opengl vg implementations what we call the sgxlib written by img are closed source you can download the binary blob trom the same ppa libegl1 sgx omap4 libgles1 sgx omap4 libgles2 sgx omap4 libopenvg sgx omap4 and pvr omap4_xxx packages that s it for now tagged sgx pvr img gpu opengl blaze pandaboard may 30 2012 leave a comment compiz compiz port to gles2 putting everything together hi here s the last article of the compiz port to gles2 series this project was really tons of fun it led me to learn compiz and metacity internals rewrite parrt of the opengl plugin port many cool compiz plugins water wobbly cube scale etc rewrite compiz opengl plugin s partial damage rendering harmonize nux compiz framebuffer usage and all of this working on the really cool pandaboard plateform so today i just wanted to show you the results check the following two videos 1 this video showcases unity3d with wobbly water and other plugins 2 at the end of this video we see the rest of the demo i devised the cube plugin tagged compiz cube opengl pandaboard plugin water wobbly may 30 2012 leave a comment compiz compiz port to gles2 porting the water plugin yet another fun task i tackled along the way to porting compiz to opengl es was to completely rewrite the water plugin but before i talk too much like always let s take a look at the water plugin on desktop so clearly for those of you who didn t already know the water plugin clearly you ll understand that its practical applications are well limited i mean having water drops pop up all over one s desktop is nice and fun but only for the first 10 minutes i d say after this already long time frame the excitment is over and you ll understand that our interest in the water plugin was for demoing purposes of course in fact the water plugin is a really cool thing to have for a demo it showcases per fragment shading capabilities like no other compiz plugin can and the way the plugin was devised originally is rather interesting it makes a very clever usage of framebuffers in fact it uses a series of three square fbos of limited resolution let s say 256 256 which content aren t colors but bump normals in the x y z components and heights in the w component by binding 2 fbos in the series current and last ones the water calculating shader may then proceed all the framebuffer fragments it calculates a per fragment acceleration factor by comparing current last heights for each fragments and output newly computed normals and heights in the next fbo in the series only problem was the original shaders were written in arb language rewritting this shader in glsl really was a liberating action here s the ported water plugin in action this was run on a pandaboard es running ubuntu 11 04 natty narwhal you can find the final version of the compiz water plugin port to gles here have fun tagged arb compiz framebuffer glsl opengl shaders may 30 2012 leave a comment compiz uncategorized compiz port to gles2 supporting the unity desktop the second part of my compiz port to opengl es task was to make the whole thing work seemlessly with canonical s brand new unity desktop take a look at the unity desktop that appeared originally in ubuntu 11 04 natty narwhal this change of course promised to bring its share of problems mainly for 2 reasons unity displays its gui components widgets using the nux toolkit which is opengl based i knew nux made extensive use of framebuffers which compiz gles depended on as well so ouch possible interference ahead the unity compiz running scheme is very peculiar unity runs as a compiz plugin the unityshell plugin let s take a look at the main challenges those elements posed to this task 1 unity depending on nux this at first wouldn t have to be such a big deal because after all stacking opengl calls at different software layers is a common thing the problem here though is that nux made unsafe uses of framebuffer objects fbo by unsafe i mean that the code was not carefully unbinding fbos back to their previous owners after use so any caller like compiz trying to nest unity nux drawings in its own fbo just couldn t do it this unsafe fbo usage comes from a standalone point of view and is somewhat not compatible with the compiz plugin scheme so what i and jay taoko came up with is a new nux api this new api lets us manage a new so called reference frame buffer that allows for fbo nesting here it is modified file nux windowcompositor h nux windowcompositor h 2011 12 29 18 06 53 0000 nux windowcompositor h 2012 01 05 04 00 19 0000 175 6 175 23 public set and external fbo to draw nux basewindow into this external fbo will be restored after nux completes it rendering the external fbo is used only in embedded mode n if the fbo_object parameter 0 then the reference fbo is invalid and will not be used param fbo_object the opengl index of the fbo param fbo_geometry the geometry of the fbo void setreferenceframebuffer unsigned int fbo_object geometry fbo_geometry bind the reference opengl framebuffer object return true if no error was detected bool restorereferenceframebuffer objectptr iopenglframebufferobject getwindowframebufferobject return m_framebufferobject 561 6 578 10 int m_tooltipx int m_tooltipy the fbo to restore after nux rendering in embedded mode unsigned int reference_fbo_ geometry reference_fbo_geometry_ all this landed in nux 2 0 series as a big linaro merge on 2012 01 06 take a look it s still upstream in more recent versions 2 unity running as a compiz plugin it may be weird at first to think of unity as a compiz plugin but let s think about it for a minute when running compiz as our window manager which makes intensive use of opengl es calls it s not so foolish to make unity a plugin because unity is also making intensive usage of opengl primitives and we ve got to find a way to coordinate the two components in a graceful manner one manner is to run unity as a compiz plugin the unityshell plugin that is that way unity declares a series of callbacks knowed to compiz like glpaint gldrawtexture preparepaint etc and compiz calls them at the right time every drawing operations are done every framebuffers are filled at the right time in the right order in a graceful manner with the other plugins on second thought this decision from canonical to write unityshell is not so foolish after all tagged compiz desktop opengl unity unityshell plugin may 25 2012 leave a comment compiz uncategorized compiz port to gles2 another cool project hi it s been a while since i last wrote about my professional highlights in the open source world from oct2011 till mar2012 i worked on porting compiz the open source eye candy window manager to opengles1 2 this was a very fun and interesting task to tackle now compiz runs under linux and many of you might never have used it so here s two videos showing what s it s basically capable of on a desktop ubuntu those videos actually show compiz running on fast desktop boxes but my task was to port compiz to the texas instruments omap4 platform using the power of its amazing sgx gpu now we don t find any opengl implementation on theses socs rather opengles1 2 implementations delivered by imagination technologies remember it s embedded so since compiz was orig...
|