)]}'
{
  "log": [
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "79f39eb46055282c86815853ad94a1e01ca6675f",
      "tree": "3853d9c0c5b1877a390178558e77dd7b6c31ad75",
      "parents": [
        "f9e88fbee04f83638b07546741196bd4c242ef54"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:49:17 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:10:25 2011 -0800"
      },
      "message": "Add support for sending VSYNC events to the framework\n\nuse gui/DisplayEvent to receive the events. Events are\ndispatched through a unix pipe, so the API is compatible\nwith utils/Looper. see gui/DisplayEvent.h for more info.\n\nBug: 1475048\nChange-Id: Ia720f64d1b950328b47b22c6a86042e481d35f09\n"
    },
    {
      "commit": "f9e88fbee04f83638b07546741196bd4c242ef54",
      "tree": "a0b0da85f2411f6a025637cd082f1efced6790e5",
      "parents": [
        "e11ec1df421be0b1a18fd3cf6ec23361d86ca32a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:07:24 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 13:07:40 2011 -0800"
      },
      "message": "Fix build.\n\nRevert \"Add support for sending VSYNC events to the framework\"\n\nThis reverts commit f3918c5bd4bc9f02f74da42995564150ca2dd382.\n\nChange-Id: I998e3e1aa3fa310829ae973b64fe11b01f6f468f\n"
    },
    {
      "commit": "f3918c5bd4bc9f02f74da42995564150ca2dd382",
      "tree": "9f8a1bb871b9b5a7571a6a9cbc65d539ac947b92",
      "parents": [
        "bb9ba8bae551305acba4f60577b0f461a9421bc5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 17 17:49:17 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 11:44:05 2011 -0800"
      },
      "message": "Add support for sending VSYNC events to the framework\n\nuse gui/DisplayEvent to receive the events. Events are\ndispatched through a unix pipe, so the API is compatible\nwith utils/Looper. see gui/DisplayEvent.h for more info.\n\nBug: 1475048\nChange-Id: If4126023fc9c067e56087ec7d16a8fd542ce1794\n"
    },
    {
      "commit": "e88740e6264d829099d04bbe57d1ec2b14996c40",
      "tree": "bef49e54d8541fda96a8defd68807efa1573d662",
      "parents": [
        "274e03c90ee6054e81a16b1bd0a54258e08ddee9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Nov 13 23:52:47 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 14 19:05:45 2011 -0800"
      },
      "message": "rework a bit how we manage EGL extensions\n\n- don\u0027t advertise extensions that are not supported\n  by any implementation\n\n- remove EGL_ANDROID_swap_rectangle which is not\n  implemented by anybody and confuses people\n\n- add some comments about mandatory extensions\n\nBug: 5428001\nChange-Id: Id8dc48116ac1d1eb79ec9ef55d03e29d4257c1f3\n"
    },
    {
      "commit": "222357f33a105ce08177b94334c7d14af29df8f6",
      "tree": "8025f52534c910fe5f54041ad48a0279a96256af",
      "parents": [
        "2ccc47b89868d4f39683e0e2bd057ce95d7d1217"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 04 18:46:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 04 18:46:11 2011 -0700"
      },
      "message": "workaround to set the WM refresh rate to 48 Hz for tuna devices only\n\nthis is TEMPORARY until we can do this properly.\n\nBug: 5572464\nChange-Id: I6537706d636a83a4a50e2900d6b829dd89b6f245\n"
    },
    {
      "commit": "a0bd0d84555c8e503e05b60cd959406a47d76f70",
      "tree": "cdeb85440e2dd6fa9aeeeaf01cba6904de1976c7",
      "parents": [
        "34e1fb1ee229a7e033dcd42f4efd194e1614d5ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 01 16:32:21 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 01 20:48:05 2011 -0700"
      },
      "message": "Add a h/w composer API to allow the HAL to trigger a redraw\n\nThis is useful in various situations, for instance if the HAL\nwants to change its compositing strategy.\n\nBug: 4488017\nChange-Id: I5afc14e5917c6db7926d7417d48677d5aba50caa\n"
    },
    {
      "commit": "1861786a97209ed75010a54cca5167593dbfec21",
      "tree": "42aab3fccc20cd655d1d9ac4c1e6ad6108766ffa",
      "parents": [
        "0aaa30dc4859a8f181809eca13a6ec6ed61f3a9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 06 16:35:30 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 08 14:37:05 2011 -0700"
      },
      "message": "Fix EGLUtils::selectConfigForPixelFormat()\n\n- renderscript now calls EGL directly instead of relying on this function\n- surfaceflinger also does its own EGLConfig selection\n- selectConfigForPixelFormat stays for legacy reason (many tests use it) but\nit now only tries to match the alpha channel of the format rather than the\nformat itself.\n\nthis will allow implementations who don\u0027t support the exact formats\ndefined in the HAL to work properly.\n\nBug: 4998223\n\nChange-Id: Ic664dfc14d5072a514b6f77a115d1521bfc1578f\n"
    },
    {
      "commit": "0c63ef5091def41e91a2202560c57b2f6caabfbe",
      "tree": "afd2477bdbd864d00fe5d7c9d8068686b6f11c61",
      "parents": [
        "23b444a2e4e808262c22fa5254db9861eb961879"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:08:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:09:24 2011 -0700"
      },
      "message": "don\u0027t kill surfaceflinger when system process dies\n\nChange-Id: I2d3ed87b590f9ccea3fa4af41d92911de070b315\n"
    },
    {
      "commit": "c94dce521b57763c6ace6cee206214fd476fe8f9",
      "tree": "4b756f471d09abf5ec88531935b2db0837d6a18a",
      "parents": [
        "16f61049a872e80628c0004d75e184a6ddf73b02"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 15:59:24 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 15:59:24 2011 -0700"
      },
      "message": "fix memory corruption when retriving GL_MAX_VIEWPORT_DIMS\n\nChange-Id: I2e0b1eac6dbc6a4ecbbaf31013aa02cf2369fce2\n"
    },
    {
      "commit": "d2112306330ce0c162bee4b864991962ca2b655a",
      "tree": "d169f93867e853220c40d38826fe81b4a1ad9eff",
      "parents": [
        "ff3c470778a69d262470e9707fce58dd485c6cc9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 19:38:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:13:59 2010 -0800"
      },
      "message": "remove support for PUSH_BUFFER surfaces and overlays\n\nthe same functionality is now supported through\nthe h/w composer HAL, and YUV support in the GPU.\n\nChange-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf\n"
    },
    {
      "commit": "94720d7ec40d2b5ee200d95a46588cdb0fb30e66",
      "tree": "48c53514ce6f4eb1012a38ec8fd9b422d7937897",
      "parents": [
        "882754e8cc5833e19696271d612b4b9eabcc5bb3"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 01 16:38:01 2010 -0800"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 08 15:40:11 2010 -0800"
      },
      "message": "surfaceflinger: add support for gralloc dump hooks\n\nChange-Id: Ib6f539ed0132b70d040d653c03d52cc04249ac3c\n"
    },
    {
      "commit": "ac6f0cc317c3ee469a9e5b9c4e7db56c027b02c0",
      "tree": "6797b048d15a49a10b952aa37e3c4c2a54e24a97",
      "parents": [
        "6a6fbfb348c8f648a7615f5dae29de610c7c25f6",
        "fb31036fd844444c395a2ae9c97439eec9f774e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 21 13:48:36 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 13:48:36 2010 -0700"
      },
      "message": "am fb31036f: am 583fefc8: Merge \"Use the context_priority extension when present.\" into gingerbread\n\nMerge commit \u0027fb31036fd844444c395a2ae9c97439eec9f774e4\u0027\n\n* commit \u0027fb31036fd844444c395a2ae9c97439eec9f774e4\u0027:\n  Use the context_priority extension when present.\n"
    },
    {
      "commit": "cd54dc26f7ac23da6c920dd83b30242049470f00",
      "tree": "236243a87912613b6bdcc66fd3eee931dbdb5458",
      "parents": [
        "de846ac659e8c14d898a3fa14bd0504b24096057"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 11 17:54:43 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 11 18:01:00 2010 -0700"
      },
      "message": "Use the context_priority extension when present.\n\nChange-Id: I12eadf1e32d576de5d811fba44afa73263e13eef\n"
    },
    {
      "commit": "a5ab8ce602ecfd897805e185c89a6eff0c78aabe",
      "tree": "e393ed7e14ae9a42faaf542ccdeda36f6cacf7fa",
      "parents": [
        "19c5df745229374748f38c76a222ec8ce1d08e81",
        "48a862407dda482450bdfd5aa2a2cd8b3e8e38dd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 15 12:29:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 15 12:29:18 2010 -0700"
      },
      "message": "resolved conflicts for merge of 48a86240 to master\n\nChange-Id: I2305fef9f4dd46183337217d822df3c675b6b6e5\n"
    },
    {
      "commit": "04262e9f842edf20168399b6a70f0d67e518fe69",
      "tree": "dd2c01550c43c4658f78d87a60d8d8407af9afe9",
      "parents": [
        "cc5494c9996f809e36539b24e8b6b67683383d29"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 22:57:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 23:16:58 2010 -0700"
      },
      "message": "Add logging of various important graphics events\n\nThere are 16 events logged in the event log:\nSF_APP_DEQUEUE_BEFORE\nSF_APP_DEQUEUE_AFTER\nSF_APP_LOCK_BEFORE\nSF_APP_LOCK_AFTER\nSF_APP_QUEUE\n\nSF_REPAINT\nSF_COMPOSITION_COMPLETE\nSF_UNLOCK_CLIENTS\nSF_SWAP_BUFFERS\nSF_REPAINT_DONE\n\nSF_FB_POST_BEFORE\nSF_FB_POST_AFTER\nSF_FB_DEQUEUE_BEFORE\nSF_FB_DEQUEUE_AFTER\nSF_FB_LOCK_BEFORE\nSF_FB_LOCK_AFTER\n\nall events log the buffer conserned and a timestamp in microseconds.\n\nby default the logging is not enabled, to turn it on:\nadb shell service call SurfaceFlinger 1006 i31 1\nadb shell setprop debug.graphic_log 1\n\nThe effect is immediate in SurfaceFlinger, but applications need to be\nrestarted.\n\nChange-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1\n"
    },
    {
      "commit": "11042a41c1fe1415df0f45ef5fd3905d34b6e01a",
      "tree": "2b4f1fc582c24b2bef28c19be3d47a7819fda09e",
      "parents": [
        "982f58bdccce7e4e537cffb2410ad78d73398461"
      ],
      "author": {
        "name": "Antti Hatala",
        "email": "ahatala@nvidia.com",
        "time": "Thu Sep 09 02:33:05 2010 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Sep 09 12:06:48 2010 -0700"
      },
      "message": "surfaceflinger: give hwcomposer a chance to release buffers\n\nChange-Id: I605fa779702022865dd58df3b36f37c2644ade36\n"
    },
    {
      "commit": "cfa275908a220c5e1cf496f7fdde1c04e24e95da",
      "tree": "d2e9038d4ca2c988e7aebf193760c360785fa869",
      "parents": [
        "6ab94608750776bcaaee56696cfcfb16ce29db8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:19:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:22:04 2010 -0700"
      },
      "message": "revert hwcomposer HAL changes. DO NOT MERGE.\n\nThis reverts commit:\n94364b91a2894bf037b8beb027132fbb812e1434\nf8e705dea48f77f1c2532fdbadd4997dd1851af0\nb59beb5ca68d0228f60dda60d85e2d0226b33215\ne0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20\n"
    },
    {
      "commit": "e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20",
      "tree": "85ed9093e65551a73553d19d5e6122d051ef574b",
      "parents": [
        "8514b92bc4dfab58aa762d75322e4c285b6ada17"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 17:14:02 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:08:45 2010 -0700"
      },
      "message": "call into hwcomposer HAL when present\n\nChange-Id: I70f31c69a9436a43860e78977442863ecba6d27b\n"
    },
    {
      "commit": "08e83bb3b7cc41f603867acbeb1168019cf535fe",
      "tree": "79594e01ef6c3306b890cb944d6f15d3098075c4",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "781953d62dc17d761e39540f0480e5ca7451cdbe",
      "tree": "b5762ff0e04ff7cdbd0a8a0df2b6cf74db8ce369",
      "parents": [
        "1cb3fdc91e1b82a5afe064714a1b530cc05577a7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "message": "Revert \"Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\"\n\nThis reverts commit 330dd304a471d260a73e342a240921c03c825f99.\n"
    },
    {
      "commit": "330dd304a471d260a73e342a240921c03c825f99",
      "tree": "dc4fb488faab0e0f3fac616cb8cb58632cf32d7b",
      "parents": [
        "357f8209f3aec63fa2779da4eeab8825f80b0a41"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 09:25:19 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 11:05:37 2010 -0700"
      },
      "message": "Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\n\nThis reverts commit 081bc5c47d8a980e6eafa70ddafcd89981586391.\n"
    },
    {
      "commit": "081bc5c47d8a980e6eafa70ddafcd89981586391",
      "tree": "7f69e950394cfd54a2bd5083345fba31fb330d9c",
      "parents": [
        "8896783dc1d31c5274b277c364da0ffe7cc27cca"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:22:43 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:28:59 2010 -0700"
      },
      "message": "fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\n\nMake sure to not use GL_TEXTURE_EXTERNAL when it\u0027s not supported\nby the GL. The error was harmless, but annoying.\n\nChange-Id: I571a9a9b05d35da51420950a6a6e95629067efd0\n"
    },
    {
      "commit": "51c66aa4ce2797e21e880824e08de3b1228b3b0a",
      "tree": "aa072b9a1cee264d661fc1e6c75fbe1f0f2ed624",
      "parents": [
        "d95266c6a8f059770b1799958530156a2f537468"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 14 18:33:30 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 14 18:33:30 2010 -0700"
      },
      "message": "fix uninitialized variable in DisplayHardware\n\nthis fixes the issue where the display is all messed-up sometimes.\n\nChange-Id: I20be91b5166bfff0c6d353a777351842c9df8e95\n"
    },
    {
      "commit": "aca2ee8a7045e6b3d0399736d7d1adf7e1dbf825",
      "tree": "fc96b9731e668b9a4c5fa54bcf9457a375be2f62",
      "parents": [
        "e46defea3ae15787aa6afbb91cb9dc83d4a074e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 10 20:10:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 15:44:26 2010 -0700"
      },
      "message": "remove the \"memcpy\" hack\n\nthis hack was used for gpus that don\u0027t support cached buffers\nfor s/w clients. currently we have no gpu with this issue.\nthis removes quite a bit of complexity.\n\nChange-Id: I72564669f124f92805030e61983711f61c76b6d9\n"
    },
    {
      "commit": "e5c0a7b7810092a593ff386843927238c175bdbd",
      "tree": "0118a020f4e43c025fbfaadb2d91460aa893894d",
      "parents": [
        "796c5fc6abf01b1864223156d578288657fe9923"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 14:51:04 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 15:58:36 2010 -0700"
      },
      "message": "clean-up surfaceflinger a bit\n\nget rid of the glDrawTexi path and use floating points instead of fixed point maths\n\nChange-Id: I3aa9ce2dc082f702160e605a16ba5fe987cdf087\n"
    },
    {
      "commit": "967dce306267109a6e8aec408b65609ac5642a03",
      "tree": "bf740531722b83fd0c5aba35f203c1ad1e80df43",
      "parents": [
        "db281311a0e957ba989509cf11f2085b4db12074"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "message": "fix [2594950] Flash: Zooming in on some content crashes the Nexus One and causes it to reboot (runtime restart)\n\nWe now limit the size of the surface to the maximum size supported by the GPU.\nOn Nexus One this will 2048 -- it could be different on other devices.\nSurface creation fails if the limit is exceeded.\n\nChange-Id: I9ecfc2e9c58c9e283782b61ebfc6b590f71df785\n"
    },
    {
      "commit": "6b1806b2d3dac4ac11c4c5d306320fcabf5fac1e",
      "tree": "50774c24836a53a008eb18e029ceb8f6c1385f27",
      "parents": [
        "bd80e560ac09c42b8081fe555d74a922ebca080a"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 15:39:44 2010 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 16:44:46 2010 -0800"
      },
      "message": "surfaceflinger: remove un-cached buffers hack for Adreno\n\nChange-Id: I5ae4e74bfa3e25b55be2cddf7b3c51368a140ab9\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "00d0b54af1a6405366a659b34f0022dedf054ddf",
      "tree": "cd53e14a0a9770aa035ad0ffec6792908f3c7936",
      "parents": [
        "0a42b811aea490a9a605b75f0320101f6eafd283"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Dec 03 14:08:19 2009 -0800"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Dec 03 14:09:31 2009 -0800"
      },
      "message": "surfaceflinger: remove un-cached buffer hack for SGX\n\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\n"
    },
    {
      "commit": "830df4b16971527b07a829cf80a0c9e07a89b89a",
      "tree": "895d0c7a9734a5da6da54e8882e5c3462192c229",
      "parents": [
        "91e40e7838d183cb2a9e750edf0a6572f21da21d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 18:54:14 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 18:54:14 2009 -0800"
      },
      "message": "addresses several bugs: 2206097, 2166583, 2261119, 2216759\n\n2206097: Broken suggestions while composing message\n2166583: Color artifacts with MDP dithering\n2261119: Passion transition animations are rough\n2216759: Screen flicker when dropdown list in background window shows or hides\n\nThis is part of enabling GPU composition instead of using the MDP. This change\nis dependent on another change in the vendor project.\n\nSpecifically this change disables the use of EGLImageKHR for s/w buffers\nfor cache coherency reasons. memcpy is used instead.\n"
    },
    {
      "commit": "9042b4564de5477b18e680c7dce13b587a681dd9",
      "tree": "04872061371527ef76dbfff6ee0d6c8fdadb99bc",
      "parents": [
        "678cdbe55e0de71436f8aad5f139eafc2ab6f937"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 26 20:12:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 27 13:13:29 2009 -0700"
      },
      "message": "    fix [2143798] Need to figure out how to do video\n\n    Use EGLImageKHR instead of copybit directly.\n    We now have the basis to use streaming YUV textures (well, in fact\n    we already are). When/if we use the GPU instead of the MDP we\u0027ll\n    need to make sure it supports the appropriate YUV format.\n\n    Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported\n"
    },
    {
      "commit": "460b60c9b064ef02e9eaf56ecf2f266fd7c4089c",
      "tree": "be7f73c6d0b1d0f22cfb171bff02c153ad5a14cd",
      "parents": [
        "773fd13130948397cac5178e16d17975a06a738b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 22:23:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 22:23:23 2009 -0700"
      },
      "message": "Revert \"temporarily disable the use of glTexImage2D for sw buffers on sholes.\"\n\nThis reverts commit c131c5671965b69b0dee3e4afa3b3dd5e3c0c405.\n\nApproved by Hiroshi\n"
    },
    {
      "commit": "c131c5671965b69b0dee3e4afa3b3dd5e3c0c405",
      "tree": "dc600befbe6c77a53b7be2337f6e7d85b4cf1a47",
      "parents": [
        "9d6a685ba939f413a8d3e1e97627593aa1cdf6cb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:59:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:59:43 2009 -0700"
      },
      "message": "temporarily disable the use of glTexImage2D for sw buffers on sholes.\n\nwe\u0027re going to first cut a build without this change.\n\nApproved by Dr. Hiroshi.\n"
    },
    {
      "commit": "351a7073fb60eb3534ec8c69ab263f057a124500",
      "tree": "a054ba17c87524486ec48c6ac70854a5a5f64240",
      "parents": [
        "6f5f5a095a5a4d42fc656cf8c1e6d0f67594f88d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 18:20:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:24:26 2009 -0700"
      },
      "message": "fix [2168528] enable glTexImage2D code path in SF for software-only buffers\n"
    },
    {
      "commit": "f2d28b74850ea0869aef2ce0727a6abb7b166a5c",
      "tree": "a59d2712a9cef92619bb003b77203592e5c32a7b",
      "parents": [
        "2ddccd16496701370572e1ad3d83da056d9ad281"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "message": "minor SurfaceFlinger code cleanup and remove unnecessary tests\n"
    },
    {
      "commit": "b1a1874625a6aca967601fcda53a82d8d712df45",
      "tree": "3cf96bf9cc4bf734da47e58cab3c5421e7698139",
      "parents": [
        "d55de40481c6ec7d8fbd1a38c80a6c66bf462a71"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "af369f6280c9eec0caa3f53f8e27f3713e1a7d25",
      "tree": "8021b39056c7e3e0ce50d8a6b26a4b6459aecbfa",
      "parents": [
        "75c4d498776a189f37e3d0294c9eda9ed51f6534"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 20:15:42 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 20:15:42 2009 -0700"
      },
      "message": "disable backbuffer preservation when possible, which may improve performance a bit\n"
    },
    {
      "commit": "24d237db943051942b5966f5e788d67050ec0ba5",
      "tree": "2a11231583c10a41798544bc14944ee38a9fbc2b",
      "parents": [
        "bbe14a1758a5b99689b7aa13a6d4f58e61705ebf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 18:49:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 19:20:10 2009 -0700"
      },
      "message": "add a debug property to disable h/w composition. debug.sf.hw, when set to 0 will disable h/w composition\n"
    },
    {
      "commit": "9779b221e999583ff89e0dfc40e56398737adbb3",
      "tree": "76b185d252b95b05e8d74e7a1644b843f8839725",
      "parents": [
        "a4eb91da03bd785bc91bed0d25a9efaa9baba1c1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "42fd8050ba2dafe0a697fb5a6929ba086ce80426",
      "tree": "38a8806a8042a67a87113d59f4e700f9fb667b30",
      "parents": [
        "88e3e6bd04dcf166ddd92ce3a84e1f9f54ac2f66"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "message": "make sure EGL_ANDROID_swap_rectangle is actually supported before using it\n"
    },
    {
      "commit": "88e3e6bd04dcf166ddd92ce3a84e1f9f54ac2f66",
      "tree": "3bf9bea84e290f9fcadd914f366196f0e66adc3f",
      "parents": [
        "b5a72b0e14aefb658695bed8d2b598b701abaf3d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "message": "Better error handling in EGL extensions\n"
    },
    {
      "commit": "9ca4dd6011e30cbb3bc40cf0bba7d11362b8bc38",
      "tree": "99f450ba9637fdaa1a52d3b5a09a4d8d9bd42d5a",
      "parents": [
        "509dae53c54437eebd5291226e76c5456646f560"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "message": "minor code clean-up\n"
    },
    {
      "commit": "265d9c076a588cf4cd811fbafd999c7ffe36641b",
      "tree": "8e4b8a390de2d36c8bd0e2a92d1907bdcbb99f04",
      "parents": [
        "25ec00fd13a6310d80a726cc9493a4b394056063"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "message": "added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n"
    },
    {
      "commit": "b2b28f31228139395c6f4930c3374f758f68f501",
      "tree": "a9aac3fc2055f672502767e91410c9ed1bf4f948",
      "parents": [
        "afa7d85b43c6c2058cbde61ff287ff5776d76d2a",
        "1521cd6e657ba4efa9382ab73d3cbba3bdf50ead"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "message": "am 1521cd6e: Merge change 8015 into donut\n\nMerge commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027\n\n* commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027:\n  Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n"
    },
    {
      "commit": "d75fe9aa835b0811911e1727de8e15b329dafd49",
      "tree": "baf987844168a4a4af49c1197c3d3587d3ad2ae5",
      "parents": [
        "9377738cdbb7eb0a1267cb536443cbed700ff5e9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "message": "Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n\nThis will make android.view.Display return corresponding values for\nthe screen\u0027s DPI.\n"
    },
    {
      "commit": "cafec0325010926130b03ce7ba50b2b180905e37",
      "tree": "a0b400d443c679296076a85e11a8972450bc8b8f",
      "parents": [
        "e7622f3901234f238677c696a31c37838d315e6d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 22:11:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 22:11:57 2009 -0700"
      },
      "message": "fix [1969200] Uninitialized double passed to Math.sqrt()\n"
    },
    {
      "commit": "3a6b160a3b52cd96fb383d5ee93c22e5e938e0e2",
      "tree": "69e19f9d77d76bf37857cf1aeb2ace21919d84da",
      "parents": [
        "ecfa7ccd4fc3066a4cfd4d84d7de286d95581c78"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:53:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:57:42 2009 -0700"
      },
      "message": "when there is a choice between UPDATE_ON_DEMAND and SWAP_BUFFER optimizations, choose UPDATE_ON_DEMAND which is often more efficient.\n"
    },
    {
      "commit": "ecfa7ccd4fc3066a4cfd4d84d7de286d95581c78",
      "tree": "6c71dcd11bee533b7d09e8d711bcbc491c51b2f5",
      "parents": [
        "276826bae2eb6d25c4abb1c5f665d2876c65e50c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:49:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:49:56 2009 -0700"
      },
      "message": "fix a bug that caused artifacts when SWAP_RECTANGLE was enabled\n"
    },
    {
      "commit": "8c9687ae291a1e0a63d4236069066284f56192cd",
      "tree": "e03fd70ad8fbd5a3bad342a381f2f1da1061f947",
      "parents": [
        "5a8d6f44b2ec9132848aee5f608447ff801951b2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:06:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:06:36 2009 -0700"
      },
      "message": "fix an update bug with SHOW_UPDATE debug feature. Fix a problem with the debug binder codes too\n"
    },
    {
      "commit": "26c28b16f3464eeb98b091b915ccf494ac31c35f",
      "tree": "a13c8d030ad3f9988c4958d7cbac328d20df7dcb",
      "parents": [
        "c1e3ec555b79b1e45fccbdf0bbc8ac2d51902860"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 22:39:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:09:27 2009 -0700"
      },
      "message": "make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently\n"
    },
    {
      "commit": "cbc4c9f8d56317b2fe8964c15c9785ebeef98ca7",
      "tree": "131ba56996017a0493c681ef86c3f49bbcfa9dd3",
      "parents": [
        "f31868e59fbf59a8d479587c80b648fb37a166fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 21:11:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 20:39:16 2009 -0700"
      },
      "message": "hack copybit back in for video playback on msm7k. we have h/w accelerated video again\n"
    },
    {
      "commit": "f73bbd042367b65780316d2335784686dedd0459",
      "tree": "913a9ea96c37d617789914ec83f81ed0611d4d68",
      "parents": [
        "6edf5af578c1ab1fcd44b7c08ca371456e4b7430",
        "aba6af9277b34c739b83d3d2d908724c3f7ec1b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 17:41:14 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 17:41:14 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n"
    },
    {
      "commit": "3c08a446c5b4f2682da1d8461bd1ed94060c29dc",
      "tree": "b0910aa8c13d0fc13c02ec4aabfa35e31b366e2f",
      "parents": [
        "5502f04c1dcf2b1918858bacb99fb0480a711707"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 19 04:41:12 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 19 04:41:12 2009 +0200"
      },
      "message": "Fix sim-eng build and simplify previous lcd-density related patch\n"
    },
    {
      "commit": "2a578ae518ff3d8a2d4768b3d190e4702509e82c",
      "tree": "9275c473a3caee6f985a9abd2d7b33ff54c21b40",
      "parents": [
        "4ebd855bb7362d45833dc811f2622fcc788dec17"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jun 18 04:30:32 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 19 00:17:31 2009 +0200"
      },
      "message": "Allow the qemu.sf.lcd_density property to override the value of ro.sf.lcd_density\n\nro.sf.lcd_density is usually defined in the build.prop file which is parsed by init\nbefore anything else. Since its name begins with \"ro.\", this property is write-once\nand cannot later be modified, e.g. in /system/etc/init.goldfish.sh.\n\nIn other words, you cannot use \"emulator -prop ro.sf.lcd_density\u003d\u003cvalue\u003e\", since\nit is impossible to override the value defined in build.prop\n\nThis patch modifies the system to recognize \"qemu.sf.lcd_density\" as an override\nvalue, which can be set with \"emulator -prop qemu.sf.lcd_density\u003d\u003cvalue\u003e\", forcing\na specific density.\n\nA later patch will allow the emulator to automatically set this property depending\non AVD hardware configuration settings.\n"
    },
    {
      "commit": "e19476214a2fe718c82461f54e6b56cee7faa5f4",
      "tree": "e0b6501e4435552756aabbbf9c886f73752d7551",
      "parents": [
        "350d651706d8f484d9aeb539d491526f822fa84a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 11 17:19:54 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 11 17:19:54 2009 -0700"
      },
      "message": "protect ANDROID specific egl extension with #define\n"
    },
    {
      "commit": "1277bb01166bc7ef75305014cff36166b4c2b393",
      "tree": "47efc5d1f6a0cd3bcfc82018f0fb665270223b80",
      "parents": [
        "5fbcaf9a90ca57b81739112c20859ef55fe18336"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 14:49:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 14:49:08 2009 -0700"
      },
      "message": "when looking for an EGLConfig always pick the first one that matches, not the last one\n"
    },
    {
      "commit": "97b8056c3182a973c67d3c1b196150d4b9e30f3a",
      "tree": "b78a1c6d95b468aa654d1910226ae711250799b5",
      "parents": [
        "927d37cb788670b91af0f1a7a93c68046a838d23"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "message": "add support for update-on-demand in SurfaceFlinger\n"
    },
    {
      "commit": "927d37cb788670b91af0f1a7a93c68046a838d23",
      "tree": "acde612e9c88b5334646d552fdbb881495454f8a",
      "parents": [
        "2e20bffbab8084fedce39d14d7dd17b08f6e9ba2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 06 23:47:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 15:07:52 2009 -0700"
      },
      "message": "fix EGL extension string names\n"
    },
    {
      "commit": "2e20bffbab8084fedce39d14d7dd17b08f6e9ba2",
      "tree": "be397ea1383b74bc09e48d591ca7aa2cc54f0539",
      "parents": [
        "9bd5da4db97fec7cdbe6e07870411c1fcaff4365"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:29:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 15:07:33 2009 -0700"
      },
      "message": "created an new EGL extension called ANDROID_swap_rectangle\n\nANDROID_swap_rectangle allows to specify the rectangle affected by eglSwapBuffers(), anything outside of this rectangle is unchanged. in particular EGL_BUFFER_DESTROYED only applies to that rectangle. This extension as well as EGL_BUFFER_PRESERVED allow major optimizations on surfaceflinger, which can redraw only the dirty area during compositing.\n\nHowever, ANDROID_swap_rectangle allows further optimizations in EGL by reducing the amount of copy-back needed. ANDROID_swap_rectangle is particularily important for software implementations.\n"
    },
    {
      "commit": "ac2523b161df2bb507cc88906bb070878266770d",
      "tree": "30ee897d6e8fa63e067627a91697f13f1fbd919d",
      "parents": [
        "e633f9339a2556771c79c784b0b23a9aade30485"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "message": "move opengl/include/EGL/android_natives.h to include/ui/egl/android_natives.h and don\u0027t include it from egl.h\n\nthe android_native_ types are just forward declared in egl.h\n"
    },
    {
      "commit": "6279619e4279daf77feff0c76e089b26ad66124f",
      "tree": "8189ce775d4ed72742bf9c5f4a4f12c5833767b9",
      "parents": [
        "dff8e58d47ede6e748c0b02e128ca33b42a4f362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "message": "minor clean-up in FramebufferNativeWindow\n"
    },
    {
      "commit": "dff8e58d47ede6e748c0b02e128ca33b42a4f362",
      "tree": "716d70cda74aa625d6e67c4debc2eb7c6b81bfc9",
      "parents": [
        "fa6eda01a9f3df0102ce6a65302c8674cc9c7e50"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "message": "update surfaceflinger, libui and libagl to the new gralloc api\n\n- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.\n- factor all the lock/unlock code in SurfaceBuffer.\n- fixed \"showupdate\" so it works even when we don\u0027t have preserving eglSwapBuffers().\n- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.\n- make use of LightRefBase() where needed, instead of duplicating its implementation\n- add LightRefBase::getStrongCount()\n- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp\n\n- disabled copybits test, since it clashes with the new gralloc api\n\n- Camera/Video will be fixed later when we rework the overlay apis\n"
    },
    {
      "commit": "1473f46cbc82aa6f0ba744cc896a36923823d55b",
      "tree": "1a03737c7eb71b32735693e5cfdd91d0b57a2ad5",
      "parents": [
        "71d83c04897a10394009b02808bb6b86886b27e1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "message": "Integrate from //sandbox/mathias/donut/...@145728\n\nSurfaceFlinger rework for new EGL driver model support.\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d24b8183b93e781080b2c16c487e60d51c12da31",
      "tree": "fbb89154858984eb8e41556da7e9433040d55cd4",
      "parents": [
        "f1e484acb594a726fb57ad0ae4cfe902c7f35858"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "9266c558bf1d21ff647525ff99f7dadbca417309",
      "tree": "1630b1ba80f4793caf39d865528e662bdb1037fe",
      "parents": [
        "b798689749c64baba81f02e10cf2157c747d6b46"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "b798689749c64baba81f02e10cf2157c747d6b46",
      "tree": "da394a395ddb1a6cf69193314846b03fe47a397e",
      "parents": [
        "f013e1afd1e68af5e3b868c26a653bbfb39538f8"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@125939\n"
    },
    {
      "commit": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
