)]}'
{
  "log": [
    {
      "commit": "0b0722f980f40e1ac0929a7f1a6e2df7af983478",
      "tree": "f420562ab6642a7a4fa82e7db0443d10280ef4f2",
      "parents": [
        "f007a2faa1d765e9b53553a8214179b253e3cbbd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 18:29:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 30 14:48:50 2009 -0700"
      },
      "message": "fix[2222341] Soft reset while going back from camcorder settings\n\nadd a way to convert a mapped \"pushbuffer\" buffer to a gralloc handle\nwhich then can be safely used by surfaceflinger, without including\ngralloc_priv.h\n"
    },
    {
      "commit": "f007a2faa1d765e9b53553a8214179b253e3cbbd",
      "tree": "7928e89551e22c634ab697673072128e2a2444ff",
      "parents": [
        "ec1f1e3df1ca5e73e262df479bf91a92f3ccafde"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 28 21:00:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 16:45:41 2009 -0700"
      },
      "message": "return proper error code from eglCreateImageKHR\n"
    },
    {
      "commit": "b34d5d527596102ae7a040d787e4d8c336bf192b",
      "tree": "0798a46cb5cb451c5067e9e2d4c320f0e39f13cf",
      "parents": [
        "62df88bcc95a714c1d5035471dfe7fe0ddd9d50b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 14 02:39:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 19 16:13:46 2009 -0700"
      },
      "message": "Use the TLS register if HAVE_ARM_TLS_REGISTER is defined\n\nthis will be needed for SMP, but would improve dispatching GL calls a bit\non armv6 and above.\n"
    },
    {
      "commit": "6fc569971faa342b2e2da46c55fbfbba3a2a7814",
      "tree": "56b790ce3ac8aa81b4481f7b6a4e9384aee7c84e",
      "parents": [
        "b10e2f1a861933f50d9ad8ea24b5dfa5643a2c11"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 14 02:06:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 14 02:06:37 2009 -0700"
      },
      "message": "fix [2187212] add support for GLESv2 dispatch based on TLS\n\nInstead of using a different function pointer table for ES 1.x and ES 2.x,\nwe use a single one that is the union (sort|uniq) of both tables. Two\ninstances of this table are initialized with pointers to GL ES 1.x and GL ES 2.x\nentry-points.\nWhen a context is created, we store its version number and when it is bound to a\nthread we set the approruiate table based on the stored version.\n\nThis introduce no penalty while dispatching gl calls to the right API version.\n\n[Pending Dr No approval for MR1]\n"
    },
    {
      "commit": "6261ab542262d004d53b77abc11968ddb26eba52",
      "tree": "f2be4bf5d50ba69697ececc0073819c12dd93811",
      "parents": [
        "ee110be02256b816ac6d863e39cb8b11b8071baa"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Oct 09 18:04:58 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Oct 09 18:23:08 2009 -0700"
      },
      "message": "Revert \"egl: temporarily also include eglTerminate-\u003eeglInitialize hack for 8k\"\n\nThis reverts commit ed5ecdba36648973be3033a045e2ece8bf039e4a.\n"
    },
    {
      "commit": "b96df8548ee80e581e6851d7d4529add769c8a8d",
      "tree": "be6f1c5450eb03622b3bd63b0bc58a643e021d5b",
      "parents": [
        "46b2df153fccf7f918ee5d7d747c208bdd2d55f4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 08 15:58:11 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 08 15:58:11 2009 -0700"
      },
      "message": "add a way to easily catch and log GL errors (compile time flag)\n"
    },
    {
      "commit": "ed5ecdba36648973be3033a045e2ece8bf039e4a",
      "tree": "898d8228d551bf9f7a948b5379e21162064050b7",
      "parents": [
        "f075b4e713c4e10e4cea12c856fcf4aaab9c29d4"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Sep 25 16:18:27 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Sat Sep 26 01:00:49 2009 -0700"
      },
      "message": "egl: temporarily also include eglTerminate-\u003eeglInitialize hack for 8k\n\nChange-Id: Id5c51e54e733b24e5d5d5de0dcca84ac53afd3a9\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "40621774ec648c7d0089f66b4e3aeb94e4232769",
      "tree": "929189e75582bfc717120d25051dbda250def575",
      "parents": [
        "0647b580aa7874311fc77b659e4f646750ddd74e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 20 16:01:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 20 16:07:26 2009 -0700"
      },
      "message": "log an error when loading an existing GL driver fails\n"
    },
    {
      "commit": "94263d79234778277959c5ec0cc3f2182cc9df0b",
      "tree": "b7b10fa4c21367f49483938a18c5be906d750d84",
      "parents": [
        "048d51b9f51e646046b9a7ff5153723a27200138"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 24 21:47:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 24 21:47:13 2009 -0700"
      },
      "message": "fix a bug recently introduced where EGL couldn\u0027t be initialized again after it had been terminated once\n"
    },
    {
      "commit": "4a34e888ae328256febbcd6caf603a9c5834b913",
      "tree": "e06b069befa16dd78faceb1adfa85ec9ac5fed3b",
      "parents": [
        "bfcfb7eec61bd196cfd91f7b2c5715751308c048"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 21 02:18:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 21 19:45:44 2009 -0700"
      },
      "message": "first step for fixing [2066786] EGL object lifetime management doesn\u0027t respect the EGL spec\n\nthis change fixes the lifetime mgt of EGLSurface, EGLContext and EGLImageKHR in the EGL wrapper.\nEGLDisplay is still somewhat bogus and libagl\u0027s EGL is still incorrect.\n\nThe idea of the change is that EGL objects are put in a list when created and removed when destroyed.\nBefore each use, we first verify if the object is in the list and if so a reference is taken and kept\nfor the scope of the whole EGL API being called, if not, an error is returned.\n\nUpon object destruction, the object is simply marked as \"terminated\" (this is not protected by a lock\nbecause it doesn\u0027t really matter). This flag is only used to deny access to the object by other APIs\nwhile it\u0027s still valid (for instance current or being used by another function in another thread).\nA reference is also removed and the object can then actually be destroyed when going out of scope.\n"
    },
    {
      "commit": "82fd4fce16b9bbde25d044acc86ddf7306ebdd10",
      "tree": "5d831d3f987bb6d1d62d8bca692ce4c5218c6432",
      "parents": [
        "dd8cb62bdf48ec0096c0ed665996a25320d477e2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 20 19:09:34 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 20 19:09:34 2009 -0700"
      },
      "message": "fix a bug in ComponentSizeChooser where it could pick a software EGLConfig instead of a better h/w one.\n\nWe now just try to honor the stencil / depth buffer \"at least\", while doing a \"shortest distance\" on the colors.\n"
    },
    {
      "commit": "dcebf6f65a890083545a8c191fcdc2522bfd035d",
      "tree": "3659d5b1a1ea32cc219445c9e4ebe08a822e48c9",
      "parents": [
        "2b8954809e7de900e2c159c255d5237ae6f0e6f8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 18:07:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 18:07:06 2009 -0700"
      },
      "message": "fix bug [2021677] egl driver unloaded after eglTerminate() is called\n\nrefactored the code so that:\n- EGL APIs that can be called before or after eglInitialize() will work by loading the drivers first\n- make eglGetDisplay() a lot more efficient\n- make sure that EGL drivers are loaded in a thread-safe way\n- don\u0027t unload the drivers upon calling eglTerminate(), they\u0027re now never unloaded, since there is no safe way to do it (some thread could be running)\n- updated our EGL version to 1.4\n- return better error codes if errors happen during initialization\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": "997d1070788e312edb4c5e5212dc90ddde7ac963",
      "tree": "80473c142d0d538d5ee61a1a8abab9ff3ed340eb",
      "parents": [
        "f1db4aec6569d7cf9e1fb84f1d9c1292032eac30"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:21:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:23:03 2009 -0700"
      },
      "message": "log opengl-call-with-no-context only once per thread, instead of for each function call\n"
    },
    {
      "commit": "c902bf8f133e0a60a888fbc2e86f66fcbc0f0430",
      "tree": "f3e5b7e805c2d4cfe2b085c1a3c0036291f9a465",
      "parents": [
        "e1c00aab871066935f68c92d39a82ed61e71d812"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 29 11:10:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 29 11:10:29 2009 -0700"
      },
      "message": "GLESv2 couldn\u0027t be loaded due to wrong path specification\n"
    },
    {
      "commit": "2eedb2515b733aaba0a92944def8156ef379e0da",
      "tree": "7ca9a803e0ed78b439d3fa66e9087bf2d749da02",
      "parents": [
        "e7622f3901234f238677c696a31c37838d315e6d",
        "46e28db8818332e3cda4cc410cc89a1ed7ce4db6"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 17:35:26 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 17:35:26 2009 -0700"
      },
      "message": "am 46e28db8: Merge change 6713 into donut\n\nMerge commit \u002746e28db8818332e3cda4cc410cc89a1ed7ce4db6\u0027\n\n* commit \u002746e28db8818332e3cda4cc410cc89a1ed7ce4db6\u0027:\n  fix for [1969185] valgrind errors in new gl stuff\n"
    },
    {
      "commit": "ab1cf3efd3b884a90170a82744f7ae508d51cf6e",
      "tree": "b973a089ed862e2816e14386ee41c2e03a5567c5",
      "parents": [
        "4af0a709ee08e8ae43f49d8fc5c9cae142aaf2c4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 17:33:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 17:33:15 2009 -0700"
      },
      "message": "fix for [1969185] valgrind errors in new gl stuff\n"
    },
    {
      "commit": "92a3ed43645150a79b5abdc3508ca7e4f64aba89",
      "tree": "ba2660d1e759b2d7fcae72be56489578def07c9d",
      "parents": [
        "42a3265cfb93f28d977353b8fe7a8b350de09fd0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 07 16:18:18 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jul 07 16:18:18 2009 -0700"
      },
      "message": "Make opengl loader use an absolute path.\n"
    },
    {
      "commit": "c1e3ec555b79b1e45fccbdf0bbc8ac2d51902860",
      "tree": "67d08ce1adc9ddfedc790b907ef3de15041e00d9",
      "parents": [
        "3a7e1832ac940cf5b8f92d3c3e8e8e5303c3c34e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 22:37:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:02:44 2009 -0700"
      },
      "message": "Add eglGetRenderBufferANDROID() extension, which returns the current render buffer as an android_native_buffer_t*\n"
    },
    {
      "commit": "3a7e1832ac940cf5b8f92d3c3e8e8e5303c3c34e",
      "tree": "94a910da72d31fbf8c5c684303df7a7d7dc4ce25",
      "parents": [
        "2eab9d8d7034ef05cead1ee26667a75061b5f0aa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:01:11 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:01:11 2009 -0700"
      },
      "message": "fix [1942438] eglGetCurrentSurface() returns bogus value\n"
    },
    {
      "commit": "a1254616d62d470b129a501193f15d50045cd3ae",
      "tree": "8c066ce7401cac9a7e35cc89e064fca9b73b2568",
      "parents": [
        "5277103db9033226814edc8fcba6f4ba4e846678"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 23:59:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 23:59:16 2009 -0700"
      },
      "message": "fix [1942438] eglGetCurrentSurface() returns bogus value\n"
    },
    {
      "commit": "4098d78b3507bfecce9f7a8a4b5d334c7842ff88",
      "tree": "4b1e5ada08d6c2976a401483190ad28451f1f47c",
      "parents": [
        "b4b4c11f82e88f9a1cecd97460a9fcc192b37612"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 18:30:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 18:30:22 2009 -0700"
      },
      "message": "remove some spurious debuging LOGD\n"
    },
    {
      "commit": "b4b4c11f82e88f9a1cecd97460a9fcc192b37612",
      "tree": "bd1c266012b39e4f6c7e0c961d20842d6f1ee1e9",
      "parents": [
        "a650aaa3918f47ceb116ce8dfd3f1e423687fa69"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 18:26:58 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 03 18:26:58 2009 -0700"
      },
      "message": "fix/clean these Android.mk following dbort and joeo\u0027s comments\n"
    },
    {
      "commit": "9d17c057bdb9da5fa991a2c3efebe453106ca0a7",
      "tree": "13c7d86fc365a810213910f2ccf62967db55831b",
      "parents": [
        "e9d7445acea438b731273ac91114426bf1e5056c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 28 17:39:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 28 20:31:40 2009 -0700"
      },
      "message": "implement a real loader for EGL drivers\n\nwe now look for a config file in /system/lib/egl/egl.cfg that describes the association of a display to a driver.\nthese drivers are named: /system/lib/egl/lib{[EGL|GLESv1_CM|GLESv2] | GLES}_$TAG.so\n"
    },
    {
      "commit": "2820bd4eda4c75457007f11eb9d98da9bff24a27",
      "tree": "4b076f3e7ffbe4ebf272b2d9b6733b3ac86f9988",
      "parents": [
        "f5fbc7983a85f42ec891decbae3581185c8428ab"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 20:38:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 20:38:06 2009 -0700"
      },
      "message": "Added most of the support needed for GLES 2.x\n"
    },
    {
      "commit": "16da7959a072da0d5fdc3a774fa01fb4d811d46f",
      "tree": "f06ea8c06f935e8e429e0224825c8fc5bfcbab8b",
      "parents": [
        "b204d4f12773ec67c7f0ded41cb111018f154476"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 17:58:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 17:58:36 2009 -0700"
      },
      "message": "make sure to fail to software when the h/w renderer cannot be initialized\n"
    },
    {
      "commit": "b7b648f367e76e6f0bf5f6e01ad6af112e6ec5fc",
      "tree": "a2c7216dbd9e6cf26705c5632782df6036b51e6e",
      "parents": [
        "7e4c34329c98fc4279d658387b65ef4d041872a8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 13:42:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 13:42:18 2009 -0700"
      },
      "message": "libGLESv1_CM.so doesn\u0027t need to depend on libutils or libui\n"
    },
    {
      "commit": "11be99de5f3901c32130ea4c5fd52e62e1845e73",
      "tree": "7d054e76be7e18c550518608508925a73c2b188e",
      "parents": [
        "59aa044a1098e49823d59905731f28465003e983"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 17 18:50:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 17 18:50:16 2009 -0700"
      },
      "message": "remove libEGL and libGLESv1_CM dependencies on libutils and libui\n"
    },
    {
      "commit": "11abc8a36d639775b05a0471c9ea45d83fa19e56",
      "tree": "edf234f013ef3c88507f81dea65b8187cc672564",
      "parents": [
        "6ec72e3fa9cdf9e896f3042fb1b1b4f3f6cea541",
        "e52a5a5fca18348728dfc5609b42b88e9cc7ef98"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 14 22:44:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 14 22:44:23 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\topengl/libagl/Android.mk\n\topengl/libs/Android.mk\n\topengl/libs/egl_impl.h\n"
    },
    {
      "commit": "3cc68d28c7636fc8d0524155fc062991e7f85f63",
      "tree": "d5107bdbc3217770e11f71ec8f746b5f2da37236",
      "parents": [
        "8331f72078051cdf5a26230ee819f7ef7f9fcc24"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 13 00:19:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 13 00:19:22 2009 -0700"
      },
      "message": "should help fix the Simulator build.\n"
    },
    {
      "commit": "8331f72078051cdf5a26230ee819f7ef7f9fcc24",
      "tree": "16b20bd6033861b728038ebf7ac735cf3e739b00",
      "parents": [
        "2accb31239cf7a3cad77b51baed4b23934636e5b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 15:35:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 17:18:55 2009 -0700"
      },
      "message": "remove the gl{Vertex|Color|TexCoord|Normal}PointerBounds() \"extension\" fro eglext.h\n"
    },
    {
      "commit": "778fb15a010bdac0a3721193ff125fcec8e7312c",
      "tree": "516ef670197815eee323c87aa36b1997fd27c8a8",
      "parents": [
        "3a04bd324aa0d29d0adb9d3fbb9c60b7e1694a28"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 15:59:34 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 16:05:23 2009 -0700"
      },
      "message": "should fix the build.\n"
    },
    {
      "commit": "cb29e6237d7f471a28f8e73116e131f257d9842f",
      "tree": "c27cbc44f6783ca09d8cc3a1881c229c1265dbcb",
      "parents": [
        "ed3b804f2cc61029cf2969cbfa499ea230c22bb0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 15:23:38 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 15:23:38 2009 -0700"
      },
      "message": "only export the GL entry-points, hide everything else.\n\nConflicts:\n\n\topengl/libagl/Android.mk\n\topengl/libs/Android.mk\n\topengl/libs/egl_impl.h\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": "fa6eda01a9f3df0102ce6a65302c8674cc9c7e50",
      "tree": "a0c1b31bd8e162132c54a2ef8521b3ed6cf8cad1",
      "parents": [
        "d504605919a62902e10cd13536390ffce84a3326",
        "072868a4d33740ee023b7364dcb38f4fc14bd8b0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 30 14:43:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 30 14:43:18 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\tlibs/surfaceflinger/Layer.cpp\n\tlibs/surfaceflinger/SurfaceFlinger.cpp\n\topengl/libagl/egl.cpp\n\topengl/libs/EGL/egl.cpp\n\topengl/libs/GLES_CM/gl.cpp\n\topengl/libs/GLES_CM/gl_api.in\n\topengl/libs/gl_entries.in\n\topengl/libs/tools/glapigen\n"
    },
    {
      "commit": "799af8dd1dd7e01c9ded23bed30749e20f68c8e5",
      "tree": "c52e2d5b8bdec4b8f353cd346fcc0ae3a2749287",
      "parents": [
        "9e8ca9a19c8625b22f37c2f8c0ac841d1f10d25a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 18:16:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 18:16:44 2009 -0700"
      },
      "message": "oops forgot to remove a LOGD when loading an opengl driver\n"
    },
    {
      "commit": "04ae634a5ab8398c5d10dcac94da25101a141300",
      "tree": "2f5477d8c85bbd11684b0f820f80cd60b48b9961",
      "parents": [
        "1feecd831003e693df95521a2baae4b9aec28843"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 23 19:57:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 23 19:57:10 2009 -0700"
      },
      "message": "Make sure to map undefined OES functions to their non-OES counterpart if it exists.\n"
    },
    {
      "commit": "1feecd831003e693df95521a2baae4b9aec28843",
      "tree": "3b0af8634efd41185ced91a7a77996e9075816b9",
      "parents": [
        "24b62d0c41cf37ade751fe96a4888fbe7f61eb5a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 23 18:05:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 23 18:05:44 2009 -0700"
      },
      "message": "use gl.h to generate the *.in files. we are now supporting the full gl.h and glext.h apis.\n"
    },
    {
      "commit": "e29254e708bb94d0f785a00926164a0dbb0dad93",
      "tree": "65c92fe2698810d6d88877230d3c2e25f4f53e61",
      "parents": [
        "644cf62660c87a9b8d5bcb22412cc2ad2aeea291"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 22 18:24:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 23 13:45:48 2009 -0700"
      },
      "message": "integrate some OpenGL ES changes back from master_gl in preparation of opening GLES to the NDK.\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": "1badb712b94f5d4a14ca8c3bdb55c215a4915000",
      "tree": "46cfe5f76368b7cb5355f8439bf4268fefd16ba0",
      "parents": [
        "15ba27802eb23e01f4fada11f3fa1f35925eab49"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Wed Mar 25 15:12:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 25 15:12:17 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@142578,142578\n"
    },
    {
      "commit": "4c7533cfc81a0dda4c25355e86558199accab3ea",
      "tree": "cf422c41de1377eb09736edd83b8aabd196da5fa",
      "parents": [
        "7d1e577d5f7ae96bfc533e1c73a3a6a272a4a16d"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Tue Mar 24 22:48:26 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 22:48:26 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@142484,142484\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": "076357b8567458d4b6dfdcf839ef751634cd2bfb",
      "tree": "efbb2fd6f1dc67d2d606382fc3b82983e7cb2e1f",
      "parents": [
        "3dec7d563a2f3e1eb967ce2054a00b6620e3558c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:04:24 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "3dec7d563a2f3e1eb967ce2054a00b6620e3558c",
      "tree": "aa3b0365c47cb3c1607c0dc76c8d32b4046fc287",
      "parents": [
        "15ab3eae2ec3d73b3e8aa60b33ae41445bf83f4b"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:33 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "3001a035439d8134a7d70d796376d1dfbff3cdcd",
      "tree": "343ccdba15a594ff6e50c874a145232753315a30",
      "parents": [
        "da996f390e17e16f2dfa60e972e7ebc4f868f37e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:31 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:31 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132276\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"
    }
  ]
}
