[ui/gfx][magma] Remove usage of VK_GOOGLE_image_usage_scanout

Buffers that are allocated with sysmem should get the correct tiling and
cache settings automatically.

Test: spinning_cube on nuc

Change-Id: I7889789b0ebfab10627b560024b1075811de9564
diff --git a/garnet/lib/magma/scripts/autorun_mali b/garnet/lib/magma/scripts/autorun_mali
index 3236455..9b3798f 100644
--- a/garnet/lib/magma/scripts/autorun_mali
+++ b/garnet/lib/magma/scripts/autorun_mali
@@ -18,7 +18,7 @@
 run-test-component magma_abi_conformance_tests $gtest_output_arg
 run-test-component msd_arm_mali_integration_tests $gtest_output_arg
 if [ -e /pkgfs/packages/vulkan-tests/0/test/vkext ]; then
-  run-test-component vkext --gtest_filter=-VulkanExtension.Scanout $gtest_output_arg
+  run-test-component vkext $gtest_output_arg
   run-test-component vkreadback $gtest_output_arg
 else
   echo SKIPPED app tests - no /pkgfs/packages/vulkan-tests/0/test/vkext
diff --git a/garnet/lib/magma/tests/vkext/BUILD.gn b/garnet/lib/magma/tests/vkext/BUILD.gn
index fe83461..d8f8c43 100644
--- a/garnet/lib/magma/tests/vkext/BUILD.gn
+++ b/garnet/lib/magma/tests/vkext/BUILD.gn
@@ -10,7 +10,6 @@
   sources = [
     "main.cc",
     "vk_ext_buffer_collection.cc",
-    "vk_ext_scanout.cc",
     "vk_external_memory_fuchsia_khr.cc",
     "vk_external_semaphore_fuchsia_khr.cc",
     "vk_fuchsia_external_memory.cc",
diff --git a/garnet/lib/magma/tests/vkext/vk_ext_scanout.cc b/garnet/lib/magma/tests/vkext/vk_ext_scanout.cc
deleted file mode 100644
index 3b7d31d..0000000
--- a/garnet/lib/magma/tests/vkext/vk_ext_scanout.cc
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "gtest/gtest.h"
-
-#if defined(MAGMA_USE_SHIM)
-#include "vulkan_shim.h"
-#else
-#include <vulkan/vulkan.h>
-#endif
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <vector>
-
-#include "magma_util/dlog.h"
-#include "magma_util/macros.h"
-
-namespace {
-
-class VulkanTest {
-public:
-    static bool CheckExtensions();
-
-    bool Initialize();
-    bool Exec();
-
-private:
-    bool InitVulkan();
-    bool InitImage();
-
-    bool is_initialized_ = false;
-    VkPhysicalDevice vk_physical_device_;
-    VkDevice vk_device_;
-    VkQueue vk_queue_;
-    VkImage vk_image_;
-    VkDeviceMemory vk_device_memory_;
-    VkCommandPool vk_command_pool_;
-    VkCommandBuffer vk_command_buffer_;
-};
-
-bool VulkanTest::CheckExtensions()
-{
-    uint32_t count;
-    VkResult result = vkEnumerateInstanceExtensionProperties(nullptr, &count, nullptr);
-    if (result != VK_SUCCESS)
-        return DRETF(false, "vkEnumerateInstanceExtensionProperties returned %d\n", result);
-
-    std::vector<VkExtensionProperties> extension_properties(count);
-    result = vkEnumerateInstanceExtensionProperties(nullptr, &count, extension_properties.data());
-    if (result != VK_SUCCESS)
-        return DRETF(false, "vkEnumerateInstanceExtensionProperties returned %d\n", result);
-
-    uint32_t found_count = 0;
-
-    for (auto& prop : extension_properties) {
-        DLOG("extension name %s version %u", prop.extensionName, prop.specVersion);
-        if (strcmp(prop.extensionName, VK_GOOGLE_IMAGE_USAGE_SCANOUT_EXTENSION_NAME) == 0)
-            found_count++;
-    }
-
-    return found_count == 1;
-}
-
-bool VulkanTest::Initialize()
-{
-    if (is_initialized_)
-        return false;
-
-    if (!InitVulkan())
-        return DRETF(false, "failed to initialize Vulkan");
-
-    is_initialized_ = true;
-
-    return true;
-}
-
-bool VulkanTest::InitVulkan()
-{
-    std::vector<const char*> enabled_extensions{VK_GOOGLE_IMAGE_USAGE_SCANOUT_EXTENSION_NAME};
-    VkInstanceCreateInfo create_info{
-        VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // VkStructureType             sType;
-        nullptr,                                // const void*                 pNext;
-        0,                                      // VkInstanceCreateFlags       flags;
-        nullptr,                                // const VkApplicationInfo*    pApplicationInfo;
-        0,                                      // uint32_t                    enabledLayerCount;
-        nullptr,                                // const char* const*          ppEnabledLayerNames;
-        static_cast<uint32_t>(enabled_extensions.size()),
-        enabled_extensions.data(),
-    };
-    VkAllocationCallbacks* allocation_callbacks = nullptr;
-    VkInstance instance;
-    VkResult result;
-
-    if ((result = vkCreateInstance(&create_info, allocation_callbacks, &instance)) != VK_SUCCESS)
-        return DRETF(false, "vkCreateInstance failed %d", result);
-
-    DLOG("vkCreateInstance succeeded");
-
-    uint32_t physical_device_count;
-    if ((result = vkEnumeratePhysicalDevices(instance, &physical_device_count, nullptr)) !=
-        VK_SUCCESS)
-        return DRETF(false, "vkEnumeratePhysicalDevices failed %d", result);
-
-    if (physical_device_count < 1)
-        return DRETF(false, "unexpected physical_device_count %d", physical_device_count);
-
-    DLOG("vkEnumeratePhysicalDevices returned count %d", physical_device_count);
-
-    std::vector<VkPhysicalDevice> physical_devices(physical_device_count);
-    if ((result = vkEnumeratePhysicalDevices(instance, &physical_device_count,
-                                             physical_devices.data())) != VK_SUCCESS)
-        return DRETF(false, "vkEnumeratePhysicalDevices failed %d", result);
-
-    for (auto device : physical_devices) {
-        VkPhysicalDeviceProperties properties;
-        vkGetPhysicalDeviceProperties(device, &properties);
-        DLOG("PHYSICAL DEVICE: %s", properties.deviceName);
-        DLOG("apiVersion 0x%x", properties.apiVersion);
-        DLOG("driverVersion 0x%x", properties.driverVersion);
-        DLOG("vendorID 0x%x", properties.vendorID);
-        DLOG("deviceID 0x%x", properties.deviceID);
-        DLOG("deviceType 0x%x", properties.deviceType);
-    }
-
-    uint32_t queue_family_count;
-    vkGetPhysicalDeviceQueueFamilyProperties(physical_devices[0], &queue_family_count, nullptr);
-
-    if (queue_family_count < 1)
-        return DRETF(false, "invalid queue_family_count %d", queue_family_count);
-
-    std::vector<VkQueueFamilyProperties> queue_family_properties(queue_family_count);
-    vkGetPhysicalDeviceQueueFamilyProperties(physical_devices[0], &queue_family_count,
-                                             queue_family_properties.data());
-
-    int32_t queue_family_index = -1;
-    for (uint32_t i = 0; i < queue_family_count; i++) {
-        if (queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) {
-            queue_family_index = i;
-            break;
-        }
-    }
-
-    if (queue_family_index < 0)
-        return DRETF(false, "couldn't find an appropriate queue");
-
-    float queue_priorities[1] = {0.0};
-
-    VkDeviceQueueCreateInfo queue_create_info = {.sType =
-                                                     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
-                                                 .pNext = nullptr,
-                                                 .flags = 0,
-                                                 .queueFamilyIndex = 0,
-                                                 .queueCount = 1,
-                                                 .pQueuePriorities = queue_priorities};
-    VkDeviceCreateInfo createInfo = {.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
-                                     .pNext = nullptr,
-                                     .flags = 0,
-                                     .queueCreateInfoCount = 1,
-                                     .pQueueCreateInfos = &queue_create_info,
-                                     .enabledLayerCount = 0,
-                                     .ppEnabledLayerNames = nullptr,
-                                     .enabledExtensionCount = 0,
-                                     .ppEnabledExtensionNames = nullptr,
-                                     .pEnabledFeatures = nullptr};
-    VkDevice vkdevice;
-
-    if ((result = vkCreateDevice(physical_devices[0], &createInfo,
-                                 nullptr /* allocationcallbacks */, &vkdevice)) != VK_SUCCESS)
-        return DRETF(false, "vkCreateDevice failed: %d", result);
-
-    vk_physical_device_ = physical_devices[0];
-    vk_device_ = vkdevice;
-
-    vkGetDeviceQueue(vkdevice, queue_family_index, 0, &vk_queue_);
-
-    return true;
-}
-
-bool VulkanTest::Exec()
-{
-    VkResult result;
-
-    VkImageCreateInfo image_create_info = {
-        .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-        .pNext = nullptr,
-        .flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
-        .imageType = VK_IMAGE_TYPE_2D,
-        .format = VK_FORMAT_R8G8B8A8_UNORM,
-        .extent = VkExtent3D{64, 64, 1},
-        .mipLevels = 1,
-        .arrayLayers = 1,
-        .samples = VK_SAMPLE_COUNT_1_BIT,
-        .tiling = VK_IMAGE_TILING_OPTIMAL,
-        .usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT |
-                 VK_IMAGE_USAGE_SCANOUT_BIT_GOOGLE,
-        .sharingMode = VK_SHARING_MODE_EXCLUSIVE,
-        .queueFamilyIndexCount = 0,     // not used since not sharing
-        .pQueueFamilyIndices = nullptr, // not used since not sharing
-        .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED,
-    };
-
-    result = vkCreateImage(vk_device_, &image_create_info, nullptr, &vk_image_);
-    if (result != VK_SUCCESS)
-        return DRETF(false, "vkCreateImage failed: %d", result);
-
-    DLOG("scanout tiling image created");
-
-    vkDestroyImage(vk_device_, vk_image_, nullptr);
-
-    DLOG("scanout tiling image destroyed");
-
-    return true;
-}
-
-TEST(VulkanExtension, Scanout)
-{
-    ASSERT_TRUE(VulkanTest::CheckExtensions());
-    VulkanTest test;
-    ASSERT_TRUE(test.Initialize());
-    ASSERT_TRUE(test.Exec());
-}
-
-} // namespace
\ No newline at end of file
diff --git a/garnet/lib/ui/gfx/swapchain/display_swapchain.cc b/garnet/lib/ui/gfx/swapchain/display_swapchain.cc
index 1dffd94..ba042ff 100644
--- a/garnet/lib/ui/gfx/swapchain/display_swapchain.cc
+++ b/garnet/lib/ui/gfx/swapchain/display_swapchain.cc
@@ -64,7 +64,7 @@
 // suitable one.
 vk::Format GetDisplayImageFormat(escher::VulkanDeviceQueues* device_queues);
 
-// Determines if the VK_GOOGLE_IMAGE_USAGE_SCANOUT_EXTENSION is supported.
+// Determines the necessary framebuffer image usage.
 vk::ImageUsageFlags GetFramebufferImageUsage();
 
 }  // namespace
@@ -567,25 +567,6 @@
 namespace {
 
 vk::ImageUsageFlags GetFramebufferImageUsage() {
-  const std::string kGoogleImageUsageScanoutExtensionName(
-      VK_GOOGLE_IMAGE_USAGE_SCANOUT_EXTENSION_NAME);
-  auto instance_extensions = vk::enumerateInstanceExtensionProperties();
-  if (instance_extensions.result != vk::Result::eSuccess) {
-    FXL_DLOG(ERROR) << "vkEnumerateInstanceExtensionProperties failed: "
-                    << vk::to_string(instance_extensions.result);
-    return vk::ImageUsageFlagBits::eColorAttachment;
-  }
-
-  for (auto& extension : instance_extensions.value) {
-    if (extension.extensionName == kGoogleImageUsageScanoutExtensionName) {
-      return vk::ImageUsageFlagBits::eScanoutGOOGLE |
-             vk::ImageUsageFlagBits::eColorAttachment;
-    }
-  }
-
-  FXL_DLOG(ERROR)
-      << "Unable to find optimal framebuffer image usage extension ("
-      << kGoogleImageUsageScanoutExtensionName << ").";
   return vk::ImageUsageFlagBits::eColorAttachment;
 }