Commit 38016632 by Jamie Madill Committed by Commit Bot

Vulkan: Enable async feature in end2end_tests.

This adds a new async-command-queue-enabled config that we run against most of the GLES tests in angle_end2end_tests. The tests now test both with and without the threaded command queue. Bug: b/172704839 Change-Id: Ife75f8328f23ac150cddf8ad8a6c4b8fc2d83986 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2532655Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent c3607098
...@@ -758,6 +758,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphores) ...@@ -758,6 +758,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphores)
{ {
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(false, kDefaultImageCreateFlags, RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(false, kDefaultImageCreateFlags,
kDefaultImageUsageFlags, isSwiftshader(), kDefaultImageUsageFlags, isSwiftshader(),
enableDebugLayers()); enableDebugLayers());
...@@ -770,6 +774,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresWithFlags) ...@@ -770,6 +774,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresWithFlags)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kDefaultImageCreateFlags, RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kDefaultImageCreateFlags,
kDefaultImageUsageFlags, isSwiftshader(), kDefaultImageUsageFlags, isSwiftshader(),
enableDebugLayers()); enableDebugLayers());
...@@ -781,6 +789,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresNoStorage) ...@@ -781,6 +789,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresNoStorage)
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kDefaultImageCreateFlags, RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kDefaultImageCreateFlags,
kNoStorageImageUsageFlags, isSwiftshader(), kNoStorageImageUsageFlags, isSwiftshader(),
enableDebugLayers()); enableDebugLayers());
...@@ -793,6 +805,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresMutableNoStorag ...@@ -793,6 +805,10 @@ TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphoresMutableNoStorag
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_flags"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kMutableImageCreateFlags, RunShouldClearWithSemaphoresTest<OpaqueFdTraits>(true, kMutableImageCreateFlags,
kNoStorageImageUsageFlags, isSwiftshader(), kNoStorageImageUsageFlags, isSwiftshader(),
enableDebugLayers()); enableDebugLayers());
...@@ -978,6 +994,10 @@ TEST_P(VulkanExternalImageTest, ShouldDrawOpaqueFdWithSemaphores) ...@@ -978,6 +994,10 @@ TEST_P(VulkanExternalImageTest, ShouldDrawOpaqueFdWithSemaphores)
{ {
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
runShouldDrawTest<OpaqueFdTraits>(isSwiftshader(), enableDebugLayers()); runShouldDrawTest<OpaqueFdTraits>(isSwiftshader(), enableDebugLayers());
} }
...@@ -1143,6 +1163,10 @@ TEST_P(VulkanExternalImageTest, WaitSemaphoresRetainsContentOpaqueFd) ...@@ -1143,6 +1163,10 @@ TEST_P(VulkanExternalImageTest, WaitSemaphoresRetainsContentOpaqueFd)
{ {
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd")); ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
// http://issuetracker.google.com/173004081
ANGLE_SKIP_TEST_IF(IsVulkan() && IsIntel() && IsLinux() && isAsyncCommandQueueFeatureEnabled());
runWaitSemaphoresRetainsContentTest<OpaqueFdTraits>(isSwiftshader(), enableDebugLayers()); runWaitSemaphoresRetainsContentTest<OpaqueFdTraits>(isSwiftshader(), enableDebugLayers());
} }
......
...@@ -512,6 +512,11 @@ class ANGLETestBase ...@@ -512,6 +512,11 @@ class ANGLETestBase
mCurrentParams->isSwiftshader(); mCurrentParams->isSwiftshader();
} }
bool isAsyncCommandQueueFeatureEnabled() const
{
return mCurrentParams->eglParameters.asyncCommandQueueFeatureVulkan == EGL_TRUE;
}
bool platformSupportsMultithreading() const; bool platformSupportsMultithreading() const;
private: private:
......
...@@ -234,6 +234,11 @@ std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp) ...@@ -234,6 +234,11 @@ std::ostream &operator<<(std::ostream &stream, const PlatformParameters &pp)
break; break;
} }
if (pp.eglParameters.asyncCommandQueueFeatureVulkan == EGL_TRUE)
{
stream << "_AsyncQueue";
}
if (pp.eglParameters.hasExplicitMemBarrierFeatureMtl == EGL_FALSE) if (pp.eglParameters.hasExplicitMemBarrierFeatureMtl == EGL_FALSE)
{ {
stream << "_NoMetalExplicitMemoryBarrier"; stream << "_NoMetalExplicitMemoryBarrier";
......
...@@ -271,6 +271,13 @@ inline PlatformParameters WithEmulatedPrerotation(const PlatformParameters &para ...@@ -271,6 +271,13 @@ inline PlatformParameters WithEmulatedPrerotation(const PlatformParameters &para
prerotation.eglParameters.emulatedPrerotation = rotation; prerotation.eglParameters.emulatedPrerotation = rotation;
return prerotation; return prerotation;
} }
inline PlatformParameters WithAsyncCommandQueueFeatureVulkan(const PlatformParameters &params)
{
PlatformParameters withAsyncCommandQueue = params;
withAsyncCommandQueue.eglParameters.asyncCommandQueueFeatureVulkan = EGL_TRUE;
return withAsyncCommandQueue;
}
} // namespace angle } // namespace angle
#endif // ANGLE_TEST_CONFIGS_H_ #endif // ANGLE_TEST_CONFIGS_H_
...@@ -133,18 +133,21 @@ struct CombinedPrintToStringParamName ...@@ -133,18 +133,21 @@ struct CombinedPrintToStringParamName
INSTANTIATE_TEST_SUITE_P(, testName, testing::ValuesIn(::angle::FilterTestParams(valuesin)), \ INSTANTIATE_TEST_SUITE_P(, testName, testing::ValuesIn(::angle::FilterTestParams(valuesin)), \
testing::PrintToStringParamName()) testing::PrintToStringParamName())
#define ANGLE_ALL_TEST_PLATFORMS_ES1 \ #define ANGLE_ALL_TEST_PLATFORMS_ES1 \
ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN(), ES1_VULKAN_SWIFTSHADER() ES1_D3D11(), ES1_OPENGL(), ES1_OPENGLES(), ES1_VULKAN(), ES1_VULKAN_SWIFTSHADER(), \
WithAsyncCommandQueueFeatureVulkan(ES1_VULKAN())
#define ANGLE_ALL_TEST_PLATFORMS_ES2 \ #define ANGLE_ALL_TEST_PLATFORMS_ES2 \
ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN(), ES2_VULKAN_SWIFTSHADER(), \ ES2_D3D9(), ES2_D3D11(), ES2_OPENGL(), ES2_OPENGLES(), ES2_VULKAN(), ES2_VULKAN_SWIFTSHADER(), \
ES2_METAL() ES2_METAL(), WithAsyncCommandQueueFeatureVulkan(ES2_VULKAN())
#define ANGLE_ALL_TEST_PLATFORMS_ES3 \ #define ANGLE_ALL_TEST_PLATFORMS_ES3 \
ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN(), ES3_VULKAN_SWIFTSHADER(), ES3_METAL() ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN(), ES3_VULKAN_SWIFTSHADER(), \
ES3_METAL(), WithAsyncCommandQueueFeatureVulkan(ES3_VULKAN())
#define ANGLE_ALL_TEST_PLATFORMS_ES31 \ #define ANGLE_ALL_TEST_PLATFORMS_ES31 \
ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES(), ES31_VULKAN(), ES31_VULKAN_SWIFTSHADER() ES31_D3D11(), ES31_OPENGL(), ES31_OPENGLES(), ES31_VULKAN(), ES31_VULKAN_SWIFTSHADER(), \
WithAsyncCommandQueueFeatureVulkan(ES31_VULKAN())
#define ANGLE_ALL_TEST_PLATFORMS_NULL ES2_NULL(), ES3_NULL(), ES31_NULL() #define ANGLE_ALL_TEST_PLATFORMS_NULL ES2_NULL(), ES3_NULL(), ES31_NULL()
......
...@@ -80,6 +80,7 @@ struct EGLPlatformParameters ...@@ -80,6 +80,7 @@ struct EGLPlatformParameters
EGLint shaderStencilOutputFeature = EGL_DONT_CARE; EGLint shaderStencilOutputFeature = EGL_DONT_CARE;
EGLint genMultipleMipsPerPassFeature = EGL_DONT_CARE; EGLint genMultipleMipsPerPassFeature = EGL_DONT_CARE;
uint32_t emulatedPrerotation = 0; // Can be 0, 90, 180 or 270 uint32_t emulatedPrerotation = 0; // Can be 0, 90, 180 or 270
EGLint asyncCommandQueueFeatureVulkan = EGL_DONT_CARE;
EGLint hasExplicitMemBarrierFeatureMtl = EGL_DONT_CARE; EGLint hasExplicitMemBarrierFeatureMtl = EGL_DONT_CARE;
EGLint hasCheapRenderPassFeatureMtl = EGL_DONT_CARE; EGLint hasCheapRenderPassFeatureMtl = EGL_DONT_CARE;
EGLint forceBufferGPUStorageFeatureMtl = EGL_DONT_CARE; EGLint forceBufferGPUStorageFeatureMtl = EGL_DONT_CARE;
......
...@@ -221,6 +221,13 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow, ...@@ -221,6 +221,13 @@ bool EGLWindow::initializeDisplay(OSWindow *osWindow,
break; break;
} }
if (params.asyncCommandQueueFeatureVulkan == EGL_TRUE)
{
// TODO(jmadill): Update feature names. b/172704839
enabledFeatureOverrides.push_back("commandProcessor");
enabledFeatureOverrides.push_back("asynchronousCommandProcessing");
}
if (params.hasExplicitMemBarrierFeatureMtl == EGL_FALSE) if (params.hasExplicitMemBarrierFeatureMtl == EGL_FALSE)
{ {
disabledFeatureOverrides.push_back("has_explicit_mem_barrier_mtl"); disabledFeatureOverrides.push_back("has_explicit_mem_barrier_mtl");
......
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