Remove vr_wm service (try 2)

VR Window Manager has moved to VrCore. Removing deprecated code.

Bug: 36051907
Test: Compiled and verified VR still works.
Change-Id: Iea0c7646df8a068c058099cf19ef7d76bbf89192
diff --git a/services/vr/vr_window_manager/Android.bp b/services/vr/vr_window_manager/Android.bp
deleted file mode 100644
index bba3ac9..0000000
--- a/services/vr/vr_window_manager/Android.bp
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (C) 2016 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.
-
-native_src = [
-    "application.cpp",
-    "controller_mesh.cpp",
-    "elbow_model.cpp",
-    "hwc_callback.cpp",
-    "reticle.cpp",
-    "shell_view.cpp",
-    "surface_flinger_view.cpp",
-    "texture.cpp",
-    "vr_window_manager.cpp",
-    "vr_window_manager_binder.cpp",
-    "aidl/android/service/vr/IVrWindowManager.aidl",
-    "display_view.cpp",
-]
-
-static_libs = [
-    "libdisplay",
-    "libbufferhub",
-    "libbufferhubqueue",
-    "libdvrgraphics",
-    "libdvrcommon",
-    "libhwcomposer-client",
-    "libvrsensor",
-    "libperformance",
-    "libpdx_default_transport",
-    "libcutils",
-    "libvr_hwc-binder",
-    "libvr_manager",
-    "libvirtualtouchpadclient",
-]
-
-shared_libs = [
-    "android.frameworks.vr.composer@1.0",
-    "android.hardware.graphics.composer@2.1",
-    "libbase",
-    "libbinder",
-    "libinput",
-    "libhardware",
-    "libhwbinder",
-    "libsync",
-    "libutils",
-    "libgui",
-    "libEGL",
-    "libGLESv2",
-    "libvulkan",
-    "libsync",
-    "libui",
-    "libhidlbase",
-    "libhidltransport",
-    "liblog",
-    "libvr_hwc-hal",
-]
-
-cc_binary {
-    srcs: native_src,
-    static_libs: static_libs,
-    shared_libs: shared_libs,
-    cflags: ["-DGL_GLEXT_PROTOTYPES", "-DEGL_EGLEXT_PROTOTYPES", "-DLOG_TAG=\"VrWindowManager\""],
-    host_ldlibs: ["-llog"],
-    name: "vr_wm",
-    tags: ["optional"],
-    init_rc: ["vr_wm.rc"],
-}
-
-cmd_src = [
-    "vr_wm_ctl.cpp",
-    "aidl/android/service/vr/IVrWindowManager.aidl",
-]
-
-staticLibs = ["libcutils"]
-
-sharedLibs = [
-    "libbase",
-    "libbinder",
-    "libutils",
-]
-
-cc_binary {
-    srcs: cmd_src,
-    static_libs: staticLibs,
-    shared_libs: sharedLibs,
-    cppflags: ["-std=c++11"],
-    cflags: ["-DLOG_TAG=\"vrwmctl\""],
-    host_ldlibs: ["-llog"],
-    name: "vr_wm_ctl",
-    tags: ["optional"],
-}
diff --git a/services/vr/vr_window_manager/aidl/android/service/vr/IVrWindowManager.aidl b/services/vr/vr_window_manager/aidl/android/service/vr/IVrWindowManager.aidl
deleted file mode 100644
index b16049f..0000000
--- a/services/vr/vr_window_manager/aidl/android/service/vr/IVrWindowManager.aidl
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) 2017, 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.
- */
-
-package android.service.vr;
-
-/** @hide */
-interface IVrWindowManager {
-    const String SERVICE_NAME = "vr_window_manager";
-    void connectController(in FileDescriptor fd) = 0;
-    void disconnectController() = 1;
-    void enterVrMode() = 2;
-    void exitVrMode() = 3;
-    void setDebugMode(int mode) = 4;
-    void set2DMode(int mode) = 5;
-    void setRotation(int angle) = 6;
-}
-
diff --git a/services/vr/vr_window_manager/application.cpp b/services/vr/vr_window_manager/application.cpp
deleted file mode 100644
index 8b4460a..0000000
--- a/services/vr/vr_window_manager/application.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-#include "application.h"
-
-#include <inttypes.h>
-#include <EGL/egl.h>
-#include <GLES3/gl3.h>
-#include <binder/IServiceManager.h>
-#include <dvr/graphics.h>
-#include <dvr/performance_client_api.h>
-#include <dvr/pose_client.h>
-#include <gui/ISurfaceComposer.h>
-#include <hardware/hwcomposer_defs.h>
-#include <log/log.h>
-#include <private/dvr/graphics/vr_gl_extensions.h>
-
-#include <vector>
-
-namespace android {
-namespace dvr {
-
-Application::Application() {
-  vr_mode_listener_ = new VrModeListener(this);
-}
-
-Application::~Application() {
-  sp<IVrManager> vrManagerService = interface_cast<IVrManager>(
-      defaultServiceManager()->getService(String16("vrmanager")));
-  if (vrManagerService.get()) {
-    vrManagerService->unregisterPersistentVrStateListener(vr_mode_listener_);
-  }
-}
-
-int Application::Initialize() {
-  dvrSetCpuPartition(0, "/application/performance");
-
-  bool is_right_handed = true;  // TODO: retrieve setting from system
-  elbow_model_.Enable(ElbowModel::kDefaultNeckPosition, is_right_handed);
-  last_frame_time_ = std::chrono::system_clock::now();
-
-  sp<IVrManager> vrManagerService = interface_cast<IVrManager>(
-      defaultServiceManager()->getService(String16("vrmanager")));
-  if (vrManagerService.get()) {
-    vrManagerService->registerPersistentVrStateListener(vr_mode_listener_);
-  }
-  return 0;
-}
-
-int Application::AllocateResources() {
-  int surface_width = 0, surface_height = 0;
-  DvrLensInfo lens_info = {};
-  GLuint texture_id = 0;
-  GLenum texture_target = 0;
-  std::vector<DvrSurfaceParameter> surface_params = {
-    DVR_SURFACE_PARAMETER_OUT(SURFACE_WIDTH, &surface_width),
-    DVR_SURFACE_PARAMETER_OUT(SURFACE_HEIGHT, &surface_height),
-    DVR_SURFACE_PARAMETER_OUT(INTER_LENS_METERS, &lens_info.inter_lens_meters),
-    DVR_SURFACE_PARAMETER_OUT(LEFT_FOV_LRBT, &lens_info.left_fov),
-    DVR_SURFACE_PARAMETER_OUT(RIGHT_FOV_LRBT, &lens_info.right_fov),
-    DVR_SURFACE_PARAMETER_OUT(SURFACE_TEXTURE_TARGET_TYPE, &texture_target),
-    DVR_SURFACE_PARAMETER_OUT(SURFACE_TEXTURE_TARGET_ID, &texture_id),
-    DVR_SURFACE_PARAMETER_IN(VISIBLE, 0),
-    DVR_SURFACE_PARAMETER_IN(Z_ORDER, 1),
-    DVR_SURFACE_PARAMETER_IN(GEOMETRY, DVR_SURFACE_GEOMETRY_SINGLE),
-    DVR_SURFACE_PARAMETER_IN(ENABLE_LATE_LATCH, 0),
-    DVR_SURFACE_PARAMETER_IN(DISABLE_DISTORTION, 0),
-    DVR_SURFACE_PARAMETER_LIST_END,
-  };
-
-  int ret = dvrGraphicsContextCreate(surface_params.data(), &graphics_context_);
-  if (ret)
-    return ret;
-
-  GLuint fbo = 0;
-  GLuint depth_stencil_buffer = 0;
-  GLuint samples = 1;
-  glGenFramebuffers(1, &fbo);
-  glBindFramebuffer(GL_FRAMEBUFFER, fbo);
-  glFramebufferTexture2DMultisampleEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                                       texture_target, texture_id, 0, samples);
-
-  glGenRenderbuffers(1, &depth_stencil_buffer);
-  glBindRenderbuffer(GL_RENDERBUFFER, depth_stencil_buffer);
-  glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples,
-                                   GL_DEPTH_COMPONENT24, surface_width,
-                                   surface_height);
-
-  glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
-                            GL_RENDERBUFFER, depth_stencil_buffer);
-
-  ALOGI("Surface size=%dx%d", surface_width, surface_height);
-  pose_client_ = dvrPoseCreate();
-  if (!pose_client_)
-    return 1;
-
-  vec2i eye_size(surface_width / 2, surface_height);
-
-  eye_viewport_[0] = Range2i::FromSize(vec2i(0, 0), eye_size);
-  eye_viewport_[1] = Range2i::FromSize(vec2i(surface_width / 2, 0), eye_size);
-
-  eye_from_head_[0] = Eigen::Translation3f(
-      vec3(lens_info.inter_lens_meters * 0.5f, 0.0f, 0.0f));
-  eye_from_head_[1] = Eigen::Translation3f(
-      vec3(-lens_info.inter_lens_meters * 0.5f, 0.0f, 0.0f));
-
-  fov_[0] = FieldOfView(lens_info.left_fov[0], lens_info.left_fov[1],
-                        lens_info.left_fov[2], lens_info.left_fov[3]);
-  fov_[1] = FieldOfView(lens_info.right_fov[0], lens_info.right_fov[1],
-                        lens_info.right_fov[2], lens_info.right_fov[3]);
-
-  return 0;
-}
-
-void Application::DeallocateResources() {
-  if (graphics_context_)
-    dvrGraphicsContextDestroy(graphics_context_);
-  graphics_context_ = nullptr;
-
-  if (pose_client_)
-    dvrPoseDestroy(pose_client_);
-
-  initialized_ = false;
-}
-
-void Application::ProcessTasks(const std::vector<MainThreadTask>& tasks) {
-  for (auto task : tasks) {
-    switch (task) {
-      case MainThreadTask::EnableDebugMode:
-        if (!debug_mode_) {
-          debug_mode_ = true;
-          SetVisibility(debug_mode_);
-        }
-        break;
-      case MainThreadTask::DisableDebugMode:
-        if (debug_mode_) {
-          debug_mode_ = false;
-          SetVisibility(debug_mode_);
-        }
-        break;
-      case MainThreadTask::EnteringVrMode:
-        if (!initialized_) {
-          LOG_ALWAYS_FATAL_IF(AllocateResources(),
-                              "Failed to allocate resources");
-        }
-        break;
-      case MainThreadTask::ExitingVrMode:
-        if (initialized_)
-          DeallocateResources();
-        break;
-      case MainThreadTask::Show:
-        if (!is_visible_)
-          SetVisibility(true);
-        break;
-    }
-  }
-}
-
-void Application::DrawFrame() {
-  // Thread should block if we are invisible or not fully initialized.
-  std::unique_lock<std::mutex> lock(mutex_);
-  wake_up_init_and_render_.wait(lock, [this]() {
-    return (is_visible_ && initialized_) || !main_thread_tasks_.empty();
-  });
-
-  // Process main thread tasks if there are any.
-  std::vector<MainThreadTask> tasks;
-  tasks.swap(main_thread_tasks_);
-  lock.unlock();
-
-  if (!tasks.empty())
-    ProcessTasks(tasks);
-
-  if (!initialized_)
-    return;
-
-  // TODO(steventhomas): If we're not visible, block until we are. For now we
-  // throttle by calling dvrGraphicsWaitNextFrame.
-  DvrFrameSchedule schedule;
-  int status = dvrGraphicsWaitNextFrame(graphics_context_, 0, &schedule);
-  if (status < 0) {
-    ALOGE("Context lost, deallocating graphics resources");
-    SetVisibility(false);
-    DeallocateResources();
-  }
-
-  OnDrawFrame();
-
-  if (is_visible_) {
-    ProcessControllerInput();
-
-    DvrPoseAsync pose;
-    dvrPoseGet(pose_client_, schedule.vsync_count, &pose);
-    last_pose_ = Posef(
-        quat(pose.orientation[3], pose.orientation[0], pose.orientation[1],
-             pose.orientation[2]),
-        vec3(pose.translation[0], pose.translation[1], pose.translation[2]));
-
-    std::chrono::time_point<std::chrono::system_clock> now =
-        std::chrono::system_clock::now();
-    double delta =
-        std::chrono::duration<double>(now - last_frame_time_).count();
-    last_frame_time_ = now;
-
-    if (delta > 1.0f)
-      delta = 0.05f;
-
-    fade_value_ += delta / 0.25f;
-    if (fade_value_ > 1.0f)
-      fade_value_ = 1.0f;
-
-    controller_position_ =
-        elbow_model_.Update(delta, last_pose_.GetRotation(),
-                            controller_orientation_, should_recenter_);
-
-    dvrBeginRenderFrameEds(graphics_context_, pose.orientation,
-                           pose.translation);
-
-    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-    mat4 head_matrix = last_pose_.GetObjectFromReferenceMatrix();
-    glViewport(eye_viewport_[kLeftEye].GetMinPoint()[0],
-               eye_viewport_[kLeftEye].GetMinPoint()[1],
-               eye_viewport_[kLeftEye].GetSize()[0],
-               eye_viewport_[kLeftEye].GetSize()[1]);
-    DrawEye(kLeftEye, fov_[kLeftEye].GetProjectionMatrix(0.1f, 500.0f),
-            eye_from_head_[kLeftEye], head_matrix);
-
-    glViewport(eye_viewport_[kRightEye].GetMinPoint()[0],
-               eye_viewport_[kRightEye].GetMinPoint()[1],
-               eye_viewport_[kRightEye].GetSize()[0],
-               eye_viewport_[kRightEye].GetSize()[1]);
-    DrawEye(kRightEye, fov_[kRightEye].GetProjectionMatrix(0.1f, 500.0f),
-            eye_from_head_[kRightEye], head_matrix);
-
-    OnEndFrame();
-
-    dvrPresent(graphics_context_);
-    should_recenter_ = false;
-  }
-}
-
-void Application::ProcessControllerInput() {
-  if (controller_data_provider_) {
-    shmem_controller_active_ = false;
-    const void* data = controller_data_provider_->LockControllerData();
-    // TODO(kpschoedel): define wire format.
-    if (data) {
-      struct wire_format {
-        uint32_t version;
-        uint32_t timestamph;
-        uint32_t timestampl;
-        uint32_t quat_count;
-        float q[4];
-        uint32_t buttonsh;
-        uint32_t buttonsl;
-      } __attribute__((__aligned__(32)));
-      const wire_format* wire_data = static_cast<const wire_format*>(data);
-      static uint64_t last_timestamp = 0;
-      if (wire_data->version == 1) {
-        shmem_controller_active_ = true;
-        uint64_t timestamp =
-            (((uint64_t)wire_data->timestamph) << 32) | wire_data->timestampl;
-        if (timestamp == last_timestamp) {
-          static uint64_t last_logged_timestamp = 0;
-          if (last_logged_timestamp != last_timestamp) {
-            last_logged_timestamp = last_timestamp;
-            ALOGI("Controller shmem stale T=0x%" PRIX64, last_timestamp);
-          }
-        } else {
-          last_timestamp = timestamp;
-          controller_orientation_ = quat(wire_data->q[3], wire_data->q[0],
-                                         wire_data->q[1], wire_data->q[2]);
-          shmem_controller_buttons_ =
-              (((uint64_t)wire_data->buttonsh) << 32) | wire_data->buttonsl;
-        }
-      } else if (wire_data->version == 0xFEEDFACE) {
-        static bool logged_init = false;
-        if (!logged_init) {
-          logged_init = true;
-          ALOGI("Controller shmem waiting for data");
-        }
-      }
-    }
-    controller_data_provider_->UnlockControllerData();
-    if (shmem_controller_active_) {
-      ALOGV("Controller shmem orientation: %f %f %f %f",
-            controller_orientation_.x(), controller_orientation_.y(),
-            controller_orientation_.z(), controller_orientation_.w());
-      if (shmem_controller_buttons_) {
-        ALOGV("Controller shmem buttons: %017" PRIX64,
-            shmem_controller_buttons_);
-      }
-    }
-  }
-}
-
-void Application::SetVisibility(bool visible) {
-  if (visible && !initialized_) {
-    if (AllocateResources())
-      ALOGE("Failed to allocate resources");
-  }
-
-  bool changed = is_visible_ != visible;
-  if (changed) {
-    is_visible_ = visible;
-    dvrGraphicsSurfaceSetVisible(graphics_context_, is_visible_);
-    OnVisibilityChanged(is_visible_);
-  }
-}
-
-void Application::OnVisibilityChanged(bool visible) {
-  if (visible) {
-    fade_value_ = 0;
-    // We have been sleeping so to ensure correct deltas, reset the time.
-    last_frame_time_ = std::chrono::system_clock::now();
-  }
-}
-
-void Application::QueueTask(MainThreadTask task) {
-  std::unique_lock<std::mutex> lock(mutex_);
-  main_thread_tasks_.push_back(task);
-  wake_up_init_and_render_.notify_one();
-}
-
-void Application::VrModeListener::onPersistentVrStateChanged(bool enabled) {
-  if (!enabled)
-    app_->QueueTask(MainThreadTask::ExitingVrMode);
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/application.h b/services/vr/vr_window_manager/application.h
deleted file mode 100644
index ed99157..0000000
--- a/services/vr/vr_window_manager/application.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_APPLICATION_H_
-#define VR_WINDOW_MANAGER_APPLICATION_H_
-
-#include <memory>
-#include <private/dvr/types.h>
-#include <stdint.h>
-#include <vr/vr_manager/vr_manager.h>
-
-#include <chrono>
-#include <mutex>
-#include <vector>
-
-#include "controller_data_provider.h"
-#include "elbow_model.h"
-
-struct DvrGraphicsContext;
-struct DvrPose;
-
-namespace android {
-namespace dvr {
-
-class Application {
- public:
-  Application();
-  virtual ~Application();
-
-  virtual int Initialize();
-
-  virtual int AllocateResources();
-  virtual void DeallocateResources();
-
-  void DrawFrame();
-
-  void SetControllerDataProvider(ControllerDataProvider* provider) {
-    controller_data_provider_ = provider;
-  }
-
- protected:
-  enum class MainThreadTask {
-    EnteringVrMode,
-    ExitingVrMode,
-    EnableDebugMode,
-    DisableDebugMode,
-    Show,
-  };
-
-  class VrModeListener : public BnPersistentVrStateCallbacks {
-   public:
-    VrModeListener(Application *app) : app_(app) {}
-    void onPersistentVrStateChanged(bool enabled) override;
-
-   private:
-    Application *app_;
-  };
-
-  sp<VrModeListener> vr_mode_listener_;
-  virtual void OnDrawFrame() = 0;
-  virtual void DrawEye(EyeType eye, const mat4& perspective,
-                       const mat4& eye_matrix, const mat4& head_matrix) = 0;
-  virtual void OnEndFrame() = 0;
-
-  void SetVisibility(bool visible);
-  virtual void OnVisibilityChanged(bool visible);
-
-  void ProcessControllerInput();
-
-  void ProcessTasks(const std::vector<MainThreadTask>& tasks);
-
-  void QueueTask(MainThreadTask task);
-
-  DvrGraphicsContext* graphics_context_ = nullptr;
-  DvrPose* pose_client_ = nullptr;
-
-  Range2i eye_viewport_[2];
-  mat4 eye_from_head_[2];
-  FieldOfView fov_[2];
-  Posef last_pose_;
-
-  quat controller_orientation_;
-  bool shmem_controller_active_ = false;
-  uint64_t shmem_controller_buttons_;
-
-  // Used to center the scene when the shell becomes visible.
-  bool should_recenter_ = true;
-
-  bool is_visible_ = false;
-  std::chrono::time_point<std::chrono::system_clock> visibility_button_press_;
-  bool debug_mode_ = false;
-
-  std::chrono::time_point<std::chrono::system_clock> last_frame_time_;
-  vec3 controller_position_;
-  ElbowModel elbow_model_;
-
-  float fade_value_ = 0;
-
-  std::mutex mutex_;
-  std::condition_variable wake_up_init_and_render_;
-  bool initialized_ = false;
-  std::vector<MainThreadTask> main_thread_tasks_;
-
-  // Controller data provider from shared memory buffer.
-  ControllerDataProvider* controller_data_provider_ = nullptr;
-
-  Application(const Application&) = delete;
-  void operator=(const Application&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_APPLICATION_H_
diff --git a/services/vr/vr_window_manager/controller_data_provider.h b/services/vr/vr_window_manager/controller_data_provider.h
deleted file mode 100644
index bc1450c..0000000
--- a/services/vr/vr_window_manager/controller_data_provider.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_CONTROLLER_DATA_PROVIDER_H_
-#define VR_WINDOW_MANAGER_CONTROLLER_DATA_PROVIDER_H_
-
-namespace android {
-namespace dvr {
-
-class ControllerDataProvider {
- public:
-  virtual ~ControllerDataProvider() {}
-  // Returns data pointer or nullptr. If pointer is valid, call to
-  // UnlockControllerData is required.
-  virtual const void* LockControllerData() = 0;
-  virtual void UnlockControllerData() = 0;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_CONTROLLER_DATA_PROVIDER_H_
\ No newline at end of file
diff --git a/services/vr/vr_window_manager/controller_mesh.cpp b/services/vr/vr_window_manager/controller_mesh.cpp
deleted file mode 100644
index c6095b1..0000000
--- a/services/vr/vr_window_manager/controller_mesh.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#include "controller_mesh.h"
-
-namespace android {
-namespace dvr {
-
-const int kNumControllerMeshVertices = 60;
-
-// Vertices in position.xyz, normal.xyz, uv.xy oder.
-// Generated from an .obj mesh.
-const float kControllerMeshVertices[] = {
-    0.002023,  0.001469,  -0.5, 0.809016,  0.587787,  0, 0,   0,
-    0.000773,  0.002378,  -0.5, 0.309004,  0.951061,  0, 0.1, 0,
-    0.000773,  0.002378,  0,    0.309004,  0.951061,  0, 0.1, 1,
-    0.002023,  0.001469,  -0.5, 0.809016,  0.587787,  0, 0,   0,
-    0.000773,  0.002378,  0,    0.309004,  0.951061,  0, 0.1, 1,
-    0.002023,  0.001469,  0,    0.809016,  0.587787,  0, 0,   1,
-    0.000773,  0.002378,  -0.5, 0.309004,  0.951061,  0, 0.1, 0,
-    -0.000773, 0.002378,  -0.5, -0.309004, 0.951061,  0, 0.2, 0,
-    -0.000773, 0.002378,  0,    -0.309004, 0.951061,  0, 0.2, 1,
-    0.000773,  0.002378,  -0.5, 0.309004,  0.951061,  0, 0.1, 0,
-    -0.000773, 0.002378,  0,    -0.309004, 0.951061,  0, 0.2, 1,
-    0.000773,  0.002378,  0,    0.309004,  0.951061,  0, 0.1, 1,
-    -0.000773, 0.002378,  -0.5, -0.309004, 0.951061,  0, 0.2, 0,
-    -0.002023, 0.001469,  -0.5, -0.809016, 0.587787,  0, 0.3, 0,
-    -0.002023, 0.001469,  0,    -0.809016, 0.587787,  0, 0.3, 1,
-    -0.000773, 0.002378,  -0.5, -0.309004, 0.951061,  0, 0.2, 0,
-    -0.002023, 0.001469,  0,    -0.809016, 0.587787,  0, 0.3, 1,
-    -0.000773, 0.002378,  0,    -0.309004, 0.951061,  0, 0.2, 1,
-    -0.002023, 0.001469,  -0.5, -0.809016, 0.587787,  0, 0.3, 0,
-    -0.0025,   0,         -0.5, -1,        -0,        0, 0.4, 0,
-    -0.0025,   0,         0,    -1,        -0,        0, 0.4, 1,
-    -0.002023, 0.001469,  -0.5, -0.809016, 0.587787,  0, 0.3, 0,
-    -0.0025,   0,         0,    -1,        -0,        0, 0.4, 1,
-    -0.002023, 0.001469,  0,    -0.809016, 0.587787,  0, 0.3, 1,
-    -0.0025,   0,         -0.5, -1,        -0,        0, 0.4, 0,
-    -0.002023, -0.001469, -0.5, -0.809016, -0.587787, 0, 0.5, 0,
-    -0.002023, -0.001469, 0,    -0.809016, -0.587787, 0, 0.5, 1,
-    -0.0025,   0,         -0.5, -1,        -0,        0, 0.4, 0,
-    -0.002023, -0.001469, 0,    -0.809016, -0.587787, 0, 0.5, 1,
-    -0.0025,   0,         0,    -1,        -0,        0, 0.4, 1,
-    -0.002023, -0.001469, -0.5, -0.809016, -0.587787, 0, 0.5, 0,
-    -0.000773, -0.002378, -0.5, -0.309004, -0.951061, 0, 0.6, 0,
-    -0.000773, -0.002378, 0,    -0.309004, -0.951061, 0, 0.6, 1,
-    -0.002023, -0.001469, -0.5, -0.809016, -0.587787, 0, 0.5, 0,
-    -0.000773, -0.002378, 0,    -0.309004, -0.951061, 0, 0.6, 1,
-    -0.002023, -0.001469, 0,    -0.809016, -0.587787, 0, 0.5, 1,
-    -0.000773, -0.002378, -0.5, -0.309004, -0.951061, 0, 0.6, 0,
-    0.000773,  -0.002378, -0.5, 0.309004,  -0.951061, 0, 0.7, 0,
-    0.000773,  -0.002378, 0,    0.309004,  -0.951061, 0, 0.7, 1,
-    -0.000773, -0.002378, -0.5, -0.309004, -0.951061, 0, 0.6, 0,
-    0.000773,  -0.002378, 0,    0.309004,  -0.951061, 0, 0.7, 1,
-    -0.000773, -0.002378, 0,    -0.309004, -0.951061, 0, 0.6, 1,
-    0.000773,  -0.002378, -0.5, 0.309004,  -0.951061, 0, 0.7, 0,
-    0.002023,  -0.001469, -0.5, 0.809016,  -0.587787, 0, 0.8, 0,
-    0.002023,  -0.001469, 0,    0.809016,  -0.587787, 0, 0.8, 1,
-    0.000773,  -0.002378, -0.5, 0.309004,  -0.951061, 0, 0.7, 0,
-    0.002023,  -0.001469, 0,    0.809016,  -0.587787, 0, 0.8, 1,
-    0.000773,  -0.002378, 0,    0.309004,  -0.951061, 0, 0.7, 1,
-    0.002023,  -0.001469, -0.5, 0.809016,  -0.587787, 0, 0.8, 0,
-    0.0025,    0,         -0.5, 1,         0,         0, 0.9, 0,
-    0.0025,    0,         0,    1,         0,         0, 0.9, 1,
-    0.002023,  -0.001469, -0.5, 0.809016,  -0.587787, 0, 0.8, 0,
-    0.0025,    0,         0,    1,         0,         0, 0.9, 1,
-    0.002023,  -0.001469, 0,    0.809016,  -0.587787, 0, 0.8, 1,
-    0.0025,    0,         -0.5, 1,         0,         0, 0.9, 0,
-    0.002023,  0.001469,  -0.5, 0.809016,  0.587787,  0, 1,   0,
-    0.002023,  0.001469,  0,    0.809016,  0.587787,  0, 1,   1,
-    0.0025,    0,         -0.5, 1,         0,         0, 0.9, 0,
-    0.002023,  0.001469,  0,    0.809016,  0.587787,  0, 1,   1,
-    0.0025,    0,         0,    1,         0,         0, 0.9, 1,
-
-};
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/controller_mesh.h b/services/vr/vr_window_manager/controller_mesh.h
deleted file mode 100644
index 88872c7..0000000
--- a/services/vr/vr_window_manager/controller_mesh.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_CONTROLLER_MESH_H_
-#define VR_WINDOW_MANAGER_CONTROLLER_MESH_H_
-
-namespace android {
-namespace dvr {
-
-extern const int kNumControllerMeshVertices;
-extern const float kControllerMeshVertices[];
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_CONTROLLER_MESH_H_
diff --git a/services/vr/vr_window_manager/display_view.cpp b/services/vr/vr_window_manager/display_view.cpp
deleted file mode 100644
index 88768a0..0000000
--- a/services/vr/vr_window_manager/display_view.cpp
+++ /dev/null
@@ -1,458 +0,0 @@
-#include "display_view.h"
-
-#include "texture.h"
-
-namespace android {
-namespace dvr {
-
-namespace {
-
-constexpr float kLayerScaleFactor = 3.0f;
-constexpr unsigned int kMaximumPendingFrames = 8;
-constexpr uint32_t kSystemId = 1000;
-
-// clang-format off
-const GLfloat kVertices[] = {
-  -1, -1, 0,
-   1, -1, 0,
-  -1, 1, 0,
-   1, 1, 0,
-};
-
-const GLfloat kTextureVertices[] = {
-  0, 1,
-  1, 1,
-  0, 0,
-  1, 0,
-};
-// clang-format on
-
-// Returns true if the given point is inside the given rect.
-bool IsInside(const vec2& pt, const vec2& tl, const vec2& br) {
-  return pt.x() >= tl.x() && pt.x() <= br.x() && pt.y() >= tl.y() &&
-         pt.y() <= br.y();
-}
-
-mat4 GetScalingMatrix(float width, float height) {
-  float xscale = 1, yscale = 1;
-  float ar = width / height;
-  if (ar > 1)
-    yscale = 1.0 / ar;
-  else
-    xscale = ar;
-
-  xscale *= kLayerScaleFactor;
-  yscale *= kLayerScaleFactor;
-
-  return mat4(Eigen::Scaling<float>(xscale, yscale, 1.0));
-}
-
-// Helper function that applies the crop transform to the texture layer and
-// positions (and scales) the texture layer in the appropriate location in the
-// display space.
-mat4 GetLayerTransform(const TextureLayer& texture_layer, float display_width,
-                       float display_height) {
-  // Map from vertex coordinates to [0, 1] coordinates:
-  //  1) Flip y since in vertex coordinates (-1, -1) is at the bottom left and
-  //     in texture coordinates (0, 0) is at the top left.
-  //  2) Translate by (1, 1) to map vertex coordinates to [0, 2] on x and y.
-  //  3) Scale by 1 / 2 to map coordinates to [0, 1] on x  and y.
-  mat4 unit_space(Eigen::AlignedScaling3f(0.5f, 0.5f, 1.0f) *
-                  Eigen::Translation3f(1.0f, 1.0f, 0.0f) *
-                  Eigen::AlignedScaling3f(1.0f, -1.0f, 1.0f));
-
-  mat4 texture_space(Eigen::AlignedScaling3f(
-      texture_layer.texture->width(), texture_layer.texture->height(), 1.0f));
-
-  // 1) Translate the layer to crop the left and top edge.
-  // 2) Scale the layer such that the cropped right and bottom edges map outside
-  //    the exture region.
-  float crop_width = texture_layer.crop.right - texture_layer.crop.left;
-  float crop_height = texture_layer.crop.bottom - texture_layer.crop.top;
-  mat4 texture_crop(Eigen::AlignedScaling3f(
-                        texture_layer.texture->width() / crop_width,
-                        texture_layer.texture->height() / crop_height, 1.0f) *
-                    Eigen::Translation3f(-texture_layer.crop.left,
-                                         -texture_layer.crop.top, 0.0f));
-
-  mat4 display_space(
-      Eigen::AlignedScaling3f(display_width, display_height, 1.0f));
-
-  // 1) Scale the texture to fit the display frame.
-  // 2) Translate the texture in the display frame location.
-  float display_frame_width =
-      texture_layer.display_frame.right - texture_layer.display_frame.left;
-  float display_frame_height =
-      texture_layer.display_frame.bottom - texture_layer.display_frame.top;
-  mat4 display_frame(
-      Eigen::Translation3f(texture_layer.display_frame.left,
-                           texture_layer.display_frame.top, 0.0f) *
-      Eigen::AlignedScaling3f(display_frame_width / display_width,
-                              display_frame_height / display_height, 1.0f));
-
-  mat4 layer_transform = unit_space.inverse() * display_space.inverse() *
-                         display_frame * display_space *
-                         texture_space.inverse() * texture_crop *
-                         texture_space * unit_space;
-  return layer_transform;
-}
-
-// Determine if ths frame should be shown or hidden.
-ViewMode CalculateVisibilityFromLayerConfig(const HwcCallback::Frame& frame,
-                                            uint32_t* appid) {
-  auto& layers = frame.layers();
-
-  size_t index;
-  // Skip all layers that we don't know about.
-  for (index = 0; index < layers.size(); index++) {
-    if (layers[index].type != 0xFFFFFFFF && layers[index].type != 0)
-      break;
-  }
-
-  if (index == layers.size())
-    return ViewMode::Hidden;
-
-  if (layers[index].type != 1) {
-    // We don't have a VR app layer? Abort.
-    return ViewMode::Hidden;
-  }
-
-  if (layers[index].appid != *appid) {
-    *appid = layers[index].appid;
-    return ViewMode::App;
-  }
-
-  // This is the VR app, ignore it.
-  index++;
-
-  // Now, find a dim layer if it exists.
-  // If it does, ignore any layers behind it for visibility determination.
-  for (size_t i = index; i < layers.size(); i++) {
-    if (layers[i].appid == HwcCallback::HwcLayer::kSurfaceFlingerLayer) {
-      index = i + 1;
-    }
-  }
-
-  // If any non-skipped layers exist now then we show, otherwise hide.
-  for (size_t i = index; i < layers.size(); i++) {
-    if (!layers[i].should_skip_layer())
-      return ViewMode::VR;
-  }
-
-  return ViewMode::Hidden;
-}
-
-}  // namespace
-
-DisplayView::DisplayView(uint32_t id, int touchpad_id)
-    : id_(id), touchpad_id_(touchpad_id) {
-  translate_ = Eigen::Translation3f(0, 0, -5.0f);
-  ime_translate_ = mat4(Eigen::Translation3f(0.0f, -0.5f, 0.25f));
-  ime_top_left_ = vec2(0, 0);
-  ime_size_ = vec2(0, 0);
-  rotation_ = mat4::Identity();
-}
-
-DisplayView::~DisplayView() {}
-
-void DisplayView::Recenter(const mat4& initial) {
-  initial_head_matrix_ =
-      initial * Eigen::AngleAxisf(M_PI * 0.5f, vec3::UnitZ());
-}
-
-void DisplayView::SetPrograms(ShaderProgram* program,
-                              ShaderProgram* overlay_program) {
-  program_ = program;
-  overlay_program_ = overlay_program;
-}
-
-void DisplayView::DrawEye(EyeType /* eye */, const mat4& perspective,
-                          const mat4& eye_matrix, const mat4& head_matrix,
-                          float fade_value) {
-  scale_ = GetScalingMatrix(size_.x(), size_.y());
-
-  DrawOverlays(perspective, eye_matrix, head_matrix, fade_value);
-}
-
-void DisplayView::AdvanceFrame() {
-  if (!pending_frames_.empty()) {
-    // Check if we should advance the frame.
-    auto& frame = pending_frames_.front();
-    if (frame.visibility == ViewMode::Hidden ||
-        frame.frame->Finish() == HwcCallback::FrameStatus::kFinished) {
-      current_frame_ = std::move(frame);
-      pending_frames_.pop_front();
-    }
-  }
-}
-
-void DisplayView::OnDrawFrame(SurfaceFlingerView* surface_flinger_view,
-                              bool debug_mode) {
-  textures_.clear();
-  has_ime_ = false;
-
-  if (!visible())
-    return;
-
-  surface_flinger_view->GetTextures(*current_frame_.frame.get(), &textures_,
-                                    &ime_texture_, debug_mode,
-                                    current_frame_.visibility == ViewMode::VR);
-  has_ime_ = ime_texture_.texture != nullptr;
-}
-
-base::unique_fd DisplayView::OnFrame(std::unique_ptr<HwcCallback::Frame> frame,
-                                     bool debug_mode, bool is_vr_active,
-                                     bool* showing) {
-  size_ = vec2(frame->display_width(), frame->display_height());
-  uint32_t app = current_vr_app_;
-  ViewMode visibility = CalculateVisibilityFromLayerConfig(*frame.get(), &app);
-
-  if (visibility == ViewMode::Hidden && debug_mode)
-    visibility = ViewMode::VR;
-
-  if (frame->layers().empty()) {
-    current_vr_app_ = 0;
-  } else if (visibility == ViewMode::App) {
-    // This is either a VR app switch or a 2D app launching.
-    // If we can have VR apps, update if it's 0.
-    if (!always_2d_ && is_vr_active && !use_2dmode_ && app != kSystemId) {
-      visibility = ViewMode::Hidden;
-      current_vr_app_ = app;
-    }
-  } else if ((use_2dmode_ || !is_vr_active) && app != 0 &&
-             visibility == ViewMode::Hidden) {
-    // This is the case for the VR app launching a 2D intent of itself on some
-    // display.
-    visibility = ViewMode::App;
-  } else if (!current_vr_app_) {
-    // The VR app is running.
-    current_vr_app_ = app;
-  }
-
-  pending_frames_.emplace_back(std::move(frame), visibility);
-
-  if (pending_frames_.size() > kMaximumPendingFrames) {
-    pending_frames_.pop_front();
-  }
-
-  if (visibility == ViewMode::Hidden &&
-      current_frame_.visibility == ViewMode::Hidden) {
-    // Consume all frames while hidden.
-    while (!pending_frames_.empty())
-      AdvanceFrame();
-  }
-
-  // If we are showing ourselves the main thread is not processing anything,
-  // so give it a kick.
-  if (visibility != ViewMode::Hidden &&
-      current_frame_.visibility == ViewMode::Hidden) {
-    *showing = true;
-  }
-
-  return base::unique_fd(dup(release_fence_.get()));
-}
-
-bool DisplayView::IsHit(const vec3& view_location, const vec3& view_direction,
-                        vec3* hit_location, vec2* hit_location_in_window_coord,
-                        bool test_ime) {
-  mat4 m = GetStandardTransform();
-  if (test_ime)
-    m = m * ime_translate_;
-  mat4 inverse = (m * scale_).inverse();
-  vec4 transformed_loc =
-      inverse * vec4(view_location[0], view_location[1], view_location[2], 1);
-  vec4 transformed_dir = inverse * vec4(view_direction[0], view_direction[1],
-                                        view_direction[2], 0);
-
-  if (transformed_dir.z() >= 0 || transformed_loc.z() <= 0)
-    return false;
-
-  float distance = -transformed_loc.z() / transformed_dir.z();
-  vec4 transformed_hit_loc = transformed_loc + transformed_dir * distance;
-  if (transformed_hit_loc.x() < -1 || transformed_hit_loc.x() > 1)
-    return false;
-  if (transformed_hit_loc.y() < -1 || transformed_hit_loc.y() > 1)
-    return false;
-
-  hit_location_in_window_coord->x() =
-      (1 + transformed_hit_loc.x()) / 2 * size_.x();
-  hit_location_in_window_coord->y() =
-      (1 - transformed_hit_loc.y()) / 2 * size_.y();
-
-  *hit_location = view_location + view_direction * distance;
-  return true;
-}
-
-void DisplayView::DrawOverlays(const mat4& perspective, const mat4& eye_matrix,
-                               const mat4& head_matrix, float fade_value) {
-  if (textures_.empty())
-    return;
-
-  program_->Use();
-  mat4 mvp = perspective * eye_matrix * head_matrix;
-  GLint view_projection_location =
-      glGetUniformLocation(program_->GetProgram(), "uViewProjection");
-  glUniformMatrix4fv(view_projection_location, 1, 0, mvp.data());
-
-  GLint alpha_location = glGetUniformLocation(program_->GetProgram(), "uAlpha");
-
-  GLint tex_location = glGetUniformLocation(program_->GetProgram(), "tex");
-  glUniform1i(tex_location, 0);
-  glActiveTexture(GL_TEXTURE0);
-
-  for (const auto& texture_layer : textures_) {
-    switch (texture_layer.blending) {
-      case HWC2_BLEND_MODE_PREMULTIPLIED:
-        glEnable(GL_BLEND);
-        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
-        break;
-      case HWC2_BLEND_MODE_COVERAGE:
-        glEnable(GL_BLEND);
-        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-        break;
-      default:
-        break;
-    }
-
-    glUniform1f(alpha_location, fade_value * texture_layer.alpha);
-
-    glBindTexture(GL_TEXTURE_2D, texture_layer.texture->id());
-
-    mat4 layer_transform =
-        GetLayerTransform(texture_layer, size_.x(), size_.y());
-
-    mat4 transform = GetStandardTransform() * scale_ * layer_transform;
-    DrawWithTransform(transform, *program_);
-
-    glDisable(GL_BLEND);
-  }
-
-  if (has_ime_) {
-    ime_top_left_ = vec2(static_cast<float>(ime_texture_.display_frame.left),
-                         static_cast<float>(ime_texture_.display_frame.top));
-    ime_size_ = vec2(static_cast<float>(ime_texture_.display_frame.right -
-                                        ime_texture_.display_frame.left),
-                     static_cast<float>(ime_texture_.display_frame.bottom -
-                                        ime_texture_.display_frame.top));
-
-    DrawDimOverlay(mvp, textures_[0], ime_top_left_, ime_top_left_ + ime_size_);
-
-    DrawIme();
-  }
-}
-
-void DisplayView::UpdateReleaseFence() {
-  EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-  EGLSyncKHR sync =
-      eglCreateSyncKHR(display, EGL_SYNC_NATIVE_FENCE_ANDROID, nullptr);
-  if (sync != EGL_NO_SYNC_KHR) {
-    // Need to flush in order to get the fence FD.
-    glFlush();
-    base::unique_fd fence(eglDupNativeFenceFDANDROID(display, sync));
-    eglDestroySyncKHR(display, sync);
-    release_fence_ = std::move(fence);
-  } else {
-    ALOGE("Failed to create sync fence");
-    release_fence_ = base::unique_fd();
-  }
-}
-
-mat4 DisplayView::GetStandardTransform() {
-  mat4 m = initial_head_matrix_ * rotation_ * translate_;
-  if (current_frame_.visibility == ViewMode::App)
-    m *= Eigen::AngleAxisf(M_PI * -0.5f, vec3::UnitZ());
-  return m;
-}
-
-void DisplayView::DrawIme() {
-  program_->Use();
-  glBindTexture(GL_TEXTURE_2D, ime_texture_.texture->id());
-
-  mat4 layer_transform = GetLayerTransform(ime_texture_, size_.x(), size_.y());
-
-  mat4 transform =
-      GetStandardTransform() * ime_translate_ * scale_ * layer_transform;
-
-  DrawWithTransform(transform, *program_);
-}
-
-void DisplayView::DrawDimOverlay(const mat4& mvp, const TextureLayer& layer,
-                                 const vec2& top_left,
-                                 const vec2& bottom_right) {
-  overlay_program_->Use();
-  glUniformMatrix4fv(
-      glGetUniformLocation(overlay_program_->GetProgram(), "uViewProjection"),
-      1, 0, mvp.data());
-  glUniform4f(glGetUniformLocation(overlay_program_->GetProgram(), "uCoords"),
-              top_left.x() / size_.x(), top_left.y() / size_.y(),
-              bottom_right.x() / size_.x(), bottom_right.y() / size_.y());
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  mat4 layer_transform = GetLayerTransform(layer, size_.x(), size_.y());
-
-  mat4 transform = GetStandardTransform() * scale_ * layer_transform;
-  DrawWithTransform(transform, *overlay_program_);
-  glDisable(GL_BLEND);
-}
-
-void DisplayView::DrawWithTransform(const mat4& transform,
-                                    const ShaderProgram& program) {
-  GLint transform_location =
-      glGetUniformLocation(program.GetProgram(), "uTransform");
-  glUniformMatrix4fv(transform_location, 1, 0, transform.data());
-
-  glEnableVertexAttribArray(0);
-  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, kVertices);
-  glEnableVertexAttribArray(1);
-  glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, kTextureVertices);
-  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-}
-
-bool DisplayView::UpdateHitInfo(const vec3& view_location,
-                                const vec3& view_direction,
-                                vec3* hit_location) {
-  bool is_hit = false;
-  if (has_ime_) {
-    // This will set allow_input_ and hit_location_in_window_coord_.
-    is_hit = IsImeHit(view_location, view_direction, hit_location);
-  } else {
-    is_hit = IsHit(view_location, view_direction, hit_location,
-                   &hit_location_in_window_coord_, false);
-    allow_input_ = is_hit;
-  }
-  return is_hit;
-}
-
-bool DisplayView::IsImeHit(const vec3& view_location,
-                           const vec3& view_direction, vec3* hit_location) {
-  // First, check if the IME window is hit.
-  bool is_hit = IsHit(view_location, view_direction, hit_location,
-                      &hit_location_in_window_coord_, true);
-  if (is_hit) {
-    // If it is, check if the window coordinate is in the IME region;
-    // if so then we are done.
-    if (IsInside(hit_location_in_window_coord_, ime_top_left_,
-                 ime_top_left_ + ime_size_)) {
-      allow_input_ = true;
-      return true;
-    }
-  }
-
-  allow_input_ = false;
-  // Check if we have hit the main window.
-  is_hit = IsHit(view_location, view_direction, hit_location,
-                 &hit_location_in_window_coord_, false);
-  if (is_hit) {
-    // Only allow input if we are not hitting the region hidden by the IME.
-    // Allowing input here would cause clicks on the main window to actually
-    // be clicks on the IME.
-    if (!IsInside(hit_location_in_window_coord_, ime_top_left_,
-                  ime_top_left_ + ime_size_)) {
-      allow_input_ = true;
-    }
-  }
-  return is_hit;
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/display_view.h b/services/vr/vr_window_manager/display_view.h
deleted file mode 100644
index ad624c6..0000000
--- a/services/vr/vr_window_manager/display_view.h
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_DISPLAY_VIEW_H_
-#define VR_WINDOW_MANAGER_DISPLAY_VIEW_H_
-
-#include <private/dvr/graphics/mesh.h>
-#include <private/dvr/graphics/shader_program.h>
-
-#include "hwc_callback.h"
-#include "surface_flinger_view.h"
-
-namespace android {
-namespace dvr {
-
-enum class ViewMode {
-  Hidden,
-  VR,
-  App,
-};
-
-class DisplayView {
- public:
-  DisplayView(uint32_t id, int touchpad_id);
-  ~DisplayView();
-
-  // Calls to these 3 functions must be synchronized.
-  base::unique_fd OnFrame(std::unique_ptr<HwcCallback::Frame> frame,
-                          bool debug_mode, bool is_vr_active, bool* showing);
-  void AdvanceFrame();
-  void UpdateReleaseFence();
-
-  void OnDrawFrame(SurfaceFlingerView* surface_flinger_view, bool debug_mode);
-  void DrawEye(EyeType eye, const mat4& perspective, const mat4& eye_matrix,
-               const mat4& head_matrix, float fade_value);
-
-  void Recenter(const mat4& initial);
-
-  bool UpdateHitInfo(const vec3& view_location, const vec3& view_direction,
-                     vec3* hit_location);
-
-  void SetPrograms(ShaderProgram* program, ShaderProgram* overlay_program);
-
-  bool visible() const { return current_frame_.visibility != ViewMode::Hidden; }
-  bool allow_input() const { return allow_input_; }
-  const vec2& hit_location() const { return hit_location_in_window_coord_; }
-  uint32_t id() const { return id_; }
-  int touchpad_id() const { return touchpad_id_; }
-  vec2 size() const { return size_; }
-
-  void set_2dmode(bool mode) { use_2dmode_ = mode; }
-  void set_always_2d(bool mode) { always_2d_ = mode; }
-
-  void set_rotation(const mat4& rotation) { rotation_ = rotation; }
-
- private:
-  bool IsHit(const vec3& view_location, const vec3& view_direction,
-             vec3* hit_location, vec2* hit_location_in_window_coord,
-             bool test_ime);
-  bool IsImeHit(const vec3& view_location, const vec3& view_direction,
-                vec3* hit_location);
-  void DrawOverlays(const mat4& perspective, const mat4& eye_matrix,
-                    const mat4& head_matrix, float fade_value);
-  void DrawIme();
-  void DrawDimOverlay(const mat4& mvp, const TextureLayer& layer,
-                      const vec2& top_left, const vec2& bottom_right);
-  void DrawWithTransform(const mat4& transform, const ShaderProgram& program);
-
-  // This is the rotated, translated but unscaled transform to apply everywhere.
-  mat4 GetStandardTransform();
-
-  uint32_t id_;
-  int touchpad_id_;
-
-  uint32_t current_vr_app_;
-
-  ShaderProgram* program_;
-  ShaderProgram* overlay_program_;
-
-  mat4 initial_head_matrix_;
-  mat4 scale_;
-  mat4 translate_;
-  mat4 ime_translate_;
-  mat4 rotation_;
-  vec2 size_;
-
-  std::vector<TextureLayer> textures_;
-  TextureLayer ime_texture_;
-
-  bool allow_input_ = false;
-  vec2 hit_location_in_window_coord_;
-  vec2 ime_top_left_;
-  vec2 ime_size_;
-  bool has_ime_ = false;
-  bool use_2dmode_ = false;
-  bool always_2d_ = false;
-
-  struct PendingFrame {
-    PendingFrame() = default;
-    PendingFrame(std::unique_ptr<HwcCallback::Frame>&& frame,
-                 ViewMode visibility)
-        : frame(std::move(frame)), visibility(visibility) {}
-    PendingFrame(PendingFrame&& r)
-        : frame(std::move(r.frame)), visibility(r.visibility) {}
-
-    void operator=(PendingFrame&& r) {
-      frame.reset(r.frame.release());
-      visibility = r.visibility;
-    }
-
-    std::unique_ptr<HwcCallback::Frame> frame;
-    ViewMode visibility = ViewMode::Hidden;
-  };
-  std::deque<PendingFrame> pending_frames_;
-  PendingFrame current_frame_;
-  base::unique_fd release_fence_;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_DISPLAY_VIEW_H_
diff --git a/services/vr/vr_window_manager/elbow_model.cpp b/services/vr/vr_window_manager/elbow_model.cpp
deleted file mode 100644
index 9543f17..0000000
--- a/services/vr/vr_window_manager/elbow_model.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-#include "elbow_model.h"
-
-#include <log/log.h>
-
-namespace android {
-namespace dvr {
-namespace {
-
-const vec3 kControllerForearm(0.0f, 0.0f, -0.25f);
-const vec3 kControllerPosition(0.0f, 0.0f, -0.05f);
-const vec3 kLeftElbowPosition(-0.195f, -0.5f, 0.075f);
-const vec3 kLeftArmExtension(0.13f, 0.14f, -0.08f);
-const vec3 kRightElbowPosition(0.195f, -0.5f, 0.075f);
-const vec3 kRightArmExtension(-0.13f, 0.14f, -0.08f);
-constexpr float kElbowBendRatio = 0.4f;
-constexpr float kCosMaxExtensionAngle =
-    0.87f;  // Cos of 30 degrees (90-30 = 60)
-constexpr float kCosMinExtensionAngle = 0.12f;  // Cos of 83 degrees (90-83 = 7)
-constexpr float kYAxisExtensionFraction = 0.4f;
-constexpr float kMinRotationSpeed = 0.61f;  // 35 degrees in radians
-constexpr float kMinAngleDelta = 0.175f;    // 10 degrees in radians
-
-float clamp(float v, float min, float max) {
-  if (v < min)
-    return min;
-  if (v > max)
-    return max;
-  return v;
-}
-
-float NormalizeAngle(float angle) {
-  if (angle > M_PI)
-    angle = 2.0f * M_PI - angle;
-  return angle;
-}
-
-}  // namespace
-
-const vec3 ElbowModel::kDefaultNeckPosition = vec3(0, -0.075f, -0.080f);
-
-ElbowModel::ElbowModel() {}
-ElbowModel::~ElbowModel() {}
-
-void ElbowModel::Enable(const vec3& neck_position, bool right_handed) {
-  enabled_ = true;
-  neck_position_ = neck_position;
-
-  if (right_handed) {
-    elbow_position_ = kRightElbowPosition;
-    arm_extension_ = kRightArmExtension;
-  } else {
-    elbow_position_ = kLeftElbowPosition;
-    arm_extension_ = kLeftArmExtension;
-  }
-
-  ResetRoot();
-}
-
-void ElbowModel::Disable() { enabled_ = false; }
-
-vec3 ElbowModel::Update(float delta_t, const quat& hmd_orientation,
-                        const quat& controller_orientation, bool recenter) {
-  if (!enabled_)
-    return vec3::Zero();
-
-  float heading_rad = GetHeading(hmd_orientation);
-
-  quat y_rotation;
-  y_rotation = Eigen::AngleAxis<float>(heading_rad, vec3::UnitY());
-
-  // If the controller's angular velocity is above a certain amount, we can
-  // assume torso rotation and move the elbow joint relative to the
-  // camera orientation.
-  float angle_delta = last_controller_.angularDistance(controller_orientation);
-  float rot_speed = angle_delta / delta_t;
-
-  if (recenter) {
-    root_rot_ = y_rotation;
-  } else if (rot_speed > kMinRotationSpeed) {
-    root_rot_.slerp(angle_delta / kMinAngleDelta, y_rotation);
-  }
-
-  // Calculate angle (or really, cos thereof) between controller forward vector
-  // and Y axis to determine extension amount.
-  vec3 controller_forward_rotated = controller_orientation * -vec3::UnitZ();
-  float dot_y = controller_forward_rotated.y();
-  float amt_extension = clamp(dot_y - kCosMinExtensionAngle, 0, 1);
-
-  // Remove the root rotation from the orientation reading--we'll add it back in
-  // later.
-  quat controller_rot = root_rot_.inverse() * controller_orientation;
-  controller_forward_rotated = controller_rot * -vec3::UnitZ();
-  quat rot_xy;
-  rot_xy.setFromTwoVectors(-vec3::UnitZ(), controller_forward_rotated);
-
-  // Fixing polar singularity
-  float total_angle = NormalizeAngle(atan2f(rot_xy.norm(), rot_xy.w()) * 2.0f);
-  float lerp_amount = (1.0f - powf(total_angle / M_PI, 6.0f)) *
-                      (1.0f - (kElbowBendRatio +
-                               (1.0f - kElbowBendRatio) *
-                                   (amt_extension + kYAxisExtensionFraction)));
-
-  // Calculate the relative rotations of the elbow and wrist joints.
-  quat wrist_rot = quat::Identity();
-  wrist_rot.slerp(lerp_amount, rot_xy);
-  quat elbow_rot = wrist_rot.inverse() * rot_xy;
-
-  last_controller_ = controller_orientation;
-
-  vec3 position =
-      root_rot_ *
-      ((controller_root_offset_ + arm_extension_ * amt_extension) +
-       elbow_rot * (kControllerForearm + wrist_rot * kControllerPosition));
-
-  return position;
-}
-
-float ElbowModel::GetHeading(const quat& orientation) {
-  vec3 gaze = orientation * -vec3::UnitZ();
-
-  if (gaze.y() > 0.99)
-    gaze = orientation * -vec3::UnitY();
-  else if (gaze.y() < -0.99)
-    gaze = orientation * vec3::UnitY();
-
-  return atan2f(-gaze.x(), -gaze.z());
-}
-
-void ElbowModel::ResetRoot() {
-  controller_root_offset_ = elbow_position_ + neck_position_;
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/elbow_model.h b/services/vr/vr_window_manager/elbow_model.h
deleted file mode 100644
index a6d5ca9..0000000
--- a/services/vr/vr_window_manager/elbow_model.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_ELBOW_MODEL_H_
-#define VR_WINDOW_MANAGER_ELBOW_MODEL_H_
-
-#include <private/dvr/types.h>
-
-namespace android {
-namespace dvr {
-
-class ElbowModel {
- public:
-  ElbowModel();
-  ~ElbowModel();
-
-  void Enable(const vec3& neck_position, bool right_handed);
-  void Disable();
-
-  vec3 Update(float delta_t, const quat& hmd_orientation,
-              const quat& controller_orientation, bool recenter);
-
-  static const vec3 kDefaultNeckPosition;
-
- private:
-  ElbowModel(const ElbowModel&) = delete;
-  void operator=(const ElbowModel&) = delete;
-
-  void ResetRoot();
-
-  float GetHeading(const quat& orientation);
-
-  bool enabled_ = false;
-
-  quat last_controller_ = quat::Identity();
-
-  quat root_rot_ = quat::Identity();
-
-  vec3 controller_root_offset_ = vec3::Zero();
-  vec3 elbow_position_ = vec3::Zero();
-  vec3 arm_extension_ = vec3::Zero();
-  vec3 neck_position_ = vec3::Zero();
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_ELBOW_MODEL_H_
diff --git a/services/vr/vr_window_manager/hwc_callback.cpp b/services/vr/vr_window_manager/hwc_callback.cpp
deleted file mode 100644
index 28e97ff..0000000
--- a/services/vr/vr_window_manager/hwc_callback.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "hwc_callback.h"
-
-#include <android-base/unique_fd.h>
-#include <log/log.h>
-#include <private/dvr/native_buffer.h>
-#include <sync/sync.h>
-#include <ui/GraphicBufferMapper.h>
-
-namespace android {
-namespace dvr {
-
-namespace {
-
-HwcCallback::FrameStatus GetFrameStatus(const HwcCallback::Frame& frame) {
-  for (const auto& layer : frame.layers()) {
-    // If there is no fence it means the buffer is already finished.
-    if (layer.fence->isValid()) {
-      status_t result = layer.fence->wait(0);
-      if (result != OK) {
-        if (result != -ETIME) {
-          ALOGE("fence wait on buffer fence failed. status=%d (%s).",
-                result, strerror(-result));
-          return HwcCallback::FrameStatus::kError;
-        }
-        return HwcCallback::FrameStatus::kUnfinished;
-      }
-    }
-  }
-
-  return HwcCallback::FrameStatus::kFinished;
-}
-
-}  // namespace
-
-void HwcCallback::HwcLayer::PrintLayer() {
-  ALOGI("appid=%d, type=%d, alpha=%.2f, cursor=%dx%d, color=%02X%02X%02X%02X, "
-      "crop=%.1f,%.1f,%.1f,%.1f, display=%d,%d,%d,%d, dataspace=%d, "
-      "transform=%d", appid, type, alpha, cursor_x, cursor_y, color.r, color.g,
-      color.b, color.a, crop.left, crop.top, crop.right, crop.bottom,
-      display_frame.left, display_frame.right, display_frame.top,
-      display_frame.bottom, dataspace, transform);
-}
-
-HwcCallback::HwcCallback(Client* client) : client_(client) {
-}
-
-HwcCallback::~HwcCallback() {
-}
-
-binder::Status HwcCallback::onNewFrame(
-    const ParcelableComposerFrame& parcelable_frame,
-    ParcelableUniqueFd* fence) {
-  ComposerView::Frame frame = parcelable_frame.frame();
-  std::vector<HwcLayer> hwc_frame(frame.layers.size());
-  for (size_t i = 0; i < frame.layers.size(); ++i) {
-    const ComposerView::ComposerLayer& layer = frame.layers[i];
-    hwc_frame[i] = HwcLayer{
-      .fence = layer.fence,
-      .buffer = layer.buffer,
-      .crop = layer.crop,
-      .display_frame = layer.display_frame,
-      .blending = static_cast<int32_t>(layer.blend_mode),
-      .appid = layer.app_id,
-      .type = static_cast<HwcLayer::LayerType>(layer.type),
-      .alpha = layer.alpha,
-      .cursor_x = layer.cursor_x,
-      .cursor_y = layer.cursor_y,
-      .color = layer.color,
-      .dataspace = layer.dataspace,
-      .transform = layer.transform,
-    };
-  }
-
-  fence->set_fence(client_->OnFrame(std::make_unique<Frame>(
-      std::move(hwc_frame), frame.display_id, frame.removed,
-      frame.display_width, frame.display_height)));
-  return binder::Status::ok();
-}
-
-HwcCallback::Frame::Frame(std::vector<HwcLayer>&& layers, uint32_t display_id,
-                          bool removed, int32_t display_width,
-                          int32_t display_height)
-    : display_id_(display_id),
-      removed_(removed),
-      display_width_(display_width),
-      display_height_(display_height),
-      layers_(std::move(layers)) {}
-
-HwcCallback::FrameStatus HwcCallback::Frame::Finish() {
-  if (status_ == FrameStatus::kUnfinished)
-    status_ = GetFrameStatus(*this);
-  return status_;
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/hwc_callback.h b/services/vr/vr_window_manager/hwc_callback.h
deleted file mode 100644
index 259c4ac..0000000
--- a/services/vr/vr_window_manager/hwc_callback.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_HWC_CALLBACK_H_
-#define VR_WINDOW_MANAGER_HWC_CALLBACK_H_
-
-#include <android/dvr/BnVrComposerCallback.h>
-#include <android-base/unique_fd.h>
-#include <impl/vr_hwc.h>
-
-#include <deque>
-#include <functional>
-#include <mutex>
-#include <vector>
-
-namespace android {
-
-class Fence;
-class GraphicBuffer;
-
-namespace dvr {
-
-using Recti = ComposerView::ComposerLayer::Recti;
-using Rectf = ComposerView::ComposerLayer::Rectf;
-
-class HwcCallback : public BnVrComposerCallback {
- public:
-  struct HwcLayer {
-    enum LayerType : uint32_t {
-      // These are from frameworks/base/core/java/android/view/WindowManager.java
-      kSurfaceFlingerLayer = 0,
-      kUndefinedWindow = ~0U,
-      kFirstApplicationWindow = 1,
-      kLastApplicationWindow = 99,
-      kFirstSubWindow = 1000,
-      kLastSubWindow = 1999,
-      kFirstSystemWindow = 2000,
-      kStatusBar = kFirstSystemWindow,
-      kInputMethod = kFirstSystemWindow + 11,
-      kNavigationBar = kFirstSystemWindow + 19,
-      kLastSystemWindow = 2999,
-    };
-
-    bool should_skip_layer() const {
-      switch (type) {
-        // Always skip the following layer types
-      case kNavigationBar:
-      case kStatusBar:
-      case kSurfaceFlingerLayer:
-      case kUndefinedWindow:
-        return true;
-      default:
-        return false;
-      }
-    }
-
-    // This is a layer that provides some other functionality, eg dim layer.
-    // We use this to determine the point at which layers are "on top".
-    bool is_extra_layer() const {
-      switch(type) {
-      case kSurfaceFlingerLayer:
-      case kUndefinedWindow:
-        return true;
-      default:
-        return false;
-      }
-    }
-
-    void PrintLayer();
-
-    sp<Fence> fence;
-    sp<GraphicBuffer> buffer;
-    Rectf crop;
-    Recti display_frame;
-    int32_t blending;
-    uint32_t appid;
-    LayerType type;
-    float alpha;
-    int32_t cursor_x;
-    int32_t cursor_y;
-    IComposerClient::Color color;
-    int32_t dataspace;
-    int32_t transform;
-  };
-
-  enum class FrameStatus {
-    kUnfinished,
-    kFinished,
-    kError
-  };
-
-  class Frame {
-  public:
-    Frame(std::vector<HwcLayer>&& layers, uint32_t display_id, bool removed,
-          int32_t display_width, int32_t display_height);
-
-    FrameStatus Finish();
-    const std::vector<HwcLayer>& layers() const { return layers_; }
-    uint32_t display_id() const { return display_id_; }
-    bool removed() const { return removed_; }
-    int32_t display_width() const { return display_width_; }
-    int32_t display_height() const { return display_height_; }
-
-  private:
-    uint32_t display_id_;
-    bool removed_;
-    int32_t display_width_;
-    int32_t display_height_;
-    std::vector<HwcLayer> layers_;
-    FrameStatus status_ = FrameStatus::kUnfinished;
-  };
-
-  class Client {
-   public:
-    virtual ~Client() {}
-    virtual base::unique_fd OnFrame(std::unique_ptr<Frame>) = 0;
-  };
-
-  explicit HwcCallback(Client* client);
-  ~HwcCallback() override;
-
- private:
-  binder::Status onNewFrame(const ParcelableComposerFrame& frame,
-                            ParcelableUniqueFd* fence) override;
-
-  Client *client_;
-
-  HwcCallback(const HwcCallback&) = delete;
-  void operator=(const HwcCallback&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_HWC_CALLBACK_H_
diff --git a/services/vr/vr_window_manager/proguard.flags b/services/vr/vr_window_manager/proguard.flags
deleted file mode 100644
index 7683d6e..0000000
--- a/services/vr/vr_window_manager/proguard.flags
+++ /dev/null
@@ -1,22 +0,0 @@
-# Don't obfuscate any NDK/SDK code. This makes the debugging of stack traces in
-# in release builds easier.
--keepnames class com.google.vr.ndk.** { *; }
--keepnames class com.google.vr.sdk.** { *; }
-
-# These are part of the SDK <-> VrCore interfaces for GVR.
--keepnames class com.google.vr.vrcore.library.api.** { *; }
-
-# These are part of the Java <-> native interfaces for GVR.
--keep class com.google.vr.** { native <methods>; }
-
--keep class com.google.vr.cardboard.annotations.UsedByNative
--keep @com.google.vr.cardboard.annotations.UsedByNative class *
--keepclassmembers class * {
-    @com.google.vr.cardboard.annotations.UsedByNative *;
-}
-
--keep class com.google.vr.cardboard.UsedByNative
--keep @com.google.vr.cardboard.UsedByNative class *
--keepclassmembers class * {
-    @com.google.vr.cardboard.UsedByNative *;
-}
diff --git a/services/vr/vr_window_manager/reticle.cpp b/services/vr/vr_window_manager/reticle.cpp
deleted file mode 100644
index cbd0caf..0000000
--- a/services/vr/vr_window_manager/reticle.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "reticle.h"
-
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-
-namespace android {
-namespace dvr {
-
-namespace {
-
-const std::string kVertexShader = SHADER0([]() {
-  layout(location = 0) in vec4 aPosition;
-  layout(location = 1) in vec4 aTexCoord;
-  uniform mat4 uViewProjection;
-  uniform mat4 uTransform;
-
-  out vec2 vTexCoord;
-  void main() {
-    gl_Position = uViewProjection * uTransform * aPosition;
-    vTexCoord = aTexCoord.xy;
-  }
-});
-
-const std::string kFragmentShader = SHADER0([]() {
-  precision mediump float;
-
-  in vec2 vTexCoord;
-  uniform vec3 uColor;
-
-  out vec4 fragColor;
-  void main() {
-    float alpha = smoothstep(1.0, 0.0, length(vTexCoord));
-    fragColor = vec4(uColor, alpha);
-  }
-});
-
-}  // namespace
-
-Reticle::Reticle() {}
-
-Reticle::~Reticle() {}
-
-bool Reticle::Initialize() {
-  program_.Link(kVertexShader, kFragmentShader);
-  if (!program_)
-    return false;
-
-  return true;
-}
-
-void Reticle::ShowAt(const mat4& hit_transform, const vec3& color) {
-  transform_ = hit_transform;
-  shown_ = true;
-
-  GLint view_projection_location =
-      glGetUniformLocation(program_.GetProgram(), "uColor");
-  glProgramUniform3f(program_.GetProgram(), view_projection_location, color.x(),
-                     color.y(), color.z());
-}
-
-void Reticle::Draw(const mat4& perspective, const mat4& eye_matrix,
-                   const mat4& head_matrix) {
-  if (!shown_)
-    return;
-
-  glEnable(GL_BLEND);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
-  program_.Use();
-
-  const float kRadius = 0.015;
-  GLfloat vertices[] = {
-      -kRadius, -kRadius, 0, kRadius, -kRadius, 0,
-      -kRadius, kRadius,  0, kRadius, kRadius,  0,
-  };
-  GLfloat texture_vertices[] = {
-      -1, 1, 1, 1, -1, -1, 1, -1,
-  };
-
-  mat4 mvp = perspective * eye_matrix * head_matrix;
-  GLint view_projection_location =
-      glGetUniformLocation(program_.GetProgram(), "uViewProjection");
-  glUniformMatrix4fv(view_projection_location, 1, 0, mvp.data());
-
-  GLint transform_location =
-      glGetUniformLocation(program_.GetProgram(), "uTransform");
-  glUniformMatrix4fv(transform_location, 1, 0, transform_.data());
-
-  glEnableVertexAttribArray(0);
-  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices);
-  glEnableVertexAttribArray(1);
-  glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, texture_vertices);
-
-  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
-  glDisable(GL_BLEND);
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/reticle.h b/services/vr/vr_window_manager/reticle.h
deleted file mode 100644
index d8522aa..0000000
--- a/services/vr/vr_window_manager/reticle.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_SHELL_RETICLE_H_
-#define VR_WINDOW_MANAGER_SHELL_RETICLE_H_
-
-#include <private/dvr/graphics/shader_program.h>
-#include <private/dvr/types.h>
-
-namespace android {
-namespace dvr {
-
-class Reticle {
- public:
-  Reticle();
-  ~Reticle();
-
-  bool Initialize();
-
-  void ShowAt(const mat4& hit_transform, const vec3& color);
-  void Hide() { shown_ = false; }
-
-  void Draw(const mat4& perspective, const mat4& eye_matrix,
-            const mat4& head_matrix);
-
- private:
-  bool shown_ = false;
-  ShaderProgram program_;
-  mat4 transform_;
-
-  Reticle(const Reticle&) = delete;
-  void operator=(const Reticle&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_SHELL_RETICLE_H_
diff --git a/services/vr/vr_window_manager/shell_view.cpp b/services/vr/vr_window_manager/shell_view.cpp
deleted file mode 100644
index abd0651..0000000
--- a/services/vr/vr_window_manager/shell_view.cpp
+++ /dev/null
@@ -1,535 +0,0 @@
-#include "shell_view.h"
-
-#include <EGL/eglext.h>
-#include <GLES3/gl3.h>
-#include <android/input.h>
-#include <binder/IServiceManager.h>
-#include <dvr/graphics.h>
-#include <hardware/hwcomposer2.h>
-#include <inttypes.h>
-#include <log/log.h>
-
-#include "controller_mesh.h"
-#include "texture.h"
-
-namespace android {
-namespace dvr {
-
-namespace {
-
-constexpr uint32_t kPrimaryDisplayId = 1;
-
-const std::string kVertexShader = SHADER0([]() {
-  layout(location = 0) in vec4 aPosition;
-  layout(location = 1) in vec4 aTexCoord;
-  uniform mat4 uViewProjection;
-  uniform mat4 uTransform;
-
-  out vec2 vTexCoord;
-  void main() {
-    gl_Position = uViewProjection * uTransform * aPosition;
-    vTexCoord = aTexCoord.xy;
-  }
-});
-
-const std::string kFragmentShader = SHADER0([]() {
-  precision mediump float;
-
-  in vec2 vTexCoord;
-  uniform sampler2D tex;
-  uniform float uAlpha;
-
-  out vec4 fragColor;
-  void main() {
-    fragColor = texture(tex, vTexCoord);
-    fragColor.a *= uAlpha;
-  }
-});
-
-// This shader provides a dim layer in a given rect. This is intended
-// to indicate the non-interactive region.
-// Texture coordinates between [uCoords.xy, uCoords.zw] are dim, otherwise
-// transparent.
-const std::string kOverlayFragmentShader = SHADER0([]() {
-  precision highp float;
-
-  in vec2 vTexCoord;
-  uniform sampler2D tex;
-  uniform vec4 uCoords;
-
-  out vec4 fragColor;
-  void main() {
-    vec4 color = vec4(0, 0, 0, 0);
-    if (all(greaterThan(vTexCoord, uCoords.xy)) &&
-        all(lessThan(vTexCoord, uCoords.zw))) {
-      color = vec4(0, 0, 0, 0.5);
-    }
-    fragColor = color;
-  }
-});
-
-const std::string kControllerFragmentShader = SHADER0([]() {
-  precision mediump float;
-
-  in vec2 vTexCoord;
-
-  out vec4 fragColor;
-  void main() { fragColor = vec4(0.8, 0.2, 0.2, 1.0); }
-});
-
-mat4 GetHorizontallyAlignedMatrixFromPose(const Posef& pose) {
-  vec3 position = pose.GetPosition();
-  quat view_quaternion = pose.GetRotation();
-
-  vec3 z = vec3(view_quaternion * vec3(0.0f, 0.0f, 1.0f));
-  vec3 y(0.0f, 1.0f, 0.0f);
-  vec3 x = y.cross(z);
-  x.normalize();
-  y = z.cross(x);
-
-  mat4 m;
-  // clang-format off
-  m(0, 0) = x[0]; m(0, 1) = y[0]; m(0, 2) = z[0]; m(0, 3) = position[0];
-  m(1, 0) = x[1]; m(1, 1) = y[1]; m(1, 2) = z[1]; m(1, 3) = position[1];
-  m(2, 0) = x[2]; m(2, 1) = y[2]; m(2, 2) = z[2]; m(2, 3) = position[2];
-  m(3, 0) = 0.0f; m(3, 1) = 0.0f; m(3, 2) = 0.0f; m(3, 3) = 1.0f;
-  // clang-format on
-
-  return m;
-}
-
-int GetTouchIdForDisplay(uint32_t display) {
-  return display == kPrimaryDisplayId ? DVR_VIRTUAL_TOUCHPAD_PRIMARY
-                                      : DVR_VIRTUAL_TOUCHPAD_VIRTUAL;
-}
-
-}  // namespace
-
-ShellView::ShellView() {}
-
-ShellView::~ShellView() {}
-
-int ShellView::Initialize() {
-  int ret = Application::Initialize();
-  if (ret)
-    return ret;
-
-  virtual_touchpad_.reset(dvrVirtualTouchpadCreate());
-  const status_t touchpad_status =
-      dvrVirtualTouchpadAttach(virtual_touchpad_.get());
-  if (touchpad_status != OK) {
-    ALOGE("Failed to connect to virtual touchpad");
-    return touchpad_status;
-  }
-
-  surface_flinger_view_.reset(new SurfaceFlingerView);
-  if (!surface_flinger_view_->Initialize(this))
-    return 1;
-
-  return 0;
-}
-
-int ShellView::AllocateResources() {
-  int ret = Application::AllocateResources();
-  if (ret)
-    return ret;
-
-  program_.reset(new ShaderProgram);
-  program_->Link(kVertexShader, kFragmentShader);
-  overlay_program_.reset(new ShaderProgram);
-  overlay_program_->Link(kVertexShader, kOverlayFragmentShader);
-  controller_program_.reset(new ShaderProgram);
-  controller_program_->Link(kVertexShader, kControllerFragmentShader);
-  if (!program_ || !overlay_program_ || !controller_program_)
-    return 1;
-
-  reticle_.reset(new Reticle());
-  if (!reticle_->Initialize())
-    return 1;
-
-  controller_mesh_.reset(new Mesh<vec3, vec3, vec2>());
-  controller_mesh_->SetVertices(kNumControllerMeshVertices,
-                                kControllerMeshVertices);
-
-  for (auto& display : displays_)
-    display->SetPrograms(program_.get(), overlay_program_.get());
-
-  initialized_ = true;
-
-  return 0;
-}
-
-void ShellView::DeallocateResources() {
-  {
-    std::unique_lock<std::mutex> l(display_frame_mutex_);
-    removed_displays_.clear();
-    new_displays_.clear();
-    displays_.clear();
-  }
-
-  display_client_.reset();
-  reticle_.reset();
-  controller_mesh_.reset();
-  program_.reset(new ShaderProgram);
-  overlay_program_.reset(new ShaderProgram);
-  controller_program_.reset(new ShaderProgram);
-  Application::DeallocateResources();
-}
-
-void ShellView::EnableDebug(bool debug) {
-  QueueTask(debug ? MainThreadTask::EnableDebugMode
-                  : MainThreadTask::DisableDebugMode);
-}
-
-void ShellView::VrMode(bool mode) {
-  QueueTask(mode ? MainThreadTask::EnteringVrMode
-                 : MainThreadTask::ExitingVrMode);
-}
-
-void ShellView::dumpInternal(String8& result) {
-  result.append("[shell]\n");
-  result.appendFormat("initialized = %s\n", initialized_ ? "true" : "false");
-  result.appendFormat("is_visible = %s\n", is_visible_ ? "true" : "false");
-  result.appendFormat("debug_mode = %s\n\n", debug_mode_ ? "true" : "false");
-
-  result.append("[displays]\n");
-  result.appendFormat("count = %zu\n", displays_.size());
-  for (size_t i = 0; i < displays_.size(); ++i) {
-    result.appendFormat("  display_id = %" PRId32 "\n", displays_[i]->id());
-    result.appendFormat("    size=%fx%f\n", displays_[i]->size().x(),
-                        displays_[i]->size().y());
-  }
-
-  result.append("\n");
-}
-
-void ShellView::Set2DMode(bool mode) {
-  if (!displays_.empty())
-    displays_[0]->set_2dmode(mode);
-}
-
-void ShellView::SetRotation(int angle) {
-  mat4 m(Eigen::AngleAxisf(M_PI * -0.5f * angle, vec3::UnitZ()));
-  for (auto& d : displays_)
-    d->set_rotation(m);
-}
-
-void ShellView::OnDrawFrame() {
-  bool visible = false;
-
-  {
-    std::unique_lock<std::mutex> l(display_frame_mutex_);
-
-    // Move any new displays into the list.
-    if (!new_displays_.empty()) {
-      for (auto& display : new_displays_) {
-        display->Recenter(GetHorizontallyAlignedMatrixFromPose(last_pose_));
-        display->SetPrograms(program_.get(), overlay_program_.get());
-        displays_.emplace_back(display.release());
-      }
-      new_displays_.clear();
-    }
-
-    // Remove any old displays from the list now.
-    if (!removed_displays_.empty()) {
-      for (auto& display : removed_displays_) {
-        displays_.erase(std::find_if(
-            displays_.begin(), displays_.end(),
-            [display](auto& ptr) { return display == ptr.get(); }));
-      }
-      removed_displays_.clear();
-    }
-
-    for (auto& display : displays_) {
-      display->AdvanceFrame();
-      visible = visible || display->visible();
-    }
-  }
-
-  if (!debug_mode_ && visible != is_visible_) {
-    SetVisibility(visible);
-  }
-
-  for (auto& display : displays_) {
-    display->OnDrawFrame(surface_flinger_view_.get(), debug_mode_);
-  }
-}
-
-void ShellView::OnEndFrame() {
-  std::unique_lock<std::mutex> l(display_frame_mutex_);
-  for (auto& display : displays_) {
-    display->UpdateReleaseFence();
-  }
-}
-
-DisplayView* ShellView::FindOrCreateDisplay(uint32_t id) {
-  for (auto& display : displays_) {
-    if (display->id() == id) {
-      return display.get();
-    }
-  }
-
-  // It might be pending addition.
-  for (auto& display : new_displays_) {
-    if (display->id() == id) {
-      return display.get();
-    }
-  }
-
-  auto display = new DisplayView(id, GetTouchIdForDisplay(id));
-  // Virtual displays only ever have 2D apps so force it.
-  if (id != kPrimaryDisplayId)
-    display->set_always_2d(true);
-  new_displays_.emplace_back(display);
-  return display;
-}
-
-base::unique_fd ShellView::OnFrame(std::unique_ptr<HwcCallback::Frame> frame) {
-  std::unique_lock<std::mutex> l(display_frame_mutex_);
-  DisplayView* display = FindOrCreateDisplay(frame->display_id());
-
-  if (frame->removed()) {
-    removed_displays_.push_back(display);
-    return base::unique_fd();
-  }
-
-  bool showing = false;
-
-  // This is a temporary fix for now. These APIs will be changed when everything
-  // is moved into vrcore.
-  // Do this on demand in case vr_flinger crashed and we are reconnecting.
-  if (!display_client_.get()) {
-    int error = 0;
-    display_client_ = display::DisplayClient::Create(&error);
-
-    if (error) {
-      ALOGE("Could not connect to display service : %s(%d)", strerror(error),
-            error);
-      return base::unique_fd();
-    }
-  }
-
-  // TODO(achaulk): change when moved into vrcore.
-  auto status = display_client_->IsVrAppRunning();
-  if (!status) {
-    ALOGE("Failed to check VR running status: %s",
-          status.GetErrorMessage().c_str());
-    return base::unique_fd();
-  }
-  const bool vr_running = status.get();
-
-  base::unique_fd fd(
-      display->OnFrame(std::move(frame), debug_mode_, vr_running, &showing));
-
-  if (showing)
-    QueueTask(MainThreadTask::Show);
-
-  return fd;
-}
-
-void ShellView::DrawEye(EyeType eye, const mat4& perspective,
-                        const mat4& eye_matrix, const mat4& head_matrix) {
-  if (should_recenter_ && !displays_.empty()) {
-    // Position the quad horizontally aligned in the direction the user
-    // is facing, effectively taking out head roll.
-    displays_[0]->Recenter(GetHorizontallyAlignedMatrixFromPose(last_pose_));
-  }
-
-  for (auto& display : displays_) {
-    if (display->visible()) {
-      display->DrawEye(eye, perspective, eye_matrix, head_matrix, fade_value_);
-    }
-  }
-
-  // TODO(alexst): Replicate controller rendering from VR Home.
-  // Current approach in the function below is a quick visualization.
-  DrawController(perspective, eye_matrix, head_matrix);
-
-  DrawReticle(perspective, eye_matrix, head_matrix);
-}
-
-void ShellView::OnVisibilityChanged(bool visible) {
-  should_recenter_ = visible;
-  Application::OnVisibilityChanged(visible);
-}
-
-bool ShellView::OnClick(bool down) {
-  if (down) {
-    if (!is_touching_ && active_display_ && active_display_->allow_input()) {
-      is_touching_ = true;
-    }
-  } else {
-    is_touching_ = false;
-  }
-  Touch();
-  return true;
-}
-
-void ShellView::DrawReticle(const mat4& perspective, const mat4& eye_matrix,
-                            const mat4& head_matrix) {
-  reticle_->Hide();
-
-  vec3 pointer_location = last_pose_.GetPosition();
-  quat view_quaternion = last_pose_.GetRotation();
-
-  if (shmem_controller_active_) {
-    view_quaternion = controller_orientation_;
-    vec4 controller_location = controller_translate_ * vec4(0, 0, 0, 1);
-    pointer_location = vec3(controller_location.x(), controller_location.y(),
-                            controller_location.z());
-
-    if (shmem_controller_active_) {
-      uint64_t buttons = shmem_controller_buttons_;
-      shmem_controller_buttons_ = 0;
-      while (buttons) {
-        switch (buttons & 0xF) {
-          case 0x1:
-            OnClick(false);
-            break;
-          case 0x3:
-            OnTouchpadButton(false, AMOTION_EVENT_BUTTON_BACK);
-            break;
-          case 0x4:
-            should_recenter_ = true;
-            break;
-          case 0x9:
-            OnClick(true);
-            break;
-          case 0xB:
-            OnTouchpadButton(true, AMOTION_EVENT_BUTTON_BACK);
-            break;
-          default:
-            break;
-        }
-        buttons >>= 4;
-      }
-    }
-  }
-
-  vec3 hit_location;
-  active_display_ =
-      FindActiveDisplay(pointer_location, view_quaternion, &hit_location);
-
-  if (active_display_) {
-    reticle_->ShowAt(
-        Eigen::Translation3f(hit_location) * view_quaternion.matrix(),
-        active_display_->allow_input() ? vec3(1, 0, 0) : vec3(0, 0, 0));
-    Touch();
-  }
-
-  reticle_->Draw(perspective, eye_matrix, head_matrix);
-}
-
-DisplayView* ShellView::FindActiveDisplay(const vec3& position,
-                                          const quat& quaternion,
-                                          vec3* hit_location) {
-  vec3 direction = vec3(quaternion * vec3(0, 0, -1));
-  vec3 temp_hit;
-
-  DisplayView* best_display = nullptr;
-  vec3 best_hit;
-
-  auto is_better = [&best_hit, &position](DisplayView*, const vec3& hit) {
-    return (hit - position).squaredNorm() < (best_hit - position).squaredNorm();
-  };
-
-  for (auto& display : displays_) {
-    if (display->UpdateHitInfo(position, direction, &temp_hit)) {
-      if (!best_display || is_better(display.get(), temp_hit)) {
-        best_display = display.get();
-        best_hit = temp_hit;
-      }
-    }
-  }
-
-  if (best_display)
-    *hit_location = best_hit;
-  return best_display;
-}
-
-void ShellView::DrawController(const mat4& perspective, const mat4& eye_matrix,
-                               const mat4& head_matrix) {
-  if (!shmem_controller_active_)
-    return;
-
-  controller_program_->Use();
-  mat4 mvp = perspective * eye_matrix * head_matrix;
-
-  GLint view_projection_location = glGetUniformLocation(
-      controller_program_->GetProgram(), "uViewProjection");
-  glUniformMatrix4fv(view_projection_location, 1, 0, mvp.data());
-
-  quat view_quaternion = controller_orientation_;
-  view_quaternion.toRotationMatrix();
-
-  vec3 world_pos = last_pose_.GetPosition() + controller_position_;
-
-  controller_translate_ =
-      Eigen::Translation3f(world_pos.x(), world_pos.y(), world_pos.z());
-
-  mat4 transform = controller_translate_ * view_quaternion *
-                   mat4(Eigen::Scaling<float>(1, 1, 3.0));
-  GLint transform_location =
-      glGetUniformLocation(controller_program_->GetProgram(), "uTransform");
-  glUniformMatrix4fv(transform_location, 1, 0, transform.data());
-
-  controller_mesh_->Draw();
-}
-
-void ShellView::Touch() {
-  if (!virtual_touchpad_) {
-    ALOGE("missing virtual touchpad");
-    return;
-  }
-
-  if (!active_display_)
-    return;
-
-  const vec2& hit_location = active_display_->hit_location();
-  const vec2 size = active_display_->size();
-
-  float x = hit_location.x() / size.x();
-  float y = hit_location.y() / size.y();
-
-  // Device is portrait, but in landscape when in VR.
-  // Rotate touch input appropriately.
-  const android::status_t status = dvrVirtualTouchpadTouch(
-      virtual_touchpad_.get(), active_display_->touchpad_id(), x, y,
-      is_touching_ ? 1.0f : 0.0f);
-  if (status != OK) {
-    ALOGE("touch failed: %d", status);
-  }
-}
-
-bool ShellView::OnTouchpadButton(bool down, int button) {
-  int buttons = touchpad_buttons_;
-  if (down) {
-    if (active_display_ && active_display_->allow_input()) {
-      buttons |= button;
-    }
-  } else {
-    buttons &= ~button;
-  }
-  if (buttons == touchpad_buttons_) {
-    return true;
-  }
-  touchpad_buttons_ = buttons;
-  if (!virtual_touchpad_) {
-    ALOGE("missing virtual touchpad");
-    return false;
-  }
-
-  if (!active_display_)
-    return true;
-
-  const android::status_t status = dvrVirtualTouchpadButtonState(
-      virtual_touchpad_.get(), active_display_->touchpad_id(),
-      touchpad_buttons_);
-  if (status != OK) {
-    ALOGE("touchpad button failed: %d %d", touchpad_buttons_, status);
-  }
-  return true;
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/shell_view.h b/services/vr/vr_window_manager/shell_view.h
deleted file mode 100644
index 9b51600..0000000
--- a/services/vr/vr_window_manager/shell_view.h
+++ /dev/null
@@ -1,103 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_SHELL_VIEW_H_
-#define VR_WINDOW_MANAGER_SHELL_VIEW_H_
-
-#include <dvr/virtual_touchpad_client.h>
-#include <private/dvr/display_client.h>
-#include <private/dvr/graphics/mesh.h>
-#include <private/dvr/graphics/shader_program.h>
-
-#include <deque>
-
-#include "application.h"
-#include "display_view.h"
-#include "reticle.h"
-#include "shell_view_binder_interface.h"
-#include "surface_flinger_view.h"
-
-namespace android {
-namespace dvr {
-
-class ShellView : public Application,
-                  public android::dvr::ShellViewBinderInterface,
-                  public HwcCallback::Client {
- public:
-  ShellView();
-  virtual ~ShellView();
-
-  int Initialize() override;
-
-  int AllocateResources() override;
-  void DeallocateResources() override;
-
-  // ShellViewBinderInterface:
-  void EnableDebug(bool debug) override;
-  void VrMode(bool mode) override;
-  void dumpInternal(String8& result) override;
-  void Set2DMode(bool mode) override;
-  void SetRotation(int angle) override;
-
-
- protected:
-  void DrawEye(EyeType eye, const mat4& perspective, const mat4& eye_matrix,
-               const mat4& head_matrix) override;
-  void OnDrawFrame() override;
-  void OnEndFrame() override;
-  void OnVisibilityChanged(bool visible) override;
-
-  void DrawReticle(const mat4& perspective, const mat4& eye_matrix,
-                   const mat4& head_matrix);
-  void DrawController(const mat4& perspective, const mat4& eye_matrix,
-                      const mat4& head_matrix);
-
-  void Touch();
-  bool OnTouchpadButton(bool down, int button);
-
-  bool OnClick(bool down);
-
-  DisplayView* FindActiveDisplay(const vec3& position, const quat& quaternion,
-                                 vec3* hit_location);
-
-  // HwcCallback::Client:
-  base::unique_fd OnFrame(std::unique_ptr<HwcCallback::Frame> frame) override;
-  DisplayView* FindOrCreateDisplay(uint32_t id);
-
-  std::unique_ptr<ShaderProgram> program_;
-  std::unique_ptr<ShaderProgram> overlay_program_;
-  std::unique_ptr<ShaderProgram> controller_program_;
-
-  std::unique_ptr<SurfaceFlingerView> surface_flinger_view_;
-  std::unique_ptr<Reticle> reticle_;
-
-  std::unique_ptr<display::DisplayClient> display_client_;
-
-  struct DvrVirtualTouchpadDeleter {
-    void operator()(DvrVirtualTouchpad* p) {
-      dvrVirtualTouchpadDetach(p);
-      dvrVirtualTouchpadDestroy(p);
-    }
-  };
-  std::unique_ptr<DvrVirtualTouchpad, DvrVirtualTouchpadDeleter>
-      virtual_touchpad_;
-
-  std::unique_ptr<Mesh<vec3, vec3, vec2>> controller_mesh_;
-
-  bool is_touching_ = false;
-  int touchpad_buttons_ = 0;
-
-  std::mutex display_frame_mutex_;
-
-  std::vector<std::unique_ptr<DisplayView>> displays_;
-  std::vector<std::unique_ptr<DisplayView>> new_displays_;
-  std::vector<DisplayView*> removed_displays_;
-  DisplayView* active_display_ = nullptr;
-
-  mat4 controller_translate_;
-
-  ShellView(const ShellView&) = delete;
-  void operator=(const ShellView&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_SHELL_VIEW_H_
diff --git a/services/vr/vr_window_manager/shell_view_binder_interface.h b/services/vr/vr_window_manager/shell_view_binder_interface.h
deleted file mode 100644
index c66e4a1..0000000
--- a/services/vr/vr_window_manager/shell_view_binder_interface.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_SHELL_VIEWBINDER_INTERFACE_H_
-#define VR_WINDOW_MANAGER_SHELL_VIEWBINDER_INTERFACE_H_
-
-namespace android {
-namespace dvr {
-
-class ShellViewBinderInterface {
- public:
-  ShellViewBinderInterface() {};
-  virtual ~ShellViewBinderInterface() {};
-
-  virtual void EnableDebug(bool debug) = 0;
-  virtual void VrMode(bool mode) = 0;
-  virtual void dumpInternal(String8& result) = 0;
-  virtual void Set2DMode(bool mode) = 0;
-  virtual void SetRotation(int angle) = 0;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_SHELL_VIEWBINDER_INTERFACE_H_
diff --git a/services/vr/vr_window_manager/surface_flinger_view.cpp b/services/vr/vr_window_manager/surface_flinger_view.cpp
deleted file mode 100644
index b41de03..0000000
--- a/services/vr/vr_window_manager/surface_flinger_view.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "surface_flinger_view.h"
-
-#include <android/dvr/IVrComposer.h>
-#include <binder/IServiceManager.h>
-#include <private/dvr/native_buffer.h>
-
-#include "hwc_callback.h"
-#include "texture.h"
-
-namespace android {
-namespace dvr {
-
-SurfaceFlingerView::SurfaceFlingerView() {}
-
-SurfaceFlingerView::~SurfaceFlingerView() {}
-
-bool SurfaceFlingerView::Initialize(HwcCallback::Client *client) {
-  sp<IServiceManager> sm(defaultServiceManager());
-  vr_composer_ = interface_cast<IVrComposer>(
-      sm->getService(IVrComposer::SERVICE_NAME()));
-
-  String8 service_name(IVrComposer::SERVICE_NAME().string());
-  if (!vr_composer_.get()) {
-    ALOGE("Faild to connect to %s", service_name.c_str());
-    return false;
-  }
-
-  composer_callback_ = new HwcCallback(client);
-  binder::Status status = vr_composer_->registerObserver(composer_callback_);
-  if (!status.isOk()) {
-    ALOGE("Failed to register observer with %s", service_name.c_str());
-    return false;
-  }
-
-  return true;
-}
-
-bool SurfaceFlingerView::GetTextures(const HwcCallback::Frame& frame,
-                                     std::vector<TextureLayer>* texture_layers,
-                                     TextureLayer* ime_layer,
-                                     bool debug, bool skip_first_layer) const {
-  auto& layers = frame.layers();
-  texture_layers->clear();
-
-  size_t start = 0;
-  // Skip the second layer if it is from the VR app.
-  if (!debug && skip_first_layer) {
-    start = 2;
-  }
-
-  for (size_t i = start; i < layers.size(); ++i) {
-    if (!debug && layers[i].should_skip_layer())
-      continue;
-
-    std::unique_ptr<Texture> texture(new Texture());
-    if (!texture->Initialize(layers[i].buffer->getNativeBuffer())) {
-      ALOGE("Failed to create texture");
-      texture_layers->clear();
-      return false;
-    }
-
-    TextureLayer texture_layer = {
-        std::move(texture), layers[i].crop, layers[i].display_frame,
-        layers[i].blending, layers[i].alpha,
-    };
-    if (debug && layers[i].type == HwcCallback::HwcLayer::kInputMethod) {
-      *ime_layer = std::move(texture_layer);
-    } else {
-      texture_layers->emplace_back(std::move(texture_layer));
-    }
-  }
-
-  return true;
-}
-
-}  // namespace dvr
-}  // namespace android
diff --git a/services/vr/vr_window_manager/surface_flinger_view.h b/services/vr/vr_window_manager/surface_flinger_view.h
deleted file mode 100644
index 1bea38d..0000000
--- a/services/vr/vr_window_manager/surface_flinger_view.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef APPLICATIONS_EXPERIMENTS_SURFACE_FLINGER_DEMO_SURFACE_FLINGER_VIEW_H_
-#define APPLICATIONS_EXPERIMENTS_SURFACE_FLINGER_DEMO_SURFACE_FLINGER_VIEW_H_
-
-#include <memory>
-
-#include "hwc_callback.h"
-
-namespace android {
-namespace dvr {
-
-class IDisplay;
-class IVrComposer;
-class Texture;
-
-struct TextureLayer {
-  std::unique_ptr<Texture> texture;
-  Rectf crop;
-  Recti display_frame;
-  int32_t blending;
-  float alpha;
-};
-
-class SurfaceFlingerView {
- public:
-  SurfaceFlingerView();
-  ~SurfaceFlingerView();
-
-  bool Initialize(HwcCallback::Client *client);
-
-  bool GetTextures(const HwcCallback::Frame& layers,
-                   std::vector<TextureLayer>* texture_layers,
-                   TextureLayer* ime_layer, bool debug,
-                   bool skip_first_layer) const;
-
- private:
-  sp<IVrComposer> vr_composer_;
-  sp<HwcCallback> composer_callback_;
-
-  SurfaceFlingerView(const SurfaceFlingerView&) = delete;
-  void operator=(const SurfaceFlingerView&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // APPLICATIONS_EXPERIMENTS_SURFACE_FLINGER_DEMO_SURFACE_FLINGER_VIEW_H_
diff --git a/services/vr/vr_window_manager/texture.cpp b/services/vr/vr_window_manager/texture.cpp
deleted file mode 100644
index 2229efa..0000000
--- a/services/vr/vr_window_manager/texture.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "texture.h"
-
-#include <GLES/glext.h>
-#include <log/log.h>
-#include <system/window.h>
-
-namespace android {
-namespace dvr {
-
-Texture::Texture() {}
-
-Texture::~Texture() {
-  EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-  if (id_)
-    glDeleteTextures(1, &id_);
-  if (image_)
-    eglDestroyImageKHR(display, image_);
-}
-
-bool Texture::Initialize(ANativeWindowBuffer* buffer) {
-  width_ = buffer->width;
-  height_ = buffer->height;
-
-  EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-  image_ = eglCreateImageKHR(display, EGL_NO_CONTEXT,
-                             EGL_NATIVE_BUFFER_ANDROID, buffer, nullptr);
-  if (!image_) {
-    ALOGE("Failed to create eglImage");
-    return false;
-  }
-
-  glGenTextures(1, &id_);
-  glActiveTexture(GL_TEXTURE0);
-  glBindTexture(GL_TEXTURE_2D, id_);
-  glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image_);
-
-  return true;
-}
-
-}  // namespace android
-}  // namespace dvr
diff --git a/services/vr/vr_window_manager/texture.h b/services/vr/vr_window_manager/texture.h
deleted file mode 100644
index 9840f19..0000000
--- a/services/vr/vr_window_manager/texture.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_TEXTURE_H_
-#define VR_WINDOW_MANAGER_TEXTURE_H_
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include <GLES/gl.h>
-
-struct ANativeWindowBuffer;
-
-namespace android {
-namespace dvr {
-
-class Texture {
- public:
-  explicit Texture();
-  ~Texture();
-
-  bool Initialize(ANativeWindowBuffer* buffer);
-
-  GLuint id() const { return id_; }
-  int width() const { return width_; }
-  int height() const { return height_; }
-
- private:
-  EGLImageKHR image_ = nullptr;
-  GLuint id_ = 0;
-  int width_ = 0;
-  int height_ = 0;
-
-  Texture(const Texture&) = delete;
-  void operator=(const Texture&) = delete;
-};
-
-}  // namespace dvr
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_TEXTURE_H_
diff --git a/services/vr/vr_window_manager/vr_window_manager.cpp b/services/vr/vr_window_manager/vr_window_manager.cpp
deleted file mode 100644
index dd2cba7..0000000
--- a/services/vr/vr_window_manager/vr_window_manager.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <binder/IPCThreadState.h>
-#include <binder/IServiceManager.h>
-#include <binder/ProcessState.h>
-#include <hwbinder/IPCThreadState.h>
-#include <impl/vr_hwc.h>
-
-#include "shell_view.h"
-#include "vr_window_manager_binder.h"
-
-using namespace android;
-using namespace android::dvr;
-
-int main(int /* argc */, char** /* argv */) {
-  android::ProcessState::self()->startThreadPool();
-
-  // ShellView needs to be created after vr_hwcomposer.
-  android::dvr::ShellView app;
-  const int app_status = app.Initialize();
-  LOG_ALWAYS_FATAL_IF(app_status != 0, "failed to initialize: %d", app_status);
-
-  // Create vr_wm_binder.
-  android::sp<android::service::vr::VrWindowManagerBinder> vr_wm_binder =
-      new android::service::vr::VrWindowManagerBinder(app);
-  const int status = vr_wm_binder->Initialize();
-  LOG_ALWAYS_FATAL_IF(status != 0, "initialization failed: %d", status);
-
-  android::sp<android::IServiceManager> sm(android::defaultServiceManager());
-  const android::status_t vr_wm_binder_status = sm->addService(
-      android::service::vr::VrWindowManagerBinder::SERVICE_NAME(),
-      vr_wm_binder, false /*allowIsolated*/);
-  LOG_ALWAYS_FATAL_IF(vr_wm_binder_status != android::OK,
-                      "vr_wm_binder service not added: %d",
-                      static_cast<int>(vr_wm_binder_status));
-
-  app.SetControllerDataProvider(vr_wm_binder.get());
-
-  android::hardware::ProcessState::self()->startThreadPool();
-
-  while (true) {
-    app.DrawFrame();
-  }
-
-  android::hardware::IPCThreadState::self()->joinThreadPool();
-  android::IPCThreadState::self()->joinThreadPool();
-
-  return 0;
-}
diff --git a/services/vr/vr_window_manager/vr_window_manager_binder.cpp b/services/vr/vr_window_manager/vr_window_manager_binder.cpp
deleted file mode 100644
index fdcb8b2..0000000
--- a/services/vr/vr_window_manager/vr_window_manager_binder.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#include "vr_window_manager_binder.h"
-
-#include <inttypes.h>
-#include <sys/mman.h>
-
-#include <binder/IPCThreadState.h>
-#include <binder/PermissionCache.h>
-#include <binder/Status.h>
-#include <cutils/log.h>
-#include <private/android_filesystem_config.h>
-#include <utils/Errors.h>
-
-namespace android {
-namespace service {
-namespace vr {
-
-namespace {
-const String16 kDumpPermission("android.permission.DUMP");
-const String16 kSendMeControllerInputPermission(
-    "android.permission.RESTRICTED_VR_ACCESS");
-}  // anonymous namespace
-
-constexpr size_t AshmemControllerDataProvider::kRegionLength;
-
-status_t AshmemControllerDataProvider::Connect(const int in_fd) {
-  if (in_fd < 0) {
-    return BAD_VALUE;
-  }
-  if (fd_.get() >= 0) {
-    // The VrCore is dead. Long live the VrCore.
-    Disconnect();
-  }
-  void* const shared_region =
-      ::mmap(nullptr, kRegionLength, PROT_READ, MAP_SHARED, in_fd, 0);
-  if (shared_region == MAP_FAILED) {
-    shared_region_ = nullptr;
-    return NO_MEMORY;
-  }
-
-  errno = 0;
-  const int fd = ::fcntl(in_fd, F_DUPFD_CLOEXEC, 0);
-  if (fd < 0) {
-    ::munmap(shared_region, kRegionLength);
-    return -errno;
-  }
-  fd_.reset(fd);
-  ALOGI("controller connected %d -> %d @ %p", in_fd, fd, shared_region);
-
-  std::lock_guard<std::mutex> guard(mutex_);
-  shared_region_ = shared_region;
-  return OK;
-}
-
-status_t AshmemControllerDataProvider::Disconnect() {
-  if (shared_region_ == nullptr || fd_.get() < 0) {
-    return INVALID_OPERATION;
-  }
-  std::lock_guard<std::mutex> guard(mutex_);
-  ::munmap(shared_region_, kRegionLength);
-  shared_region_ = nullptr;
-  fd_.reset();
-  ALOGI("controller disconnected");
-  return OK;
-}
-
-const void* AshmemControllerDataProvider::LockControllerData() {
-  mutex_.lock();
-  if (!shared_region_) {
-    mutex_.unlock();
-    return nullptr;
-  }
-  return shared_region_;
-}
-
-void AshmemControllerDataProvider::UnlockControllerData() { mutex_.unlock(); }
-
-void AshmemControllerDataProvider::dumpInternal(String8& result) {
-  result.appendFormat("[controller]\nfd = %d\n", fd_.get());
-  if (shared_region_) {
-    int32_t* p = reinterpret_cast<int32_t*>(shared_region_);
-    result.appendFormat("header = ");
-    for (int i = 0; i < 8; ++i) {
-      result.appendFormat("%c 0x%08" PRIX32, i ? ',' : '[', p[i]);
-    }
-    result.appendFormat(" ]\n\n");
-  }
-}
-
-int VrWindowManagerBinder::Initialize() { return 0; }
-
-binder::Status VrWindowManagerBinder::connectController(
-    const ::android::base::unique_fd& in_fd) {
-  // TODO(kpschoedel): check permission
-#if 0
-  int32_t pid, uid;
-  if (!PermissionCache::checkCallingPermission(kSendMeControllerInputPermission,
-                                               &pid, &uid)) {
-    ALOGE("permission denied to pid=%" PRId32 " uid=%" PRId32, pid, uid);
-    return binder::Status::fromStatusT(PERMISSION_DENIED);
-  }
-#endif
-  return binder::Status::fromStatusT(Connect(in_fd.get()));
-}
-
-binder::Status VrWindowManagerBinder::disconnectController() {
-  // TODO(kpschoedel): check permission
-#if 0
-  int32_t pid, uid;
-  if (!PermissionCache::checkCallingPermission(kSendMeControllerInputPermission,
-                                               &pid, &uid)) {
-    ALOGE("permission denied to pid=%" PRId32 " uid=%" PRId32, pid, uid);
-    return binder::Status::fromStatusT(PERMISSION_DENIED);
-  }
-#endif
-  return binder::Status::fromStatusT(Disconnect());
-}
-
-binder::Status VrWindowManagerBinder::enterVrMode() {
-  // TODO(kpschoedel): check permission
-  app_.VrMode(true);
-  return binder::Status::ok();
-}
-
-binder::Status VrWindowManagerBinder::exitVrMode() {
-  // TODO(kpschoedel): check permission
-  app_.VrMode(false);
-  return binder::Status::ok();
-}
-
-binder::Status VrWindowManagerBinder::setDebugMode(int32_t mode) {
-  // TODO(kpschoedel): check permission
-  app_.EnableDebug(static_cast<bool>(mode));
-  return binder::Status::ok();
-}
-
-binder::Status VrWindowManagerBinder::set2DMode(int32_t mode) {
-  app_.Set2DMode(static_cast<bool>(mode));
-  return binder::Status::ok();
-}
-
-binder::Status VrWindowManagerBinder::setRotation(int32_t angle) {
-  app_.SetRotation(angle);
-  return binder::Status::ok();
-}
-
-status_t VrWindowManagerBinder::dump(
-    int fd, const Vector<String16>& args [[gnu::unused]]) {
-  String8 result;
-  const android::IPCThreadState* ipc = android::IPCThreadState::self();
-  const pid_t pid = ipc->getCallingPid();
-  const uid_t uid = ipc->getCallingUid();
-  if ((uid != AID_SHELL) &&
-      !PermissionCache::checkPermission(kDumpPermission, pid, uid)) {
-    result.appendFormat("Permission denial: can't dump " LOG_TAG
-                        " from pid=%d, uid=%d\n",
-                        pid, uid);
-  } else {
-    app_.dumpInternal(result);
-    AshmemControllerDataProvider::dumpInternal(result);
-  }
-  write(fd, result.string(), result.size());
-  return OK;
-}
-
-}  // namespace vr
-}  // namespace service
-}  // namespace android
diff --git a/services/vr/vr_window_manager/vr_window_manager_binder.h b/services/vr/vr_window_manager/vr_window_manager_binder.h
deleted file mode 100644
index 9d0f0b2..0000000
--- a/services/vr/vr_window_manager/vr_window_manager_binder.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef VR_WINDOW_MANAGER_VR_WINDOW_MANAGER_BINDER_H_
-#define VR_WINDOW_MANAGER_VR_WINDOW_MANAGER_BINDER_H_
-
-#include <android/service/vr/BnVrWindowManager.h>
-
-#include <mutex>
-
-#include "controller_data_provider.h"
-#include "shell_view_binder_interface.h"
-
-namespace android {
-namespace service {
-namespace vr {
-
-class AshmemControllerDataProvider : public dvr::ControllerDataProvider {
- public:
-  AshmemControllerDataProvider() {}
-  virtual ~AshmemControllerDataProvider() {}
-
-  status_t Connect(int fd);
-  status_t Disconnect();
-
-  // ControllerDataProvider:
-  const void* LockControllerData() override;
-  void UnlockControllerData() override;
-
- protected:
-  void dumpInternal(String8& result);
-
- private:
-  static constexpr size_t kRegionLength = 8192;  // TODO(kpschoedel)
-  ::android::base::unique_fd fd_;
-
-  // Mutex for guarding shared_region_.
-  std::mutex mutex_;
-  void* shared_region_ = nullptr;
-
-  AshmemControllerDataProvider(const AshmemControllerDataProvider&) = delete;
-  void operator=(const AshmemControllerDataProvider&) = delete;
-};
-
-class VrWindowManagerBinder : public BnVrWindowManager,
-                              public AshmemControllerDataProvider {
- public:
-  VrWindowManagerBinder(android::dvr::ShellViewBinderInterface& app)
-      : app_(app) {}
-  virtual ~VrWindowManagerBinder() {}
-
-  // Must be called before clients can connect.
-  // Returns 0 if initialization is successful.
-  int Initialize();
-  static char const* getServiceName() { return "vr_window_manager"; }
-
- protected:
-  // Implements IVrWindowManagerBinder.
-  ::android::binder::Status connectController(
-      const ::android::base::unique_fd& fd) override;
-  ::android::binder::Status disconnectController() override;
-  ::android::binder::Status enterVrMode() override;
-  ::android::binder::Status exitVrMode() override;
-  ::android::binder::Status setDebugMode(int32_t mode) override;
-  ::android::binder::Status set2DMode(int32_t mode) override;
-  ::android::binder::Status setRotation(int32_t angle) override;
-
-  // Implements BBinder::dump().
-  status_t dump(int fd, const Vector<String16>& args) override;
-
- private:
-  android::dvr::ShellViewBinderInterface& app_;
-
-  VrWindowManagerBinder(const VrWindowManagerBinder&) = delete;
-  void operator=(const VrWindowManagerBinder&) = delete;
-};
-
-}  // namespace vr
-}  // namespace service
-}  // namespace android
-
-#endif  // VR_WINDOW_MANAGER_VR_WINDOW_MANAGER_BINDER_H_
diff --git a/services/vr/vr_window_manager/vr_window_manager_binder_test.cpp b/services/vr/vr_window_manager/vr_window_manager_binder_test.cpp
deleted file mode 100644
index f43e803..0000000
--- a/services/vr/vr_window_manager/vr_window_manager_binder_test.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <binder/IPCThreadState.h>
-#include <binder/IServiceManager.h>
-#include <binder/ProcessState.h>
-#include <cutils/log.h>
-
-#include "vr_window_manager_binder.h"
-
-int main() {
-  ALOGI("Starting");
-  android::service::vr::VrWindowManagerBinder service;
-  const int status = service.Initialize();
-  LOG_ALWAYS_FATAL_IF(status != 0, "initialization failed: %d", status);
-
-  signal(SIGPIPE, SIG_IGN);
-  android::sp<android::ProcessState> ps(android::ProcessState::self());
-  ps->setThreadPoolMaxThreadCount(4);
-  ps->startThreadPool();
-  ps->giveThreadPoolName();
-
-  android::sp<android::IServiceManager> sm(android::defaultServiceManager());
-  const android::status_t service_status = sm->addService(
-      android::service::vr::VrWindowManagerBinder::SERVICE_NAME(), &service,
-      false /*allowIsolated*/);
-  LOG_ALWAYS_FATAL_IF(service_status != android::OK, "service not added: %d",
-                      static_cast<int>(service_status));
-
-  android::IPCThreadState::self()->joinThreadPool();
-  return 0;
-}
diff --git a/services/vr/vr_window_manager/vr_wm.rc b/services/vr/vr_window_manager/vr_wm.rc
deleted file mode 100644
index e515bb7..0000000
--- a/services/vr/vr_window_manager/vr_wm.rc
+++ /dev/null
@@ -1,5 +0,0 @@
-service vr_wm /system/bin/vr_wm
-  class core
-  user system
-  group system graphics input
-  writepid /dev/cpuset/system/tasks
diff --git a/services/vr/vr_window_manager/vr_wm_ctl.cpp b/services/vr/vr_window_manager/vr_wm_ctl.cpp
deleted file mode 100644
index 758e02b..0000000
--- a/services/vr/vr_window_manager/vr_wm_ctl.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <android/service/vr/BpVrWindowManager.h>
-#include <binder/IPCThreadState.h>
-#include <binder/IServiceManager.h>
-#include <binder/ProcessState.h>
-#include <inttypes.h>
-
-void usage() { fprintf(stderr, "usage: vr_wm_ctl [enter|exit|debug N]\n"); }
-
-int report(const android::binder::Status& status) {
-  if (status.isOk()) {
-    fprintf(stderr, "ok\n");
-    return 0;
-  }
-  fprintf(stderr, "failed (%" PRId32 ") %s\n", status.exceptionCode(),
-          status.exceptionMessage().string());
-  return (int)status.exceptionCode();
-}
-
-int main(int argc, char* argv[]) {
-  android::sp<android::IServiceManager> sm(android::defaultServiceManager());
-  if (sm == nullptr) {
-    fprintf(stderr, "service manager not found\n");
-    exit(1);
-  }
-
-  android::sp<android::service::vr::IVrWindowManager> vrwm =
-      android::interface_cast<android::service::vr::IVrWindowManager>(
-          sm->getService(
-              android::service::vr::IVrWindowManager::SERVICE_NAME()));
-  if (vrwm == nullptr) {
-    fprintf(stderr, "service not found\n");
-    exit(1);
-  }
-
-  android::binder::Status status;
-  if ((argc == 2) && (strcmp(argv[1], "enter") == 0)) {
-    exit(report(vrwm->enterVrMode()));
-  } else if ((argc == 2) && (strcmp(argv[1], "exit") == 0)) {
-    exit(report(vrwm->exitVrMode()));
-  } else if ((argc == 3) && (strcmp(argv[1], "debug") == 0)) {
-    exit(report(vrwm->setDebugMode(atoi(argv[2]))));
-  } else if ((argc == 3) && (strcmp(argv[1], "2d") == 0)) {
-    exit(report(vrwm->set2DMode(atoi(argv[2]))));
-  } else if ((argc == 3) && (strcmp(argv[1], "rotate") == 0)) {
-    exit(report(vrwm->setRotation(atoi(argv[2]))));
-  } else {
-    usage();
-    exit(2);
-  }
-
-  return 0;
-}