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) { ...@@ -175,6 +175,7 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) {
"test_utils/VulkanExternalHelper.h", "test_utils/VulkanExternalHelper.h",
] ]
deps += [ deps += [
"$angle_root/src/common/vulkan",
"$angle_root/src/libANGLE/renderer/vulkan:angle_vulkan_entry_points", "$angle_root/src/libANGLE/renderer/vulkan:angle_vulkan_entry_points",
] ]
} }
......
...@@ -84,12 +84,10 @@ class VulkanExternalImageTest : public ANGLETest ...@@ -84,12 +84,10 @@ class VulkanExternalImageTest : public ANGLETest
// glImportMemoryFdEXT must be able to import a valid opaque fd. // glImportMemoryFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd) TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd)
{ {
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
VkFormat format = ChooseAnyImageFormat(helper); VkFormat format = ChooseAnyImageFormat(helper);
ANGLE_SKIP_TEST_IF(format == VK_FORMAT_UNDEFINED); ANGLE_SKIP_TEST_IF(format == VK_FORMAT_UNDEFINED);
...@@ -129,12 +127,10 @@ TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd) ...@@ -129,12 +127,10 @@ TEST_P(VulkanExternalImageTest, ShouldImportMemoryOpaqueFd)
// glImportSemaphoreFdEXT must be able to import a valid opaque fd. // glImportSemaphoreFdEXT must be able to import a valid opaque fd.
TEST_P(VulkanExternalImageTest, ShouldImportSemaphoreOpaqueFd) TEST_P(VulkanExternalImageTest, ShouldImportSemaphoreOpaqueFd)
{ {
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
ANGLE_SKIP_TEST_IF(!helper.canCreateSemaphoreOpaqueFd()); ANGLE_SKIP_TEST_IF(!helper.canCreateSemaphoreOpaqueFd());
...@@ -165,7 +161,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdRGBA8) ...@@ -165,7 +161,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdRGBA8)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM; VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
ANGLE_SKIP_TEST_IF( ANGLE_SKIP_TEST_IF(
...@@ -217,7 +213,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8) ...@@ -217,7 +213,7 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia"));
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM; VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
ANGLE_SKIP_TEST_IF( ANGLE_SKIP_TEST_IF(
...@@ -266,11 +262,9 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8) ...@@ -266,11 +262,9 @@ TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoRGBA8)
TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd) TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd)
{ {
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
for (const ImageFormatPair &format : kChromeFormats) for (const ImageFormatPair &format : kChromeFormats)
{ {
if (!helper.canCreateImageOpaqueFd(format.vkFormat, VK_IMAGE_TYPE_2D, if (!helper.canCreateImageOpaqueFd(format.vkFormat, VK_IMAGE_TYPE_2D,
...@@ -319,11 +313,9 @@ TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd) ...@@ -319,11 +313,9 @@ TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumFd)
TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumZirconHandle) TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumZirconHandle)
{ {
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia"));
// http://anglebug.com/4092
ANGLE_SKIP_TEST_IF(isSwiftshader());
VulkanExternalHelper helper; VulkanExternalHelper helper;
helper.initialize(); helper.initialize(isSwiftshader());
for (const ImageFormatPair &format : kChromeFormats) for (const ImageFormatPair &format : kChromeFormats)
{ {
if (!helper.canCreateImageZirconVmo(format.vkFormat, VK_IMAGE_TYPE_2D, if (!helper.canCreateImageZirconVmo(format.vkFormat, VK_IMAGE_TYPE_2D,
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include "common/bitset_utils.h" #include "common/bitset_utils.h"
#include "common/debug.h" #include "common/debug.h"
#include "common/system_utils.h"
#include "common/vulkan/vulkan_icd.h"
namespace angle namespace angle
{ {
...@@ -138,8 +140,12 @@ VulkanExternalHelper::~VulkanExternalHelper() ...@@ -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); ASSERT(mInstance == VK_NULL_HANDLE);
VkResult result = VK_SUCCESS; VkResult result = VK_SUCCESS;
#if ANGLE_SHARED_LIBVULKAN #if ANGLE_SHARED_LIBVULKAN
...@@ -196,9 +202,11 @@ void VulkanExternalHelper::initialize() ...@@ -196,9 +202,11 @@ void VulkanExternalHelper::initialize()
#endif // ANGLE_SHARED_LIBVULKAN #endif // ANGLE_SHARED_LIBVULKAN
std::vector<VkPhysicalDevice> physicalDevices = EnumeratePhysicalDevices(mInstance); std::vector<VkPhysicalDevice> physicalDevices = EnumeratePhysicalDevices(mInstance);
ASSERT(physicalDevices.size() > 0); ASSERT(physicalDevices.size() > 0);
mPhysicalDevice = physicalDevices[0]; VkPhysicalDeviceProperties physicalDeviceProperties;
ChoosePhysicalDevice(physicalDevices, icd, &mPhysicalDevice, &physicalDeviceProperties);
vkGetPhysicalDeviceMemoryProperties(mPhysicalDevice, &mMemoryProperties); vkGetPhysicalDeviceMemoryProperties(mPhysicalDevice, &mMemoryProperties);
......
...@@ -20,7 +20,7 @@ class VulkanExternalHelper ...@@ -20,7 +20,7 @@ class VulkanExternalHelper
VulkanExternalHelper(); VulkanExternalHelper();
~VulkanExternalHelper(); ~VulkanExternalHelper();
void initialize(); void initialize(bool useSwiftshader);
VkInstance getInstance() const { return mInstance; } VkInstance getInstance() const { return mInstance; }
VkPhysicalDevice getPhysicalDevice() const { return mPhysicalDevice; } 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