Commit 4271443d by Michael Spang Committed by Commit Bot

Fix VulkanExternalImageTest on SwiftShader

Check isSwiftShader() for whether to load swiftshader instead of the default ICD. The spec says we should query GL_DEVICE_UUID_EXT & co for this, but we haven't implemented those queries yet. Bug: angleproject:4092 Change-Id: Ifd74d6b6706f7b1fcbe5d82a33ecf70e631e26b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088660Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
parent 17bc7bcd
......@@ -175,6 +175,7 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) {
"test_utils/VulkanExternalHelper.h",
]
deps += [
"$angle_root/src/common/vulkan",
"$angle_root/src/libANGLE/renderer/vulkan:angle_vulkan_entry_points",
]
}
......
......@@ -84,12 +84,10 @@ class VulkanExternalImageTest : public ANGLETest
// glImportMemoryFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd)
{
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
VkFormat format = ChooseAnyImageFormat(helper);
ANGLE_SKIP_TEST_IF(format == VK_FORMAT_UNDEFINED);
......@@ -129,12 +127,10 @@ TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd)
// glImportSemaphoreFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportSemaphoreOpaqueFd)
{
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
ANGLE_SKIP_TEST_IF(!helper.canCreateSemaphoreOpaqueFd());
......@@ -165,7 +161,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdRGBA8)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
ANGLE_SKIP_TEST_IF(
......@@ -217,7 +213,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia"));
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
ANGLE_SKIP_TEST_IF(
......@@ -266,11 +262,9 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8)
TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd)
{
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
for (const ImageFormatPair &format : kChromeFormats)
{
if (!helper.canCreateImageOpaqueFd(format.vkFormat, VK_IMAGE_TYPE_2D,
......@@ -319,11 +313,9 @@ TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd)
TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumZirconHandle)
{
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia"));
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
VulkanExternalHelper helper;
helper.initialize();
helper.initialize(isSwiftshader());
for (const ImageFormatPair &format : kChromeFormats)
{
if (!helper.canCreateImageZirconVmo(format.vkFormat, VK_IMAGE_TYPE_2D,
......
......@@ -12,6 +12,8 @@
#include "common/bitset_utils.h"
#include "common/debug.h"
#include "common/system_utils.h"
#include "common/vulkan/vulkan_icd.h"
namespace angle
{
......@@ -138,8 +140,12 @@ VulkanExternalHelper::~VulkanExternalHelper()
}
}
void VulkanExternalHelper::initialize()
void VulkanExternalHelper::initialize(bool useSwiftshader)
{
vk::ICD icd = useSwiftshader ? vk::ICD::SwiftShader : vk::ICD::Default;
vk::ScopedVkLoaderEnvironment scopedEnvironment(true /* enableValidationLayers */, icd);
ASSERT(mInstance == VK_NULL_HANDLE);
VkResult result = VK_SUCCESS;
#if ANGLE_SHARED_LIBVULKAN
......@@ -196,9 +202,11 @@ void VulkanExternalHelper::initialize()
#endif // ANGLE_SHARED_LIBVULKAN
std::vector<VkPhysicalDevice> physicalDevices = EnumeratePhysicalDevices(mInstance);
ASSERT(physicalDevices.size() > 0);
mPhysicalDevice = physicalDevices[0];
VkPhysicalDeviceProperties physicalDeviceProperties;
ChoosePhysicalDevice(physicalDevices, icd, &mPhysicalDevice, &physicalDeviceProperties);
vkGetPhysicalDeviceMemoryProperties(mPhysicalDevice, &mMemoryProperties);
......
......@@ -20,7 +20,7 @@ class VulkanExternalHelper
VulkanExternalHelper();
~VulkanExternalHelper();
void initialize();
void initialize(bool useSwiftshader);
VkInstance getInstance() const { return mInstance; }
VkPhysicalDevice getPhysicalDevice() const { return mPhysicalDevice; }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment