Upgrade emulator to emu-master-dev build 5955183
am: eb08eaa623

Change-Id: I5003409db2bcee31af3aa3d89bba008ea98077c6
diff --git a/darwin-x86_64/NOTICE.txt b/darwin-x86_64/NOTICE.txt
index 4485d44..ec0af64 100644
--- a/darwin-x86_64/NOTICE.txt
+++ b/darwin-x86_64/NOTICE.txt
@@ -218,6 +218,7 @@
 /emulator/qemu/darwin-x86_64/qemu-system-aarch64
 /emulator/qemu/darwin-x86_64/qemu-system-aarch64-headless
 /emulator/qemu/darwin-x86_64/qemu-system-i386
+/emulator/qemu/darwin-x86_64/qemu-system-armel-headless
 /emulator/qemu/darwin-x86_64/qemu-system-x86_64
 /emulator/qemu/darwin-x86_64/qemu-system-armel
 /emulator/qemu/darwin-x86_64/qemu-system-i386-headless
@@ -227,6 +228,7 @@
 /emulator/lib/advancedFeaturesCanary.ini
 /emulator/lib/emu-original-feature-flags.protobuf
 /emulator/lib/advancedFeatures.ini
+/emulator/lib/snapshot.proto
 /emulator/lib/ca-bundle.pem
 /emulator/lib/pc-bios/efi-e1000.rom
 /emulator/lib/pc-bios/kvmvapic.bin
diff --git a/darwin-x86_64/emulator b/darwin-x86_64/emulator
index 62c3a80..4a253db 100755
--- a/darwin-x86_64/emulator
+++ b/darwin-x86_64/emulator
Binary files differ
diff --git a/darwin-x86_64/emulator-check b/darwin-x86_64/emulator-check
index 148a9b8..ee7d616 100755
--- a/darwin-x86_64/emulator-check
+++ b/darwin-x86_64/emulator-check
Binary files differ
diff --git a/darwin-x86_64/emulator-headless b/darwin-x86_64/emulator-headless
index 15ff65e..dcea21f 100755
--- a/darwin-x86_64/emulator-headless
+++ b/darwin-x86_64/emulator-headless
Binary files differ
diff --git a/darwin-x86_64/lib/emulator_controller.proto b/darwin-x86_64/lib/emulator_controller.proto
index e9c3edd..0acfcf1 100644
--- a/darwin-x86_64/lib/emulator_controller.proto
+++ b/darwin-x86_64/lib/emulator_controller.proto
@@ -21,6 +21,7 @@
 package android.emulation.control;
 
 import "google/protobuf/empty.proto";
+import "snapshot.proto";
 
 // An EmulatorController service lets you control the emulator.
 service EmulatorController {
@@ -75,6 +76,40 @@
     // The ice candidates for example will trickle in on this callback,
     // as will the SDP negotation.
     rpc receiveJsepMessage(RtcId) returns (JsepMsg) {}
+
+    // Lists all the valid snapshots that are stored locally for the currently
+    // running avd.
+    rpc listSnapshots(google.protobuf.Empty) returns (SnapshotList) {}
+
+    // Gets the snapshot with the given id.
+    rpc getSnapshot(Snapshot) returns (stream Snapshot) {}
+
+    // Stores the given snapshot.
+    rpc putSnapshot(stream Snapshot) returns (Snapshot) {}
+
+    // Starts the given snapshot
+    rpc startSnapshot(Snapshot) returns (google.protobuf.Empty) {}
+}
+
+message Snapshot {
+    // The identifier to the snapshot.
+    string snapshot_id = 1;
+
+    // A stream of bytes. Encoded as a zip file.
+    bytes payload = 2;
+
+    // status fields.
+    bool success = 3;
+    bytes err = 4;
+}
+
+message SnapshotDetails {
+    string snapshot_id = 1;
+    emulator_snapshot.Snapshot details = 2;
+}
+
+message SnapshotList {
+    repeated SnapshotDetails snapshots = 1;
 }
 
 message RtcId {
@@ -142,6 +177,7 @@
         HV_HAXM = 3;
         HV_HVF = 4;
         HV_WHPX = 5;
+        HV_GVM = 6;
     };
 
     VmHypervisorType hypervisorType = 1;
diff --git a/darwin-x86_64/lib/hardware-properties.ini b/darwin-x86_64/lib/hardware-properties.ini
index f0b4c44..159d30c 100644
--- a/darwin-x86_64/lib/hardware-properties.ini
+++ b/darwin-x86_64/lib/hardware-properties.ini
@@ -263,6 +263,33 @@
 default     = 60
 abstract    = LCD VSYNC rate
 
+# GL transport
+name        = hw.gltransport
+type        = string
+default     = pipe
+enum        = tcp, pipe, virtio-gpu, asg
+abstract    = Transport used to run graphics
+
+name        = hw.gltransport.asg.writeBufferSize
+type        = integer
+default     = 1048576
+abstract    = For address space graphics, the total size of the write buffer the guest can write into
+
+name        = hw.gltransport.asg.writeStepSize
+type        = integer
+default     = 4096
+abstract    = For address space graphics, the max size of each guest-to-host transaction.
+
+name        = hw.gltransport.asg.dataRingSize
+type        = integer
+default     = 32768
+abstract    = For address space graphics, the size of the ring used to transfer larger buffers.
+
+name        = hw.gltransport.drawFlushInterval
+type        = integer
+default     = 800
+abstract    = Interval over which to flush draw calls (balance host gpu starve vs pipe notif overhead)
+
 # Display sub-region
 # Indicates a reduced area of hw.lcd that is used when a foldable device
 # is in its folded configuration.
@@ -679,3 +706,19 @@
 default     = no
 abstract    = Always use cold boot
 description = If set, AVD will always use the full cold boot instead of snapshot-based quick boot process
+
+
+# SDK Path used during generation of this hardware configuration
+name        = android.sdk.root
+type        = string
+default     =
+abstract    = sdk root that was used during the construction of this hardware.ini
+description = This can be used by post processing tools to migrate snapshots
+
+# AVD home used during generation of this hardware configuration
+name        = android.avd.home
+type        = string
+default     =
+abstract    = avd home that was used during the construction of this hardware.ini
+description = This can be used by post processing tools to migrate snapshots
+
diff --git a/darwin-x86_64/lib/snapshot.proto b/darwin-x86_64/lib/snapshot.proto
new file mode 100644
index 0000000..9229c09
--- /dev/null
+++ b/darwin-x86_64/lib/snapshot.proto
@@ -0,0 +1,146 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+// This file must be synchronized between
+//    Emulator (branch aosp/emu-master-dev):
+//        external/qemu/android/android-emu/android/snapshot/proto/snapshot.proto
+//
+//    Android Studio (branch goog/studio-master-dev):
+//        tools/adt/idea/android/src/com/android/emulator/snapshot.proto
+//
+// If you modify one, please modify the other.
+
+package emulator_snapshot;
+
+option java_package = "com.android.emulator";
+
+message Image {
+    enum Type {
+        IMAGE_TYPE_UNKNOWN = 0;
+        IMAGE_TYPE_KERNEL = 1;
+        IMAGE_TYPE_KERNEL_RANCHU = 2;
+        IMAGE_TYPE_SYSTEM = 3;
+        IMAGE_TYPE_SYSTEM_COPY = 4;
+        IMAGE_TYPE_DATA = 5;
+        IMAGE_TYPE_DATA_COPY = 6;
+        IMAGE_TYPE_RAMDISK = 7;
+        IMAGE_TYPE_SDCARD = 8;
+        IMAGE_TYPE_CACHE = 9;
+        IMAGE_TYPE_VENDOR = 10;
+        IMAGE_TYPE_ENCRYPTION_KEY = 11;
+    }
+
+    optional Type type = 1;
+    optional string path = 2;
+    optional bool present = 3;
+    optional int64 size = 4;
+    optional int64 modification_time = 5;
+}
+
+message Host {
+    optional string gpu_driver = 4;
+    optional int32 hypervisor = 5;
+}
+
+message Config {
+    // Features are int32, not enums here to make sure we don't have to update
+    // one more protobuf definition with every single new feature flag, even
+    // when the code doesn't really care about the actual meaning for them,
+    // only for the values.
+    repeated int32 enabled_features = 1;
+
+    // This holds the renderer; int32 for the same reason as |enabled_features|.
+    optional int32 selected_renderer = 2;
+
+    optional int32 cpu_core_count = 3;
+    optional int64 ram_size_bytes = 4;
+}
+
+message SaveStats {
+    // Type of save
+    // 0: non-incremental
+    // 1: incremental
+    optional uint32 incremental = 1;
+    // Time taken to save.
+    optional uint64 duration = 2;
+    // How many changed bytes in RAM.
+    optional uint64 ram_changed_bytes = 3;
+}
+
+message Snapshot {
+    // Update every time when introducing some breaking changes that make the
+    // previous loading code break when trying to load the new snapshot.
+    // NOTE: if the old code is fine with just skipping the new fields or not
+    //       getting the meaning of new values, |version| should remain
+    //       unchanged.
+    optional int32 version = 1;
+
+    // Purely informative: when this snapshot was created, Unix timestamp.
+    optional int64 creation_time = 2;
+
+    // List of mounted disk images used during the snapshot creation.
+    repeated Image images = 3;
+
+    // Description of the host machine properties needed to load this snapshot.
+    optional Host host = 4;
+
+    // Description of the emulator configuration needed for this snapshot.
+    // NOTE: try not to duplicate the configuration that's already in
+    //       hardware-qemu.ini; only add what's either not there or what
+    //       could've been overridden during process initialization.
+    optional Config config = 5;
+
+    // Set if the snapshot failed to load during the last attempt.
+    // Code is up to the application to define, with 0 meaning 'not failed' just
+    // in case.
+    optional int64 failed_to_load_reason_code = 7;
+
+    // Set if data image is mounted.
+    // User build and userdebug build mount data partition at different time.
+    // But it should be done before boot finished, so this field is very likely
+    // to be true.
+    // We snapshot it here just in case someday we support snapshot during
+    // booting.
+    optional bool guest_data_partition_mounted = 8;
+
+    // Emulator rotation angle, in right angles (e.g. 1 is 90 degrees, 2 is 180
+    // etc).
+    optional int32 rotation = 9;
+
+    // Number of invalid loads / crashes that happened under this snapshot.
+    optional int32 invalid_loads = 10;
+
+    // Number of successful loads.
+    optional int32 successful_loads = 11;
+
+    // The name given to the snapshot by the user. Independent of the
+    // file name.
+    optional string logical_name = 12;
+
+    // The file name of this snapshot's parent. The parent is the
+    // snapshot that was loaded into the AVD prior to this snapshot
+    // being taken
+    optional string parent = 13;
+
+    // Arbitrary description added by the user
+    optional string description = 14;
+
+    // Record of save stats.
+    repeated SaveStats save_stats = 15;
+
+    // Folded state.
+    optional bool folded = 16;
+}
diff --git a/darwin-x86_64/lib64/emulator-studio-view.jar b/darwin-x86_64/lib64/emulator-studio-view.jar
index 490cd2f..fdb6ec6 100644
--- a/darwin-x86_64/lib64/emulator-studio-view.jar
+++ b/darwin-x86_64/lib64/emulator-studio-view.jar
Binary files differ
diff --git a/darwin-x86_64/lib64/libEGL_translator.dylib b/darwin-x86_64/lib64/libEGL_translator.dylib
index 0dbf8d9..50db4ee 100755
--- a/darwin-x86_64/lib64/libEGL_translator.dylib
+++ b/darwin-x86_64/lib64/libEGL_translator.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libGLES12Translator.dylib b/darwin-x86_64/lib64/libGLES12Translator.dylib
index cc00137..819483a 100755
--- a/darwin-x86_64/lib64/libGLES12Translator.dylib
+++ b/darwin-x86_64/lib64/libGLES12Translator.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libGLES_CM_translator.dylib b/darwin-x86_64/lib64/libGLES_CM_translator.dylib
index 6b5e35c..75156f6 100755
--- a/darwin-x86_64/lib64/libGLES_CM_translator.dylib
+++ b/darwin-x86_64/lib64/libGLES_CM_translator.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libGLES_V2_translator.dylib b/darwin-x86_64/lib64/libGLES_V2_translator.dylib
index 5d7fe6d..d50d7a1 100755
--- a/darwin-x86_64/lib64/libGLES_V2_translator.dylib
+++ b/darwin-x86_64/lib64/libGLES_V2_translator.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libOpenglRender.dylib b/darwin-x86_64/lib64/libOpenglRender.dylib
index 96cf71f..fb83f67 100755
--- a/darwin-x86_64/lib64/libOpenglRender.dylib
+++ b/darwin-x86_64/lib64/libOpenglRender.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libandroid-studio.dylib b/darwin-x86_64/lib64/libandroid-studio.dylib
index 14a38be..346e27c 100755
--- a/darwin-x86_64/lib64/libandroid-studio.dylib
+++ b/darwin-x86_64/lib64/libandroid-studio.dylib
Binary files differ
diff --git a/darwin-x86_64/lib64/libemugl_common.dylib b/darwin-x86_64/lib64/libemugl_common.dylib
index 5d22bdb..d9356d9 100755
--- a/darwin-x86_64/lib64/libemugl_common.dylib
+++ b/darwin-x86_64/lib64/libemugl_common.dylib
Binary files differ
diff --git a/darwin-x86_64/mksdcard b/darwin-x86_64/mksdcard
index 2ce9e1a..033c7ed 100755
--- a/darwin-x86_64/mksdcard
+++ b/darwin-x86_64/mksdcard
Binary files differ
diff --git a/darwin-x86_64/qemu-img b/darwin-x86_64/qemu-img
index d19cec6..66aae35 100755
--- a/darwin-x86_64/qemu-img
+++ b/darwin-x86_64/qemu-img
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64 b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64
index a913c6b..a9f27b1 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64-headless b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64-headless
index acee829..c84d145 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64-headless
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-aarch64-headless
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel
index 470e8a2..64b4a90 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel-headless b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel-headless
new file mode 100755
index 0000000..d95b0a3
--- /dev/null
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-armel-headless
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386 b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386
index 65e8fee..54da2c7 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386-headless b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386-headless
index 2348e3d..7a8478b 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386-headless
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-i386-headless
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64 b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64
index ff9579b..27e1f58 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64
Binary files differ
diff --git a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64-headless b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64-headless
index b606c6d..536091c 100755
--- a/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64-headless
+++ b/darwin-x86_64/qemu/darwin-x86_64/qemu-system-x86_64-headless
Binary files differ
diff --git a/darwin-x86_64/source.properties b/darwin-x86_64/source.properties
index ebda06c..359c0e8 100644
--- a/darwin-x86_64/source.properties
+++ b/darwin-x86_64/source.properties
@@ -1,5 +1,5 @@
 Pkg.UserSrc=false
-Pkg.Revision=29.2.4
+Pkg.Revision=29.2.6
 Pkg.Path=emulator
 Pkg.Desc=Android Emulator
 Pkg.Dependencies=tools#25.3
diff --git a/linux-x86_64/NOTICE.txt b/linux-x86_64/NOTICE.txt
index a84ca67..78c7bb8 100644
--- a/linux-x86_64/NOTICE.txt
+++ b/linux-x86_64/NOTICE.txt
@@ -28,6 +28,7 @@
 /emulator/bin64/mkfs.ext4
 /emulator/bin64/fsck.ext4
 /emulator/bin64/e2fsck
+/emulator/lib/snapshot.proto
 /emulator/lib/waterfall.proto
 /emulator/lib/emulator_controller.proto
 /emulator/lib/hardware-properties.ini
@@ -153,6 +154,7 @@
 /emulator/lib64/qt/lib/libQt5WidgetsAndroidEmu.so.5
 /emulator/lib64/qt/lib/libQt5GuiAndroidEmu.so.5
 /emulator/lib64/qt/lib/libQt5CoreAndroidEmu.so.5
+/emulator/qemu/linux-x86_64/qemu-system-armel-headless
 /emulator/qemu/linux-x86_64/qemu-system-aarch64-headless
 /emulator/qemu/linux-x86_64/qemu-system-x86_64-headless
 /emulator/qemu/linux-x86_64/qemu-system-i386-headless
diff --git a/linux-x86_64/emulator b/linux-x86_64/emulator
index 567f1ee..b83e7f0 100755
--- a/linux-x86_64/emulator
+++ b/linux-x86_64/emulator
Binary files differ
diff --git a/linux-x86_64/emulator-headless b/linux-x86_64/emulator-headless
index 59a6f4f..648dce8 100755
--- a/linux-x86_64/emulator-headless
+++ b/linux-x86_64/emulator-headless
Binary files differ
diff --git a/linux-x86_64/lib/emulator_controller.proto b/linux-x86_64/lib/emulator_controller.proto
index e9c3edd..0acfcf1 100644
--- a/linux-x86_64/lib/emulator_controller.proto
+++ b/linux-x86_64/lib/emulator_controller.proto
@@ -21,6 +21,7 @@
 package android.emulation.control;
 
 import "google/protobuf/empty.proto";
+import "snapshot.proto";
 
 // An EmulatorController service lets you control the emulator.
 service EmulatorController {
@@ -75,6 +76,40 @@
     // The ice candidates for example will trickle in on this callback,
     // as will the SDP negotation.
     rpc receiveJsepMessage(RtcId) returns (JsepMsg) {}
+
+    // Lists all the valid snapshots that are stored locally for the currently
+    // running avd.
+    rpc listSnapshots(google.protobuf.Empty) returns (SnapshotList) {}
+
+    // Gets the snapshot with the given id.
+    rpc getSnapshot(Snapshot) returns (stream Snapshot) {}
+
+    // Stores the given snapshot.
+    rpc putSnapshot(stream Snapshot) returns (Snapshot) {}
+
+    // Starts the given snapshot
+    rpc startSnapshot(Snapshot) returns (google.protobuf.Empty) {}
+}
+
+message Snapshot {
+    // The identifier to the snapshot.
+    string snapshot_id = 1;
+
+    // A stream of bytes. Encoded as a zip file.
+    bytes payload = 2;
+
+    // status fields.
+    bool success = 3;
+    bytes err = 4;
+}
+
+message SnapshotDetails {
+    string snapshot_id = 1;
+    emulator_snapshot.Snapshot details = 2;
+}
+
+message SnapshotList {
+    repeated SnapshotDetails snapshots = 1;
 }
 
 message RtcId {
@@ -142,6 +177,7 @@
         HV_HAXM = 3;
         HV_HVF = 4;
         HV_WHPX = 5;
+        HV_GVM = 6;
     };
 
     VmHypervisorType hypervisorType = 1;
diff --git a/linux-x86_64/lib/hardware-properties.ini b/linux-x86_64/lib/hardware-properties.ini
index f0b4c44..159d30c 100644
--- a/linux-x86_64/lib/hardware-properties.ini
+++ b/linux-x86_64/lib/hardware-properties.ini
@@ -263,6 +263,33 @@
 default     = 60
 abstract    = LCD VSYNC rate
 
+# GL transport
+name        = hw.gltransport
+type        = string
+default     = pipe
+enum        = tcp, pipe, virtio-gpu, asg
+abstract    = Transport used to run graphics
+
+name        = hw.gltransport.asg.writeBufferSize
+type        = integer
+default     = 1048576
+abstract    = For address space graphics, the total size of the write buffer the guest can write into
+
+name        = hw.gltransport.asg.writeStepSize
+type        = integer
+default     = 4096
+abstract    = For address space graphics, the max size of each guest-to-host transaction.
+
+name        = hw.gltransport.asg.dataRingSize
+type        = integer
+default     = 32768
+abstract    = For address space graphics, the size of the ring used to transfer larger buffers.
+
+name        = hw.gltransport.drawFlushInterval
+type        = integer
+default     = 800
+abstract    = Interval over which to flush draw calls (balance host gpu starve vs pipe notif overhead)
+
 # Display sub-region
 # Indicates a reduced area of hw.lcd that is used when a foldable device
 # is in its folded configuration.
@@ -679,3 +706,19 @@
 default     = no
 abstract    = Always use cold boot
 description = If set, AVD will always use the full cold boot instead of snapshot-based quick boot process
+
+
+# SDK Path used during generation of this hardware configuration
+name        = android.sdk.root
+type        = string
+default     =
+abstract    = sdk root that was used during the construction of this hardware.ini
+description = This can be used by post processing tools to migrate snapshots
+
+# AVD home used during generation of this hardware configuration
+name        = android.avd.home
+type        = string
+default     =
+abstract    = avd home that was used during the construction of this hardware.ini
+description = This can be used by post processing tools to migrate snapshots
+
diff --git a/linux-x86_64/lib/snapshot.proto b/linux-x86_64/lib/snapshot.proto
new file mode 100644
index 0000000..9229c09
--- /dev/null
+++ b/linux-x86_64/lib/snapshot.proto
@@ -0,0 +1,146 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto2";
+
+// This file must be synchronized between
+//    Emulator (branch aosp/emu-master-dev):
+//        external/qemu/android/android-emu/android/snapshot/proto/snapshot.proto
+//
+//    Android Studio (branch goog/studio-master-dev):
+//        tools/adt/idea/android/src/com/android/emulator/snapshot.proto
+//
+// If you modify one, please modify the other.
+
+package emulator_snapshot;
+
+option java_package = "com.android.emulator";
+
+message Image {
+    enum Type {
+        IMAGE_TYPE_UNKNOWN = 0;
+        IMAGE_TYPE_KERNEL = 1;
+        IMAGE_TYPE_KERNEL_RANCHU = 2;
+        IMAGE_TYPE_SYSTEM = 3;
+        IMAGE_TYPE_SYSTEM_COPY = 4;
+        IMAGE_TYPE_DATA = 5;
+        IMAGE_TYPE_DATA_COPY = 6;
+        IMAGE_TYPE_RAMDISK = 7;
+        IMAGE_TYPE_SDCARD = 8;
+        IMAGE_TYPE_CACHE = 9;
+        IMAGE_TYPE_VENDOR = 10;
+        IMAGE_TYPE_ENCRYPTION_KEY = 11;
+    }
+
+    optional Type type = 1;
+    optional string path = 2;
+    optional bool present = 3;
+    optional int64 size = 4;
+    optional int64 modification_time = 5;
+}
+
+message Host {
+    optional string gpu_driver = 4;
+    optional int32 hypervisor = 5;
+}
+
+message Config {
+    // Features are int32, not enums here to make sure we don't have to update
+    // one more protobuf definition with every single new feature flag, even
+    // when the code doesn't really care about the actual meaning for them,
+    // only for the values.
+    repeated int32 enabled_features = 1;
+
+    // This holds the renderer; int32 for the same reason as |enabled_features|.
+    optional int32 selected_renderer = 2;
+
+    optional int32 cpu_core_count = 3;
+    optional int64 ram_size_bytes = 4;
+}
+
+message SaveStats {
+    // Type of save
+    // 0: non-incremental
+    // 1: incremental
+    optional uint32 incremental = 1;
+    // Time taken to save.
+    optional uint64 duration = 2;
+    // How many changed bytes in RAM.
+    optional uint64 ram_changed_bytes = 3;
+}
+
+message Snapshot {
+    // Update every time when introducing some breaking changes that make the
+    // previous loading code break when trying to load the new snapshot.
+    // NOTE: if the old code is fine with just skipping the new fields or not
+    //       getting the meaning of new values, |version| should remain
+    //       unchanged.
+    optional int32 version = 1;
+
+    // Purely informative: when this snapshot was created, Unix timestamp.
+    optional int64 creation_time = 2;
+
+    // List of mounted disk images used during the snapshot creation.
+    repeated Image images = 3;
+
+    // Description of the host machine properties needed to load this snapshot.
+    optional Host host = 4;
+
+    // Description of the emulator configuration needed for this snapshot.
+    // NOTE: try not to duplicate the configuration that's already in
+    //       hardware-qemu.ini; only add what's either not there or what
+    //       could've been overridden during process initialization.
+    optional Config config = 5;
+
+    // Set if the snapshot failed to load during the last attempt.
+    // Code is up to the application to define, with 0 meaning 'not failed' just
+    // in case.
+    optional int64 failed_to_load_reason_code = 7;
+
+    // Set if data image is mounted.
+    // User build and userdebug build mount data partition at different time.
+    // But it should be done before boot finished, so this field is very likely
+    // to be true.
+    // We snapshot it here just in case someday we support snapshot during
+    // booting.
+    optional bool guest_data_partition_mounted = 8;
+
+    // Emulator rotation angle, in right angles (e.g. 1 is 90 degrees, 2 is 180
+    // etc).
+    optional int32 rotation = 9;
+
+    // Number of invalid loads / crashes that happened under this snapshot.
+    optional int32 invalid_loads = 10;
+
+    // Number of successful loads.
+    optional int32 successful_loads = 11;
+
+    // The name given to the snapshot by the user. Independent of the
+    // file name.
+    optional string logical_name = 12;
+
+    // The file name of this snapshot's parent. The parent is the
+    // snapshot that was loaded into the AVD prior to this snapshot
+    // being taken
+    optional string parent = 13;
+
+    // Arbitrary description added by the user
+    optional string description = 14;
+
+    // Record of save stats.
+    repeated SaveStats save_stats = 15;
+
+    // Folded state.
+    optional bool folded = 16;
+}
diff --git a/linux-x86_64/lib64/emulator-studio-view.jar b/linux-x86_64/lib64/emulator-studio-view.jar
index 77caa3f..ae39673 100644
--- a/linux-x86_64/lib64/emulator-studio-view.jar
+++ b/linux-x86_64/lib64/emulator-studio-view.jar
Binary files differ
diff --git a/linux-x86_64/lib64/libGLES_CM_translator.so b/linux-x86_64/lib64/libGLES_CM_translator.so
index 76bca12..179b353 100644
--- a/linux-x86_64/lib64/libGLES_CM_translator.so
+++ b/linux-x86_64/lib64/libGLES_CM_translator.so
Binary files differ
diff --git a/linux-x86_64/lib64/libGLES_V2_translator.so b/linux-x86_64/lib64/libGLES_V2_translator.so
index c1a84f7..a84d5cb 100644
--- a/linux-x86_64/lib64/libGLES_V2_translator.so
+++ b/linux-x86_64/lib64/libGLES_V2_translator.so
Binary files differ
diff --git a/linux-x86_64/lib64/libOpenglRender.so b/linux-x86_64/lib64/libOpenglRender.so
index 7086987..2de25b5 100644
--- a/linux-x86_64/lib64/libOpenglRender.so
+++ b/linux-x86_64/lib64/libOpenglRender.so
Binary files differ
diff --git a/linux-x86_64/lib64/vulkan/libvk_swiftshader.so b/linux-x86_64/lib64/vulkan/libvk_swiftshader.so
index 5120734..5cc2818 100644
--- a/linux-x86_64/lib64/vulkan/libvk_swiftshader.so
+++ b/linux-x86_64/lib64/vulkan/libvk_swiftshader.so
Binary files differ
diff --git a/linux-x86_64/qemu-img b/linux-x86_64/qemu-img
index 22c4e66..ae1b5d7 100755
--- a/linux-x86_64/qemu-img
+++ b/linux-x86_64/qemu-img
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64 b/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64
index 213230d..9af2add 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64-headless b/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64-headless
index ced7f0e..c4b2db3 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64-headless
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-aarch64-headless
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-armel b/linux-x86_64/qemu/linux-x86_64/qemu-system-armel
index f1b0df3..510d914 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-armel
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-armel
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-armel-headless b/linux-x86_64/qemu/linux-x86_64/qemu-system-armel-headless
new file mode 100755
index 0000000..71764d3
--- /dev/null
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-armel-headless
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-i386 b/linux-x86_64/qemu/linux-x86_64/qemu-system-i386
index 33eb9de..219fd75 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-i386
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-i386
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-i386-headless b/linux-x86_64/qemu/linux-x86_64/qemu-system-i386-headless
index cf388b0..be894a0 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-i386-headless
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-i386-headless
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64 b/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64
index 724cfc3..7a4713b 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64
Binary files differ
diff --git a/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64-headless b/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64-headless
index 4685f0f..fe0def1 100755
--- a/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64-headless
+++ b/linux-x86_64/qemu/linux-x86_64/qemu-system-x86_64-headless
Binary files differ
diff --git a/linux-x86_64/source.properties b/linux-x86_64/source.properties
index ebda06c..359c0e8 100644
--- a/linux-x86_64/source.properties
+++ b/linux-x86_64/source.properties
@@ -1,5 +1,5 @@
 Pkg.UserSrc=false
-Pkg.Revision=29.2.4
+Pkg.Revision=29.2.6
 Pkg.Path=emulator
 Pkg.Desc=Android Emulator
 Pkg.Dependencies=tools#25.3