)]}'
{
  "log": [
    {
      "commit": "d1ad5e62fda248c6d185cde3cb6d9f01a223066c",
      "tree": "6e2dcdaaab6c38f46f36b944f9c4212c485ff3e2",
      "parents": [
        "951ecb77c5dfe69a4d19d26429286111333ab123"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon May 05 12:50:38 2014 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu May 22 14:46:59 2014 -0400"
      },
      "message": "Inspect SkShader to determine hw shader.\n\nInstead of duplicating internal info about SkShader, inspect the\nSkShader installed on the SkPaint.\n\ncore/java/android/view/GLES20Canvas.java:\nRemove setupModifiers, nResetModifiers, and nSetupShader.\n\ncore/jni/android/graphics/Shader.cpp:\nRemove calls to create/destroy the (previously) attached SkiaShader.\n\ncore/jni/android_view_GLES20Canvas.cpp:\nRemove native code for setupShader and resetModifiers.\n\ngraphics/java/android/graphics/BitmapShader.java:\ngraphics/java/android/graphics/ComposeShader.java:\ngraphics/java/android/graphics/LinearGradient.java:\ngraphics/java/android/graphics/RadialGradient.java:\ngraphics/java/android/graphics/Shader.java:\ngraphics/java/android/graphics/SweepGradient.java:\nRemove code keeping track of native SkiaShader.\n\nlibs/hwui/Caches.h:\nInclude Extensions.h.\n\nlibs/hwui/DeferredDisplayList.cpp:\nCompare shaders on the paint, instead of on DrawModifiers.\n\nlibs/hwui/DisplayList.cpp:\nlibs/hwui/DisplayList.h:\nRemove vector of SkiaShaders.\n\nlibs/hwui/DisplayListOp.h:\nAccess the SkShader on mPaint.\nRemove SetupShaderOp and ResetShaderOp.\n\nlibs/hwui/DisplayListRenderer.cpp:\nlibs/hwui/DisplayListRenderer.h:\nRemove resetShader, setupShader, refShader, and mShaderMap.\n\nlibs/hwui/FontRenderer.cpp:\nPass SkShader to setupDrawShader and setupDrawShaderUniforms.\n\nlibs/hwui/OpenGLRenderer.cpp:\nlibs/hwui/OpenGLRenderer.h:\nAdd LayerShader, a class inheriting from SkShader, to mimic the\nbehavior of SkiaLayerShader. Unlike SkiaLayerShader, it can be set on\nthe SkPaint so it can be inspected later.\nSet a LayerShader instead of a SkiaLayerShader.\nsetupDrawShader and setupDrawShaderUniforms now inspect an SkShader\npassed in.\nInspect SkShader instead of mDrawModifiers.mShader.\nRemove resetShader and setupShader.\nsetupDrawColorUniforms now takes a boolean indicating whether there is\na shader.\nAdd an inline function for accessing the SkShader on an SkPaint.\nIn setupDrawBlending(Layer*, bool), do not check the shader (which will\nnever be set), but do check whether the color filter may change the\nalpha (newly fixed behavior).\nIn setupDrawBlending(SkPaint, ...), check the SkShader and whether the\ncolor filter affects alpha (the latter is new behavior).\n\nlibs/hwui/Renderer.h:\nRemove pure virtual functions setupShader and resetShader.\n\nlibs/hwui/ResourceCache.cpp:\nlibs/hwui/ResourceCache.h:\nRemove functions for refing/unrefing shaders.\n\nlibs/hwui/SkiaShader.cpp:\nlibs/hwui/SkiaShader.h:\nMuch of this code was redundant and has been removed.\nConvert structs into class with nothing but static functions for\ncalling describe/setupProgram.\n\nlibs/hwui/TextureCache.cpp:\nlibs/hwui/TextureCache.h:\nUse the SkPixelRef as the key to the bitmap Lru cache, since shader\ninspection will provide a different SkBitmap pointer (though it will\nhold the correct SkPixelRef with the correct generation ID).\n\ntests/CanvasCompare/src/com/android/test/hwuicompare/DisplayModifier.java:\ntests/CanvasCompare/src/com/android/test/hwuicompare/ResourceModifiers.java:\nUpdate manual test to have more shaders: radial, sweep, compose,\ninvalid compose.\n\nBUG:10650594\n\nChange-Id: Iaa7189178bda1c55f96da044d2a9fa602ba36034\n"
    },
    {
      "commit": "a64a2bef1048db5a742843f1e3bea9e80d0defc5",
      "tree": "7c66edd8039821862469a79602220a8041d01b10",
      "parents": [
        "a7e089f28c494f3c34e77f924b273acdbcf3ddd2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 14 14:17:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 14 17:27:52 2014 -0700"
      },
      "message": "Combine projection matrix, and viewport management\n\nMerge management of ortho projection matrix with the viewport size,\nsince they should always be changed together.\n\nChange-Id: Iccb8f30828f4fb7848999ac54852e7ed2d6f2eb1\n"
    },
    {
      "commit": "ddc52285ca6fd147f442a21e90e0e4702a10d304",
      "tree": "67d52cacd41be03c2166e87e88f977e970c4b044",
      "parents": [
        "7b51185362df5bf1c4844c171350197a2fd2a4c1"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Sun May 11 16:16:17 2014 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Sun May 11 16:16:17 2014 +0200"
      },
      "message": "Revert \"Simplify projection matrix management.\"\n\nThis reverts commit 0efaa71d5414287ed4beac0a88cf76f7e33a1e74.\n"
    },
    {
      "commit": "0c0ec26366045e515790a6acdab782965efc63b4",
      "tree": "e33da53a3d1082d9e1bc242ca7995b975a93c887",
      "parents": [
        "f992066731fb27a6d9fc8bae673c638093610292"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 16:11:14 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 16:11:14 2014 -0700"
      },
      "message": "Simplify projection matrix management.\n\nStore in and use from snapshot, and remove the kFlagOrthoDirty flag,\nas it\u0027s redundant with kFlagIsFboLayer.\n\nChange-Id: I2bd380192d50117f4ce1fd2058213669a886f406\n"
    },
    {
      "commit": "e1f788b3e216329c570929eb4526332ae0db14d1",
      "tree": "20ebf8e839e813db8085fe4412206c1861075ba4",
      "parents": [
        "809146690d03b3ec3404c37c1fb467f7b7234692",
        "e10e827ed68b0a9487cf8dd1fc545f9a09517ae9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 09 18:02:53 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 09 18:02:53 2014 +0000"
      },
      "message": "Merge \"Rename matrices for consistency\""
    },
    {
      "commit": "e10e827ed68b0a9487cf8dd1fc545f9a09517ae9",
      "tree": "9efe760385a3a85206aaf8b7d558d29a30fc39fb",
      "parents": [
        "a2604b738e7298fd926482ec5d94356b37a0d807"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 14:28:26 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 14:28:26 2014 -0700"
      },
      "message": "Rename matrices for consistency\n\nThe projection matrix no longer contains viewing transformation, and\nhas thus been renamed.\n\nChange-Id: I4f85ccdac97f4cb4f987bb05c389816680f1c94f\n"
    },
    {
      "commit": "e4aa95e3627226bcb0d8cc3e42dca6e4df8f421c",
      "tree": "c55de52d9180486924bfd5ca87450fcee4858d2d",
      "parents": [
        "a2604b738e7298fd926482ec5d94356b37a0d807"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 13:57:05 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 08 13:57:05 2014 -0700"
      },
      "message": "Add logging utility methods\n\nChange-Id: I0f316830dcc0bbf438292a6d0fbe9f8154368500\n"
    },
    {
      "commit": "5b554f010358d8f47e31d92a42aa3edc4a71ec47",
      "tree": "3adcf06e0c8b18fe725188888031870e485e6be0",
      "parents": [
        "cf501a60b8817acdea2368eb56225ebc831b1559",
        "c29a0a4664a4b9871fadd668b632469a0db240b9"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu May 08 14:41:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 08 14:41:47 2014 +0000"
      },
      "message": "Merge \"Avoid caching shadow properties in Java \u0026 HWUI.\""
    },
    {
      "commit": "832b151465ed81c43e59891d5eebe62128b21fbb",
      "tree": "b631a4eab7c5b7b7f3d98e808e88bf0965c324cf",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "message": "Cleanup attachFunctor\n\n Bug: 13961296\n\nChange-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d\n"
    },
    {
      "commit": "c29a0a4664a4b9871fadd668b632469a0db240b9",
      "tree": "33e324bd3698bf9c100f998389694e4baeefaa57",
      "parents": [
        "ae84e20b2a0cb77223d40f55c71011d3ae8c71c7"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 31 13:52:39 2014 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed May 07 09:36:04 2014 -0400"
      },
      "message": "Avoid caching shadow properties in Java \u0026 HWUI.\n\nbug: 10650594\nChange-Id: I6f57df002710bb0567ed7e53fc0bfe96cfd504b8\n"
    },
    {
      "commit": "64ab917e5eb3269c72c795781a512d4ee7d9d7a4",
      "tree": "0fc75966319a9df191a1687d445ce0ab8149c207",
      "parents": [
        "e5c749085e793bfa931db09cf3ce4559be255663",
        "f5be3ca5cc5b3a10747b577f60059a99862bb9a8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 01 01:31:11 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 01 01:31:12 2014 +0000"
      },
      "message": "Merge \"Add more shadow control knobs\""
    },
    {
      "commit": "f5be3ca5cc5b3a10747b577f60059a99862bb9a8",
      "tree": "a35aca46d1a60b88df40e8015c6a1815acccdb61",
      "parents": [
        "7a70981fc1eead712d62d9502f6dccb963779ae8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 30 18:20:03 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 30 18:20:30 2014 -0700"
      },
      "message": "Add more shadow control knobs\n\nChange-Id: I1ff500bf429029a97b681ced9df652f4ee9f1332\n"
    },
    {
      "commit": "0d575b084fe5a691c2a99163515de0dc54f66e18",
      "tree": "e07fac82ad6a2fbf805d62877865e2a84c07dee6",
      "parents": [
        "ecdc6fdb64a41dd3bd5867308cb0c8a5b941146f",
        "2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Apr 29 16:21:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 29 16:21:51 2014 +0000"
      },
      "message": "Merge \"Make sure the theta is correctly represented and incoming polygon is CW for shadow.\""
    },
    {
      "commit": "2e023f3827dfc0dfc1ed7c3dd54d02b4a993f0b4",
      "tree": "ba319249cf92343e7d7488480a9646a235566ef9",
      "parents": [
        "7940dc57e3ffcf9c4a33375215f3a42250fa896c"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 28 16:43:13 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 28 16:43:13 2014 -0700"
      },
      "message": "Make sure the theta is correctly represented and incoming polygon is CW for shadow.\n\nNow the theta \u003d 0 should be on +x axis.\nAnd cos(theta) should correctly represent x value.\nWithout this fix, the poly theta (from atan2) can be wrongly rotated 90 degrees.\n\nAlso, make sure the incoming polygon is CW for the shadow system.\nThis fix visual artifacts in recent regression for spot shadows.\n\nbug:13553955\n\nChange-Id: I9bbf54db094e7f133326da4dae4610962da849c1\n"
    },
    {
      "commit": "3f085429fd47ebd32ac2463b3eae2a5a6c17be25",
      "tree": "2930b7ee50ce98092fde97546a3d546c817038f1",
      "parents": [
        "fbb54b8363b66e0b22d519ee20d1a50e8b5340ee"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 15 16:18:08 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 23 16:15:11 2014 -0700"
      },
      "message": "Clip TouchFeedbackDrawable effect to receiver Outline\n\nProjected RenderNodes are now wrapped with a ClipRect or masked\nSaveLayer, so that they are clipped to the outline of the projection\nreceiver surface.\n\nChange-Id: I1d4afc1bb5d638d650bc0b1dac51a498f216773e\n"
    },
    {
      "commit": "8de65a8e05285df52a1e6f0c1d5616dd233298a7",
      "tree": "267faf9277b441030b6276ca6a3a34424bb9aee8",
      "parents": [
        "10bdb4b9e966f0a3d8e1099bf8eff4c41c31981c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:23:38 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:48:00 2014 -0700"
      },
      "message": "Switch DisplayListData to a staging model\n\n Bug: 13912977\n\nChange-Id: I5b2f664e797be22a58300964f57ceb4fab60528c\n"
    },
    {
      "commit": "087bc0c14bdccf7c258dce0cdef46a69a839b427",
      "tree": "cab73aeed8e9a0bc8e74243a35c026ab0b321e08",
      "parents": [
        "ce16215d7b4d9bedfc62e172dc44ab439afef13a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 04 16:20:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 14:53:08 2014 -0700"
      },
      "message": "Refcount RenderNode\n\nChange-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752\n"
    },
    {
      "commit": "c75db8266b352ef3a7a6b76654f770d7a24d547a",
      "tree": "a39e68ee43ca2c325da94532f4eff3a80940bf13",
      "parents": [
        "903d6407b0f5fcf12373daadcce90aaad44a5491",
        "750ca6dbdb259aea0ca5b77380a9303e586ef3ea"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Sat Mar 29 01:41:50 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 29 01:41:50 2014 +0000"
      },
      "message": "Merge \"Remove kStatusInvoke \u0026 kStatusDraw\""
    },
    {
      "commit": "750ca6dbdb259aea0ca5b77380a9303e586ef3ea",
      "tree": "c24155dbc56810e618ee8a837470145d77aee38d",
      "parents": [
        "0e14f2d45557527242f27ce7de9027e6ccaa45d6"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 16:33:18 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 16:43:15 2014 -0700"
      },
      "message": "Remove kStatusInvoke \u0026 kStatusDraw\n\n They are unused\n\nChange-Id: I44ecf1164dc6bc1b09438e733976d5a97a25f00e\n"
    },
    {
      "commit": "b265e2ca50b6ceb2fd2987ef1f7d063b1bde19ae",
      "tree": "c5dd068e025de701ebfdeacf00247368fbecb12a",
      "parents": [
        "08c96b5515f061f61e13b348f6022ce7c586e4c4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 27 15:50:09 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 28 14:43:22 2014 -0700"
      },
      "message": "Support shadows on the root RenderNode\n\nbug:13211941\n\nCleans up some of the RenderNode method naming\n\nAlso removes unnecessary clip/save/restores, clipping shadows\npredictably, as drawn by the parent, before drawing (and clipping,\netc.) the shadow casting child.\n\nChange-Id: I795115e1fb869bbbdd7be43e279b97490fecc7e0\n"
    },
    {
      "commit": "024433f89684e1f9cb7b15ade7c480c9346fbe4d",
      "tree": "981c0a0fdaa0b70be66899855806c1ce879b579e",
      "parents": [
        "1dd9c53a40b7c147767c63e10a47eb5cb6f8e197"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 26 13:19:14 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Mar 27 16:01:04 2014 -0700"
      },
      "message": "Disable shadow overdraw avoidance in the inverse clip case\n\nThe caster is effectivly transparent, so skip the optimization just as\nis done for alpha \u003c 1.0\n\nChange-Id: I3d294222adf0137e20c1fb5808313d487e92e0a8\n"
    },
    {
      "commit": "8c271ca63b62061fd22cfee78fd6a574b44476fd",
      "tree": "e4b6a9d863aec687273be89373d2fc432cf29c30",
      "parents": [
        "5e44cadfd69c210c11f80cfe599718617a0e6676"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 25 10:33:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 25 16:03:48 2014 -0700"
      },
      "message": "Add private circular reveal API on View/RenderNode\n\nChange-Id: I139c8e12b354083149a665f6768f3f6931a8dd15\n"
    },
    {
      "commit": "bfb07a03777af424e99bca1dac4c903aaf44e99d",
      "tree": "a34ac04cc56a06ea54bc7010bb1169f71d9f355b",
      "parents": [
        "41c2d2cec3f46b28f535e9cd7f5b9da02280ccfe"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 21:00:18 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 21:00:18 2014 -0700"
      },
      "message": "Move where updateProperties is called\n\nChange-Id: I27da448996019094c44487ce28c5689d098d6535\n"
    },
    {
      "commit": "d0a0b2a3140bfb1819a116413ce9d81886697a07",
      "tree": "0040f371f29280deb83d1fd55f2db86e30d58c37",
      "parents": [
        "de02cdc1e95cea19b2ddef26d60ad1d109bd507c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 20 16:28:56 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 24 15:31:34 2014 -0700"
      },
      "message": "Add stagingProperties\n\nChange-Id: Ic7de551f8843fd70a77f738e33028e25c020bb3c\n"
    },
    {
      "commit": "af6f7ed8dd4288a41d0a07a1f0f0be7d6d035b33",
      "tree": "1004e5d8a1120b83102fd82e0e9484f410c9d319",
      "parents": [
        "31dc8f701fb14e185bf1c1b35d68bd7d1a42a54a"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 18 17:25:49 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 20 15:25:47 2014 -0700"
      },
      "message": "Early rejection on shadows which are outside of the clip bound.\n\nAll the computations are estimated using bounding box.\nTODO: Spot shadow could have more accurate but also more expensive methods, we need\nmore experiments to decide.\n\nChange-Id: I9c10c419576cee55daf0f9f278b0db78cb847447\n"
    },
    {
      "commit": "50ecf849cb7ccc3482517b74d2214b347927791e",
      "tree": "ae48db1ce35bf2d35b5bd126dc78fd5cca0a5d4e",
      "parents": [
        "de69575dd1bdafabda8afda8b4251b830ba0c551"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 11 16:52:30 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Mar 17 10:10:02 2014 -0700"
      },
      "message": "Create one hole inside the umbra area to avoid overdraw.\n\nbug:13439450\n\nChange-Id: I859575196bd5a3029f447883025a6ec3a1f1face\n"
    },
    {
      "commit": "361fd3d2ff302d60a49ae2d2d1cc61cb5fdb0ece",
      "tree": "d658ae309a8b5aa44e487083aba0c0886f9416a5",
      "parents": [
        "141d88916647cada1c90448d5739a927fa508724",
        "e18264b079481a244b30e3f71012c53bbd861f92"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 21:03:03 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 12 21:03:03 2014 +0000"
      },
      "message": "Merge \"Rename DisplayList-\u003eRenderNode\""
    },
    {
      "commit": "e18264b079481a244b30e3f71012c53bbd861f92",
      "tree": "0127f3fc60aa351108ee8abd8ee180a5b193b03e",
      "parents": [
        "5b568aa04a91786962af1ab372b5a62481eea8cc"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "message": "Rename DisplayList-\u003eRenderNode\n\nChange-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0\n"
    },
    {
      "commit": "b98f2116f5896acb4b221015b22624a3c5d5a7fe",
      "tree": "4bf1d02992d5fd3d0b333eb5e042d7337a572667",
      "parents": [
        "d84133af441caed8102b2da79cdb6f50673b80cb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 17:42:29 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 12 11:19:42 2014 -0700"
      },
      "message": "Force shadow casters above the Z\u003d0 plane\n\nChange-Id: Ifee75414829d4bfb3c7aa6219f1f9bcfd50ff0c6\n"
    },
    {
      "commit": "b79a3e301a8d89b9e1b1f6f3d7fd6aa56610a6f0",
      "tree": "6b92898b802b665b62127766baa87e8261569062",
      "parents": [
        "e361ad7ab15fcf4919a56a6293689d968ee8dcff"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 12:20:17 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 12 09:44:41 2014 -0700"
      },
      "message": "Fix orthographic shadows projection, simplify shadow reordering\n\nSeparate matrix passed to shadow system into two parts, one for\ntransforming the polygon XY points (using the actual draw matrix) and\na separate one which respects correct 4x4 3d rotations and\ntranslations for determining Z values.\n\nChange-Id: I7e30a84774a8709df6b2241e8f51fc5583648fe8\n"
    },
    {
      "commit": "e361ad7ab15fcf4919a56a6293689d968ee8dcff",
      "tree": "19107b2e2deff5044db0580ab6701c2857d6a8e8",
      "parents": [
        "b26264948c01b097fe5bc12d5b486a759693ceb7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 10:48:43 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 11 15:41:40 2014 -0700"
      },
      "message": "Remove experimental perspective projection\n\nChange-Id: Iad688c8395ccd4673cc129973802b5f01dfb45ba\n"
    },
    {
      "commit": "67862524056ee2e73a94395139bb8bd0ec1ef38a",
      "tree": "20273dae825bf5256ca8703038f7357825d090c2",
      "parents": [
        "9f6a372ca08c657447ef4b8dc6c80a89202247f8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 28 12:26:34 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 28 12:26:34 2014 -0800"
      },
      "message": "Fix use of Skia deprecated methods\n\nChange-Id: Ib89c20fc94bcce29b7490d6f55c73492735befda\n"
    },
    {
      "commit": "da3f525759d4b875fd6a498cbe22f7bc9e53aa83",
      "tree": "9bee37b2bbc11f876f76a8e2398d3ebe2d4e877f",
      "parents": [
        "98bab263500b258025c9c6ca64f8aaff7dc914f4",
        "9757ac0b9d62f6aea5e47cfb375f445c78bb7897"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 27 22:20:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 27 22:20:31 2014 +0000"
      },
      "message": "Merge \"Fix TextureView texture filtering.\""
    },
    {
      "commit": "9757ac0b9d62f6aea5e47cfb375f445c78bb7897",
      "tree": "d17c80970154798e66dbf914974926b15fa33f61",
      "parents": [
        "5eb4adcbda0ff22e48716d3cf9356a9a720475b5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 25 18:50:17 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Feb 25 18:50:17 2014 -0800"
      },
      "message": "Fix TextureView texture filtering.\n\nbug:11748993\n\nTextureView should always be drawn with linear filtering if drawing a\nbuffer sized differently from the layer.\n\nThis fixes a bug where TextureViews that were sized differently from\ntheir contents wouldn\u0027t be drawn with texture filtering, causing\nvisible scaling artifacts.\n\nChange-Id: I8a5d27452fe7269ec53896992f37cff51e3ce15a\n"
    },
    {
      "commit": "8198c3a8f525c07e2b848852f6ad3e351e3b5461",
      "tree": "342d10b2f40fd3db65e41cb98b7ee29412b34683",
      "parents": [
        "a1f1a3c573acd91024fda0ceb3b921c73b186963",
        "63d41abb40b3ce40d8b9bccb1cf186e8158a3687"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 25 23:20:06 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 23:20:06 2014 +0000"
      },
      "message": "Merge \"Use pre-computed index to draw the shadow.\""
    },
    {
      "commit": "63d41abb40b3ce40d8b9bccb1cf186e8158a3687",
      "tree": "53ef1d5d691afa904e390e211f6adde28fb5f4ae",
      "parents": [
        "ef94c6f88fbb1deb095b1494378befcdb9722839"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Feb 14 13:13:41 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 25 14:18:25 2014 -0800"
      },
      "message": "Use pre-computed index to draw the shadow.\n\nAlso draw the umbra part as triangle fans instead of zig zag fashion.\n\nb/12840179\n\nChange-Id: Iaa5d15e77351acdd71f076bd8f9bb2d4d2b92faf\n"
    },
    {
      "commit": "919e95cc23d3567345719f2466e089682608638e",
      "tree": "b3ebd4482516c19781462af5c4fd330ce26afa16",
      "parents": [
        "550267f72b6217f797e7f93bb312ecbe6541ff49"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 21 17:13:45 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 21 17:15:12 2014 -0800"
      },
      "message": "Modulate shadow alpha by caster alpha\n\nChange-Id: Ibc4b3958feb3b5dba91d30af470d76555a6209c8\n"
    },
    {
      "commit": "674554fc36932ca50b15bba41ac6f650254d4e72",
      "tree": "ec0fc936ce4fdbd15d8bf6e15348676194855b8a",
      "parents": [
        "96f0369b25811319398a268071eb147fe14a09e3"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Feb 19 16:47:32 2014 +0000"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 20 16:20:33 2014 -0500"
      },
      "message": "Reapply \"Refactor setting an SkPaint onto a hwui Layer.\"\n\nThis reverts commit 90d0c75e94a32fb7d993fae69762820aabc2fcbb.\n\nChange-Id: Ie807761231edf7c848b019931dccbf466208c0be\n"
    },
    {
      "commit": "ef94c6f88fbb1deb095b1494378befcdb9722839",
      "tree": "d0917ce76760da1e439a94ee3ddabb10af2026dc",
      "parents": [
        "b9122c672e76923018198ab0eda07fa6a2145dbc"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Feb 13 17:09:45 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Feb 13 17:09:45 2014 -0800"
      },
      "message": "Separate spot and ambient shadow strength setting\n\nChange-Id: I4530e618b09a7f44b5382f8a40646c0ebf5f214c\n"
    },
    {
      "commit": "76d3a1b8d035d27bc80b0f2fc480a903bd001514",
      "tree": "a6346bbf593d565d89990f0bddecd2a5df92de9d",
      "parents": [
        "8852ab4357ffb653bafb36f3b9272866834f7a72"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Dec 10 12:28:58 2013 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 07 17:06:14 2014 -0500"
      },
      "message": "Removing SkiaColorFilter and inspecting the native object directly.\n\nbug: 10650594\nChange-Id: I4fcf66d008765afa0e35d011f58bc792183cb74f\n"
    },
    {
      "commit": "d44fbe55a9f434cb5bb0e34c143ba1445141990d",
      "tree": "782e860830dd48fb9b7e667d64a038a45045b936",
      "parents": [
        "8eea3ea5591e59f55cbb4f6b2b7e9363a285ced3"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Wed Feb 05 16:47:00 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Fri Feb 07 13:33:29 2014 -0500"
      },
      "message": "Keep the SkPaint used when creating a layer.\n\nThis will allow us to inspect the paint for thing other than\ncolor and xfermode, such as SkColorFilters and SkShaders.\n\nbug: 10650594\nChange-Id: I2c3ddd07a3966e1e77af34136307e2b59b2898c1\n"
    },
    {
      "commit": "a2fe7affd3d077ac163da90996cb2e5e0ca3b8d1",
      "tree": "42c447fe36d1eac576243ec2442e5b52dcbcc4c3",
      "parents": [
        "f3560a133e3ec19c698a8c9d6cfc7d17fd95adc5"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 28 17:25:06 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 30 16:04:16 2014 -0800"
      },
      "message": "Add initial hidden outline APIs\n\nBackground drawable outline usage and drawable outline calculation\nstill to come.\n\nChange-Id: I8c7539f1638f86e1f8eb11f4fe49f705f61d58ba\n"
    },
    {
      "commit": "5e1814e2ebf5614f8f4f7edd063e1a79bd929844",
      "tree": "38049d5e13a13fcec11ce969a8215733b58406c9",
      "parents": [
        "ab5e089585e01fd14ad7854391c10e6d8ae07144",
        "3783e70b557fe58f51d551242a42e7232e991c10"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 28 23:18:05 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 28 23:18:05 2014 +0000"
      },
      "message": "Merge \"Remove logging of DisplayList staleness\""
    },
    {
      "commit": "3783e70b557fe58f51d551242a42e7232e991c10",
      "tree": "71a91426fa2cef638fc2ad83566f8456d105d51f",
      "parents": [
        "2d434c8bdf5f980956854ea022db9588e66f445e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 27 14:26:14 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 27 14:29:37 2014 -0800"
      },
      "message": "Remove logging of DisplayList staleness\n\nChange-Id: Ie6b3af3065d4d10ec0bc9b419223d3458d297ea8\n"
    },
    {
      "commit": "15a07a21eb33e8ca1c7444944fe0541a53380c0c",
      "tree": "fa5dd5158982a1ef11d105ac463fb34b07087147",
      "parents": [
        "bb615a6ffbc8a051007163916f1ed085d10b5327"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "message": "Use path outlines to define shadow shapes\n\nFixes the simplifying assumption that shadow casters were always\nrectangular.\n\nJava side APIs + plumbing to pass down correct shapes still need to be added.\n\nChange-Id: Ic4fee90af15679951a44bb5cc6ae454b98c4c194\n"
    },
    {
      "commit": "bb615a6ffbc8a051007163916f1ed085d10b5327",
      "tree": "2ba39cf5b57deb8f00ba478de8f904918a51d0de",
      "parents": [
        "8435cf0d8b9e24715d5b310ed569fda918dcaa46"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 24 13:22:35 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 24 15:01:40 2014 -0800"
      },
      "message": "Clear root level reorder lists to prevent accessing stale DisplayLists\n\nbug:12581401\n\nAdds temporary logging which should log/crash earlier on incorrectly\nreordering hierarchies.\n\nChange-Id: Iee00940718c3cc868161e754aff93cd3b2747094\n"
    },
    {
      "commit": "cc3c25622c731d14a6f01bce684330eccba7db5a",
      "tree": "6e35c1358b88c77410f066f309590a0e87bc023b",
      "parents": [
        "3a3bdd042d8bd056d31a1b37332e91c1307060a0"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 17 10:34:10 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 17 13:42:09 2014 -0800"
      },
      "message": "Property support for light positioning.\n\nTune up the light size to make it look better.\n\nChange-Id: I139a05f3dd53dacbe55759b91188f0e1cc2c7f80\n"
    },
    {
      "commit": "3197cded4e265bc99dc82d695bbb7163fe134ed4",
      "tree": "1e466d046d1b38af09318b4de59dd33f6a1c08eb",
      "parents": [
        "c46809e9979204aa9a131d8933da23d298411441"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 16 14:03:39 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 16 14:03:39 2014 -0800"
      },
      "message": "Map shadow light position globally\n\nChange-Id: Ic3201cecdf5d2a1dd628e7e40aee912ef516d3b2\n"
    },
    {
      "commit": "7b4516e7ea552ad08d6e7277d311ef11bd8f12e8",
      "tree": "a97549bff020af39946aabd5a5c27c1151a90539",
      "parents": [
        "0ffd9ca5798d6c55d2a02f453dd181899639dce2"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Jan 07 10:42:55 2014 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Jan 10 17:18:53 2014 -0800"
      },
      "message": "Calculate and show the shadow from a spot light.\n\nChange-Id: Ia558852e8cde5d33866b22875eb501e4c6858819\n"
    },
    {
      "commit": "d218a92c0afb8c0d98135b20b52ac87236e1c935",
      "tree": "3eef804e9948ca463e720ac636db46b2637fdabb",
      "parents": [
        "8523706236b0b2536ed4359d92ec6ccdca060d78"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 17:13:34 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 03 13:55:08 2014 -0800"
      },
      "message": "Use const where possible for drawing parameters\n\nThey should never be modified by a Renderer, only read and copied.\n\nChange-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4\n"
    },
    {
      "commit": "564acf7c9bff822f608cda0d5df0a64a9f9aaefd",
      "tree": "93a3203fc99098dedd4df5660c96d6800c97ae93",
      "parents": [
        "e459367a3a49cbe94dfe38c50369431614dddc9c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:46:18 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:52:32 2014 -0800"
      },
      "message": "Fix Clang warnings/errors\n\nFix several build warnings (struct !\u003d class, int !\u003d size_t) and errors\n(variable leng non-POD arrays).\n\nChange-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321\n"
    },
    {
      "commit": "d6b65f67717025b1162f86f04e2caa5723566cac",
      "tree": "4905e0300916badc0fadf76018bf4d53fbe56669",
      "parents": [
        "14e513058ed4168c94e015638d16f5f87fd8063a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 01 14:45:21 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 12:57:41 2014 -0800"
      },
      "message": "Use const access to snapshot from OpenGLRenderer\n\nAdditionally, move clipping methods to StatefulBaseRenderer\n\nChange-Id: Iff232bf16fc1ad3b7d89493da6d8915db7bc5e4f\n"
    },
    {
      "commit": "14e513058ed4168c94e015638d16f5f87fd8063a",
      "tree": "1e66d02d2986e211d9e003ea2a3d09b9920f0dec",
      "parents": [
        "539394ec3aee7b5868c14e5e692684c8a875a3d4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 30 15:32:54 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 01 13:59:13 2014 -0800"
      },
      "message": "Move Snapshot management to intermediate StatefulBaseRenderer class\n\nThe eventual goal is for the StatefulBaseRenderer to serve as the\ncommon base class between the DisplayListRenderer and OpenGLRenderer.\n\nThis will separate DisplayList recording, Snapshot stack management,\nand the GL in OpenGLRenderer.\n\nAdditionally, avoid sp\u003c\u003e parameters, and use const parameters in\nseveral places, with the intent of greatly reducing the surface area\nwhere renderer subclasses can modify snapshot stack.\n\nNext steps:\n-move bulk of clipping logic into StatefulBaseRenderer\n-disable direct snapshot access\n\nChange-Id: Ibc3c6747134ec7daf8ea535866239fa73b874390\n"
    },
    {
      "commit": "b458942bb6e6cf13c68341dda35ef5cee060f5ae",
      "tree": "7421a2e45b1260472640b715150b84b317e09570",
      "parents": [
        "6debfb90eea84959ab51a6c3585549dd48e277f3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Dec 26 15:13:13 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Dec 27 14:40:06 2013 -0800"
      },
      "message": "Create abstract base class for OpenGLRenderer\n\nThis will eventually serve as a base class to allow\nDisplayListRenderer to split off from OpenGLRenderer, and could\neventually support other rendering approaches, such as an\nSkCanvas/SkPicture.\n\nThis will also be the main source of (implementation-independent)\ndocumentation of the canvas/renderer methods.\n\nChange-Id: I52047f338f5cf86a3b0b3002af7154bff5c3c227\n"
    },
    {
      "commit": "ba9b613437c34873fa95800a25fc51720638267c",
      "tree": "c47ac384de0306a48956ad6efaa3c5c5e51553c0",
      "parents": [
        "d83adf00ae6cb073fa0e4fbb837c2b87d824ec4f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Dec 15 17:10:19 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 16 14:57:00 2013 -0800"
      },
      "message": "Create private properties on GLCanvas for experimentation with 3d\n\nChange-Id: I17772f61efce727cb4c1111f4d97f58c741786b8\n"
    },
    {
      "commit": "55bfb4e728fe1db619af5d2c287f4abe711b3343",
      "tree": "3b9c9eb0902fdb0f8991259a04c342f89f65bcaa",
      "parents": [
        "d08eadd287991ec18eafe620b24e2b1bf0ce1f2d"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Dec 03 10:38:55 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Dec 13 17:25:47 2013 -0800"
      },
      "message": "Calculate and show Ambient shadow.\n\nBasically we compute the shadow as a strip of triangles, whose alpha value\nis the strength of the shadow.\nWe use the normal to extend the geometry.\nAnd we use static function and try to avoid new/malloc in the computation.\n\nChange-Id: I382286f1cad351bd5ff983f76f446c075819dcaf\n"
    },
    {
      "commit": "18809c063b89d9b235401d080b952885a4ef9628",
      "tree": "7a73454d7d3007b5d08032bfff6515b435947fb2",
      "parents": [
        "f8bc964289df5ea53672df401c6d51dd47c02e53",
        "f57776b2d195f0937906eb88b777bb55ccc36967"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Dec 13 21:55:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 13 21:55:50 2013 +0000"
      },
      "message": "Merge \"3d view system!\""
    },
    {
      "commit": "f57776b2d195f0937906eb88b777bb55ccc36967",
      "tree": "f2c160bb0860a6f3d0f883cdf0c520892a1bde24",
      "parents": [
        "c3c4d36df01631883a79163da841ca222497c9d3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Oct 25 18:30:17 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Dec 12 10:18:23 2013 -0800"
      },
      "message": "3d view system!\n\nTrue 3d transformations are now supported by DisplayLists and the\nrenderer, initially with the translationZ property on view.\n\nRenderer operations used directly by DisplayList (formerly,\nclip/save/restore/saveLayer) are now more simply managed by allocating\nthem temporarily on the handler\u0027s allocator, which exists for a single\nframe. This is much simpler than continuing to expand the pool of\npre-allocated DisplayListOps now that more operations are called\ndirectly by DisplayList, especially with z ordered drawing.\n\nStill TODO:\n-APIs for camera positioning, shadows\n-Make Z apis public, and expose through XML\n-Make invalidation / input 3d aware\n\nChange-Id: I95fe6fa03f9b6ddd34a7e0c6ec8dd9fe47c6c6eb\n"
    },
    {
      "commit": "630491973269da1b260e69d6a3f9490b97705037",
      "tree": "3219a8c0c46d5465320afd8cf5f5ac795f7047d4",
      "parents": [
        "1290d8e64fabc0b32487e2dfb599e5f288ecfd94"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 10 15:22:01 2013 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 10 15:22:01 2013 -0800"
      },
      "message": "Unbreak display list debug dumping\n\nChange-Id: I1c6a79f047b29fa60907f6e128cb843a45b88bff\n"
    },
    {
      "commit": "4b9a19a8f865970e0079f431c8c2c2a8e4333ae9",
      "tree": "8133e88dfa631ab30311375f3751f7b7ff09e58b",
      "parents": [
        "8af04d8b85183978aa6182c281325394bf47a593"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Dec 03 15:06:30 2013 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Dec 03 15:23:11 2013 -0500"
      },
      "message": "Call SkBitmap::config() instead of  ::getConfig()\n\ngetConfig() has been deprecated.\n\nChange-Id: I32066256ab82ac4760c752c80856d1b56d291fae\n"
    },
    {
      "commit": "f0a590781b2c3e34132b2011d3956135add73ae0",
      "tree": "336c6ca241497181743671e2f6e1af4405ab0237",
      "parents": [
        "e6a408ed31a7d1fb8ace6b80487d179b2f085fd3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Nov 19 18:00:46 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Nov 22 11:36:12 2013 -0800"
      },
      "message": "Clean up quick rejection, especially surrounding points + lines.\n\nbug:4351353\n\nquickReject and quickRejectNoScissor have been renamed and refactored:\n- to make the scissor side effect clear and explicit\n- dangerous methods no longer public\n- to make the simple quick reject check logic const\n- simple quick reject is now conservative\n\nThis CL also fixes several issues with line and point quickRejection -\nsub-pixel and hairline lines are much less likely to be incorrectly\nrejected, especially at small canvas scale.\n\nAdditionally, alpha modulation for AA points \u003c 1px in size is now\ncorrect, dumplicating SW behavior (similar to lines and stroked\nshapes work).\n\nChange-Id: Ibb0710c721b9fb415d05acf54dd3d2b4d602156a\n"
    },
    {
      "commit": "4063a0e03ba2e354cc6d19c0ffc073fd5b8aa2ca",
      "tree": "03565a41497ef69a96765fa7e8e192db4c674952",
      "parents": [
        "431b4359e4be6426aaa30ae7b6552f4310d4d9d6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Nov 15 16:06:56 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 18 12:51:08 2013 -0800"
      },
      "message": "Clean up modelView matrix logic\n\nbug:11359533\n\nAlso changes shader matrix to correctly account for modelView and\ncurrentTransform()\n\nChange-Id: I6ce18857dc6d08ea08ca7535385c2ad351ec3caa\n"
    },
    {
      "commit": "16e7d730c5fc974d5652a4a7a6e19a163225315a",
      "tree": "a05bb829a0951465d474420ba16695727a64a3a9",
      "parents": [
        "de51bbdb8642e9e099375b89b07edf3d27123141",
        "2f70da2bc5ce9f4766395cc9d848f0afe8f6a2a9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@android.com",
        "time": "Wed Nov 06 16:15:38 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 06 16:15:38 2013 -0800"
      },
      "message": "am 2f70da2b: am 6ed16a89: am 0b807d2e: Merge \"Update the layer\\\u0027s alpha value upon composition of the layer\"\n\n* commit \u00272f70da2bc5ce9f4766395cc9d848f0afe8f6a2a9\u0027:\n  Update the layer\u0027s alpha value upon composition of the layer\n"
    },
    {
      "commit": "2f70da2bc5ce9f4766395cc9d848f0afe8f6a2a9",
      "tree": "59badb2ac86a840e1b4a1d4fc0cbec2a93fb3bde",
      "parents": [
        "a719f797be204464b6650e22a245902e44e05277",
        "6ed16a89d836a33b9242f91b05e8ecb149abf909"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@android.com",
        "time": "Wed Nov 06 16:09:54 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 06 16:09:54 2013 -0800"
      },
      "message": "am 6ed16a89: am 0b807d2e: Merge \"Update the layer\\\u0027s alpha value upon composition of the layer\"\n\n* commit \u00276ed16a89d836a33b9242f91b05e8ecb149abf909\u0027:\n  Update the layer\u0027s alpha value upon composition of the layer\n"
    },
    {
      "commit": "a5ff739d3c9e15d07f1d5c644b4f11205cdac0e8",
      "tree": "ee98034d893f195d9f692735e75ee22a816601da",
      "parents": [
        "1f8350935caa6a44ef2608e34d4e3a91db4424a7"
      ],
      "author": {
        "name": "Digish Pandya",
        "email": "digishp@codeaurora.org",
        "time": "Mon Nov 04 06:30:25 2013 +0530"
      },
      "committer": {
        "name": "Digish Pandya",
        "email": "digishp@codeaurora.org",
        "time": "Tue Nov 05 09:22:37 2013 +0530"
      },
      "message": "Update the layer\u0027s alpha value upon composition of the layer\n\nFixes: This patch makes sure that the layer\u0027s alpha value is\nup-to-date and does not reflect the previous view\u0027s alpha value.\nit fixes the square block on marquee fading edge when text view\nis applied transparency.\n\nChange-Id: I110649db72a75fecc02ba56c201a05773f80328c\n"
    },
    {
      "commit": "e63f7c622a2086aefa80983c6f41b74fb166bb42",
      "tree": "85b440de978e64c43fa5dfbe80ebd1a555b7155a",
      "parents": [
        "8c317898ee65462e9fa7b511ddf5d89c4d77e291"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Oct 17 10:30:55 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Oct 17 10:37:15 2013 -0700"
      },
      "message": "Clean unused parameters, disable warnings\n\nChange-Id: Iddb872f53075dd022eeef45265594d1c6a9e2bc0\n"
    },
    {
      "commit": "5caebe4c7c8644b1dbf3fef23551373b95a8efd6",
      "tree": "b8319a89fd466d69bd1c0dbcfbdeabe034521ff9",
      "parents": [
        "0325fc366a3b89bb1e7b2101f1e50adc0365c652",
        "bd842f96ed4a9b7887be4702828ea0034d66ef85"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 20 17:37:20 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 20 17:37:20 2013 -0700"
      },
      "message": "am bd842f96: am d8a84a86: Merge \"Correct bitmap merging logic\" into klp-dev\n\n* commit \u0027bd842f96ed4a9b7887be4702828ea0034d66ef85\u0027:\n  Correct bitmap merging logic\n"
    },
    {
      "commit": "996fe656340ede058a6f0e6b18f9ec525ddb4e27",
      "tree": "7efca330f6633eb665b611469f1149dabb1383a5",
      "parents": [
        "564c45b976b56bc33f18271e1c813a0bd91b2eb4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 20 17:13:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 20 17:25:31 2013 -0700"
      },
      "message": "Correct bitmap merging logic\n\nbug:10863163\n\nThis fixes two issues\n\nThe check for pure translation was incorrect. It was fixed and renamed\nfor clarity.\n\nCertain matrix paths weren\u0027t setting kTypePositiveScale. For\nsimplicity (and because positive scale is simple to check) removed\nflag in favor of dynamic checking.\n\nChange-Id: Ic5ce235653ef49a68b8b242bd89fc2e95874ecc9\n"
    },
    {
      "commit": "2765c0b71679b5762ed72610e8310abd6d071b96",
      "tree": "e30f430930366ef5be5688c1b6a0a1adbf2984d2",
      "parents": [
        "e08e6632294143f889ab68f0c3453ee6802dc60e",
        "d97303a73babf8f820a78f72d558be8e4ad09f47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 19:17:12 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 19:17:12 2013 -0700"
      },
      "message": "resolved conflicts for merge of d97303a7 to master\n\nChange-Id: I29e2e64e0ec241675762482cbe5c5e9dc58adca6\n"
    },
    {
      "commit": "32f05e343c5ffb17f3235942bcda651bd3b9f1d6",
      "tree": "f3c0ed7a1a252728c21bd5b178ff69d625bf74d5",
      "parents": [
        "0f3e1487b26a822697f70747290809081c2072cc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 16:20:29 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 17:48:14 2013 -0700"
      },
      "message": "Conservatively estimate geometry bounds\n\nbug:10761696\n\nAvoids a case where a rect with top coordinate of (e.g.) 0.51f is\nassumed to not draw in the first row of pixels, which leads to it not\nbeing clipped. Since rounding can cause it to render in this first\npixel anyway, we very slightly expand geometry bounds.\n\nNow, in ambiguous cases, the geometry bounds are expanded so clipping\nis more likely to happen.\n\nChange-Id: I119b7c7720de07bac1634549724ffb63935567fc\n"
    },
    {
      "commit": "2f93af4574fbca9c94679744114ce40496aa69b8",
      "tree": "35b0f5031d9de0b37444ef1b35f19155d3075442",
      "parents": [
        "efb6beb4388e51a2e29ec605c500801f7ff150e6",
        "53760b4a97fb2f88e94da73d647ff80221b3c454"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 14:08:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 10 14:08:12 2013 -0700"
      },
      "message": "am 53760b4a: am 874ae2ad: Merge \"Fix scissor for functor invocation\" into klp-dev\n\n* commit \u002753760b4a97fb2f88e94da73d647ff80221b3c454\u0027:\n  Fix scissor for functor invocation\n"
    },
    {
      "commit": "25d2f7bc1ff9b475eff75bfff647466e91dbacb2",
      "tree": "2a4dc136adae063c2018ce35bd3e8f9944a15d92",
      "parents": [
        "b776122a8aa9fd082fa8aaa216c8a589d709c4c9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 13:12:09 2013 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 20:45:29 2013 +0000"
      },
      "message": "Fix scissor for functor invocation\n\n Bug: 10677765\n enableScissor() must precede setScissorFromClip() as\n otherwise setScissorFromClip() doesn\u0027t do anything.\n Also make sure to call setScissorFromClip() if\n enableScissor() returns true as enableScissor() calls\n resetScissor() if the scissor state has changed.\n\nChange-Id: I9226b20bb256c92066aae344e4e6407540b6eae9\n"
    },
    {
      "commit": "815fbbdfca52c37f251f156122b5537a9b9807e9",
      "tree": "7b26ac3a028f3e434a083f4937cfb3a56028dc5f",
      "parents": [
        "84ba33acf9eba178bddf06159fa974e13a9b76d5",
        "7ff37ada138d9023e9d646f7195ae761a7b83ff2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 15:12:06 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 26 15:12:06 2013 -0700"
      },
      "message": "am 7ff37ada: am ff2c22e2: Merge \"Move functor GL setup to just before functor\" into klp-dev\n\n* commit \u00277ff37ada138d9023e9d646f7195ae761a7b83ff2\u0027:\n  Move functor GL setup to just before functor\n"
    },
    {
      "commit": "54f574acf4dd5483170b8f79e2f7c70b58763ce7",
      "tree": "8d97e104903d19019cb538fef06fac6597d384ba",
      "parents": [
        "5bc1ea4e4ae0133d4d5eaa4ac98cf4719effd032"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "message": "Move functor GL setup to just before functor\n\nbug:10399469\n\nBecause the stencil setup can issue draws, it *must* come before the\nGL state setup.\n\nChange-Id: I52a36213549fc60b091a90cbb923a1f0d35f9a65\n"
    },
    {
      "commit": "2f7c6f04cc0593c449da3334653e6d0c20016c2b",
      "tree": "1eef9cd54336cc1430e6d5fd7d206e490f72bc3e",
      "parents": [
        "faee2c26eff239c7dadc33caee4dc96e3ac3c5fe",
        "dfb79408892b3f168204c54a9b81d813921fb0f9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 12:02:35 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 21 12:02:35 2013 -0700"
      },
      "message": "am dfb79408: am 5b8efc47: Merge \"Add overdraw debugging that accounts for Deuteranomaly\" into klp-dev\n\n* commit \u0027dfb79408892b3f168204c54a9b81d813921fb0f9\u0027:\n  Add overdraw debugging that accounts for Deuteranomaly\n"
    },
    {
      "commit": "627c6fd91377ead85f74a365438e25610ef1e2ee",
      "tree": "3fad6c0a8a6fb3e4c88702b6a407a0fdd75be065",
      "parents": [
        "906da6bfe4092fda1daff63e00e9f2ce1daac00b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "message": "Add overdraw debugging that accounts for Deuteranomaly\n\nChange-Id: I31f68a07aa7cf0490d2572e24e4c5ac2066a1151\n"
    },
    {
      "commit": "3380cfdc77100e87aa8390386ccf390834dea171",
      "tree": "cc6b223258e05a062b1b075f414bcf49ad71a051",
      "parents": [
        "9a9880856af321d0db45e047f21154a0f2010511"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 15 16:57:57 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 15 17:00:10 2013 -0700"
      },
      "message": "Replace float arrays with readable names\n\nChange-Id: I32a8be560b60a4ac5cbee2fec4574b2c5df9f825\n"
    },
    {
      "commit": "003123004f7b23b3dc472d5c40b8c1a16df37a54",
      "tree": "974c2608d0f3f2477acb6da24b9a935f44952033",
      "parents": [
        "37ee68fc091f64e17c0ef29b123b782b6daecf16"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 08 19:11:20 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 03:52:29 2013 +0000"
      },
      "message": "Remove an unnecessary allocation\n\nAlso remove dead code from OpenGLRenderer.cpp\n\nChange-Id: I7eb54ca19e77ee3c32f1fe9513a031e6b2e115cf\n(cherry picked from commit 5c7d5ab878b26f855175a3305a14ac12fcacf25e)"
    },
    {
      "commit": "b213cec0ce659c1e35c3e7f60a61bae38d94482a",
      "tree": "3fc40dd88060676ff462c836a548615ddef05ffe",
      "parents": [
        "03ed0127dae141d99b003ede9ba3ea937128e471",
        "5e49b307eb99269db2db257760508b8efd7bb97d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "message": "Merge \"Fix quickReject\u0027s handling of AA ramp geometry\""
    },
    {
      "commit": "5e49b307eb99269db2db257760508b8efd7bb97d",
      "tree": "18c9f02b947e99fe8aa5b27074725b11fc6df2ba",
      "parents": [
        "cb9accefb19ba6ae6fd449dc9ab62e972b51335c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 30 19:05:20 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 11:29:22 2013 -0700"
      },
      "message": "Fix quickReject\u0027s handling of AA ramp geometry\n\nBy having quickReject round out the window-space geometry bounds, we\nprevent the AA perimeter (which falls outside the local bounds passed\nin) from drawing outside the clip.\n\nChange-Id: I8ee36be9039a9c47906815ee2f0dbaa5eb910b82\n"
    },
    {
      "commit": "b7b93e00893f5c690a96bd3e0e10583bc5721f83",
      "tree": "89c975e81ab527630ab4c10478b80bca12593d24",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:29:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:35:24 2013 -0700"
      },
      "message": "Fix region clipping bugs\nSee external bug #58344\n\nChange-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12\n"
    },
    {
      "commit": "1e546815bbb736c50679a8aefc25f48561026fc5",
      "tree": "11a3b7106638c123d052d50ce3e2a1757e004cb4",
      "parents": [
        "3a6f25512c0a682b10961a5a7428e3393ffb0b75"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Jun 25 14:25:17 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Jul 31 15:50:47 2013 -0700"
      },
      "message": "Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)\n\nQuite a few things going on in this commit:\n\n- Enable bitmap strikes by default in Paint objects.\n\nThe SkPaint parameter that enables bitmap strikes was not previously\nincluded in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap\nfonts. Oops! It\u0027s for the best, though, as additional work was needed\nin Skia to make bitmap fonts work anyway.\n\n- Complain if TEXTURE_BORDER_SIZE is not 1.\n\nOur glyph cache code does not currently handle any value other than 1\nhere, including zero. I\u0027ve added a little C preprocessor check to\nprevent future engineers (including especially future-me) from\nthinking that they can change this value without updating the related\ncode.\n\n- Add GL_RGBA support to hwui\u0027s FontRenderer and friends\n\nThis also happened to involve some refactoring for convenience and\ncleanliness.\n\nBug: 9577689\nChange-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c\n"
    },
    {
      "commit": "98427708a81eefcc24ae29e2f22e55f1ae44c927",
      "tree": "b541f690c964d8bce9562a93203dd7aeb5ad909b",
      "parents": [
        "fd23eca5ba30a1624233c9597f8c4b9db790994b",
        "9ab2d1847552aa4169b4325aae1b1368d6947a9f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 23:31:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 22 23:31:20 2013 +0000"
      },
      "message": "Merge \"Ensure glActiveTexture is cleaned up correctly on functor resume\""
    },
    {
      "commit": "9ab2d1847552aa4169b4325aae1b1368d6947a9f",
      "tree": "52955e896e6f021961bbfc9dd52003c918fdbb50",
      "parents": [
        "7bfddb5434736a26fa9b32d7cd1741067169ae74"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:16:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:21:55 2013 -0700"
      },
      "message": "Ensure glActiveTexture is cleaned up correctly on functor resume\n\nChange-Id: I103d7d63b17289d599c2c08dcc442cfba9b8e51d\n"
    },
    {
      "commit": "448455fe783b0a711340322dca272b8cc0ebe473",
      "tree": "e67a3894b8d1fc2cdfd08e7f45ff54c37070d279",
      "parents": [
        "e4d4e20e8f84d53b4b7198300baaf3e21ff9be58"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 13:57:50 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 14:37:21 2013 -0700"
      },
      "message": "Use global indices array to draw layers\n\nAn array of indices local to a layer would only be necessary if\nwe changed the way we resolve T-junctions. Since we only ever\ndraw quads, let\u0027s just use the indices we use everywhere else.\n\nThis change also uses the global indices array to render list\nof colored rectangles to save on the number of vertices generated\nCPU-side.\n\nChange-Id: Ia6d1970b0e9247805af5a114ca2a84b5d0b7c282\n"
    },
    {
      "commit": "ecca6da4eab601f05a9d977c8d2651068b6e16b2",
      "tree": "d7b3d39eb65155174cafe6c3033be0917bde15ed",
      "parents": [
        "e77d6dd94371b97a8fac21a60b804b4f99559eab"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "message": "Support stencil-based clipping for functors\n\nbug:9070351\nChange-Id: I1c54e1bea1b84b1619cce27b14f189b42cab7062\n"
    },
    {
      "commit": "c36fe2fc5354fadc140c898f59d47859cbdeac67",
      "tree": "a238c4eb527573da5ecbc3ac4c31a240a4a1eb3c",
      "parents": [
        "1e09cfaa689cff21d3d00883d38af5c296859fdb",
        "55e789dbc782be0dcaf1d4bae5f32e9e2f674152"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "message": "am 55e789db: am ed96349a: am 3d1b158e: Merge \"Fix out of range glCopyTexImage2D Bug #9425270\" into jb-mr2-dev\n\n* commit \u002755e789dbc782be0dcaf1d4bae5f32e9e2f674152\u0027:\n  Fix out of range glCopyTexImage2D Bug #9425270\n"
    },
    {
      "commit": "b254c242d98f4a9d98055726446351e52bece2c6",
      "tree": "69df91645e499216cadb4e9ba11e57bc32b2d681",
      "parents": [
        "e6cb43a1ea50681d2da30ce5e8cb5ac97e80e88a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "message": "Fix out of range glCopyTexImage2D\nBug #9425270\n\nA better solution would be to use glCopyTexImage2D whenever possible but\nthis change would be a little more dangerous.\n\nChange-Id: Ib1aaceda39d838716285ef97f356721416822dbb\n"
    },
    {
      "commit": "55b6f95ee4ace96c97508bcd14483fb4e9dbeaa0",
      "tree": "f66490c89db4ac96004144731a89d1956108f1a0",
      "parents": [
        "9feab843ac8139f4e971d93fd767470d0d727e41"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:27:09 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:40:46 2013 -0700"
      },
      "message": "Track the atlas\u0027 generation ID\nBug #9589379\n\nIf the atlas is terminated/reinitialized and a view does not invalidate\nin between it might end up using a stale AssetAtlas::Entry. This change\nis similar to how 9patch meshes are cached in DrawPatchOp: we simply\ntrack the generation ID of the cache to make sure we always use the\nlatest data.\n\nChange-Id: Ib5abb3769d2ce0eabe9adc04e320ca27c422019e\n"
    },
    {
      "commit": "0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d",
      "tree": "f109c7a20dc65947e8d69cd274a10b512a46d940",
      "parents": [
        "2c290392c9a934f9ac48364af01c848b01ba8e80"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:54:59 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 13:16:31 2013 -0700"
      },
      "message": "Initialize MergingDrawBatch clip with viewport bounds\n\nThis allows merged, clipped operations to behave correctly within a\nsavelayer, even if the base viewport has a large offset.\n\nAdditionally, disregard opaqueness when within a\ncomplexclip/savelayer, as the coverage can\u0027t be trusted.\n\nChange-Id: Ic908b82a4bb410bc7fac1b4295f4874ed166efc5\n"
    },
    {
      "commit": "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d",
      "tree": "7538aa95ebbfb5c06aaaebbd22966cddcce2ee1e",
      "parents": [
        "d485ef27c795648c4a05c4c089e8c5a15712fd36"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 18:30:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 10:13:58 2013 -0700"
      },
      "message": "Batch 9-patches in a single mesh whenever possible\n\nThis change also fixes the way batched bitmaps were handled\ninside a layer. The layer is now correctly dirtied to minimize\nthe amount of pixels to blend.\n\nFix alpha, mode and opaque computations for DrawPatchOp.\n\nChange-Id: I1b6cd581c0f0db66c1002bb4fb1a9811e55bfa78\n"
    },
    {
      "commit": "fb5a41a371e540f402e3dd987b0fbf92d1267902",
      "tree": "4ac7697c19cef2444e9d48fbe32e4de602cecd34",
      "parents": [
        "ff4ea7987714dad4f4d9065902f0ac5fd61833fd",
        "2458939b5f926176a485a3196f59688eed78e858"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "message": "Merge \"Fix regression: TextureView.setAlpha() was ignored\""
    },
    {
      "commit": "2458939b5f926176a485a3196f59688eed78e858",
      "tree": "fc608a8ae818144c69f679e059adb1fa198e01aa",
      "parents": [
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "message": "Fix regression: TextureView.setAlpha() was ignored\n\nChange-Id: I9f43eec0fe23a65dcc1cf9cd0ac1f5e8907786a7\n"
    },
    {
      "commit": "cadc5bf4116945a1800061f984d95175e20caba6",
      "tree": "e56682c2d1325a06ef7a5b4c66444d9876d932b0",
      "parents": [
        "1f54f9246e500042a42fde627ce5c438c8da895d",
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "message": "Merge \"Share Caches\u0027 index buffer with FontRenderer\""
    },
    {
      "commit": "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1",
      "tree": "a9b1d4f934c40a6c1a6e3c32e10451fc323ebaea",
      "parents": [
        "2d5945e88731787babce1061f44cd54f02eeefc5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "message": "Share Caches\u0027 index buffer with FontRenderer\n\nThis reduces state changes when we draw 9patches and text together,\nwhich happens *a lot*. Also disable the NV profiling extension by\ndefault since it doesn\u0027t play nice with display lists deferrals.\nTo enable it set debug.hwui.nv_profiling to true.\n\nChange-Id: I518b44b7d294e5def10c78911ceb9f01ae401609\n"
    },
    {
      "commit": "36d38cb904556025b76c6d98f9fe2ccfa1c8a304",
      "tree": "ce339566cfe52d099f529241460fcac508fdcda6",
      "parents": [
        "f0542ee466372a29ebaa3c1ea1f362c353a28f4a",
        "d72b73cea49f29c41661e55eb6bfdbc04f09d809"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "message": "Merge \"Better handle op size edge cases\""
    },
    {
      "commit": "d72b73cea49f29c41661e55eb6bfdbc04f09d809",
      "tree": "e6782e49ac767cd62e22ca8e44f18eb3977bb1e6",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "message": "Better handle op size edge cases\n\nbug:9464358\n\nPreviously, empty and unknown sized ops are assumed to fully cover\ntheir clip. This is now corrected such that empty sized ops are\npre-rejected before defer. Additionally, unknown sized ops disable\noverdraw avoidance.\n\nChange-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1\n"
    },
    {
      "commit": "fb5c9050978afad2c1df570a13a6747f438c27f7",
      "tree": "5ad303b8842436dccb104e46d19aea14d5617cfb",
      "parents": [
        "61e1ca68fa82e5228b5bfcdad8deecd9383fb183",
        "e93482f5eac3df581d57e64c2a771a96aa868585"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "message": "Merge \"Cancel layer update when a layer is about to be destroyed Bug #9310706\""
    },
    {
      "commit": "e93482f5eac3df581d57e64c2a771a96aa868585",
      "tree": "009afbdf49655b35ee29f857aa554a42c4e96048",
      "parents": [
        "6410c0aaf13c9aec606b90ee942f2ac2d98b1609"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:14:51 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:35:03 2013 -0700"
      },
      "message": "Cancel layer update when a layer is about to be destroyed\nBug #9310706\n\nChange-Id: I73eea6314c326f15a979617e3a05b525935f0d3f\n"
    },
    {
      "commit": "a02c4ed885d97e516f844ddb0a96083f1b45b4cb",
      "tree": "74a79cf96d32b37ee36c9308170aa3643093dce5",
      "parents": [
        "5f73a7df6dccd61ee2596ece7e9e3c66a7a58339"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "message": "Fix clip merging behavior\n\nPreviously, a new op with a clipped side could be added to a\nMergingDrawBatch without considering the batch\u0027s current bounds.\n\nChange-Id: I1b873ecf821bad7cda6630c3f311edd90ac5cc8c\n"
    }
  ],
  "next": "39a908c1df89e1073627b0dcbce922d826b67055"
}
