Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit c4734bf

Browse files
mspangCommit Bot
authored andcommitted
Revert "Vulkan: Add semaphores test to VulkanExternalImageTest"
This reverts commit 69e4694. Reason for revert: Broke the build due to VulkanExternalHelper API change Original change's description: > Vulkan: Add semaphores test to VulkanExternalImageTest > > Add a more substantial test that uses semaphores to > VulkanExternalImageTest. > > It's still just a clear in GL, which exposed a bug that a staged clear > wasn't be flushed by a call to glSignalSemaphoreEXT. > > Bug: angleproject:3289 > Change-Id: Id938eaf2c8c20cb0ae9fb948fbfcf3448980b577 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2195684 > Commit-Queue: Michael Spang <[email protected]> > Reviewed-by: Jamie Madill <[email protected]> > Reviewed-by: Geoff Lang <[email protected]> [email protected],[email protected],[email protected] Change-Id: I50b2af80cd0214bd3c317eb5ba211ddc66803d74 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:3289 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197193 Reviewed-by: Michael Spang <[email protected]> Commit-Queue: Michael Spang <[email protected]>
1 parent d705f18 commit c4734bf

File tree

4 files changed

+2
-687
lines changed

4 files changed

+2
-687
lines changed

src/libANGLE/renderer/vulkan/SemaphoreVk.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,6 @@ angle::Result SemaphoreVk::signal(gl::Context *context,
193193
layout = image.getCurrentImageLayout();
194194
}
195195

196-
ANGLE_TRY(textureVk->ensureImageInitialized(contextVk, ImageMipLevels::EnabledLevels));
197-
198196
vk::CommandBuffer *commandBuffer;
199197
ANGLE_TRY(contextVk->endRenderPassAndGetCommandBuffer(&commandBuffer));
200198

src/tests/gl_tests/VulkanExternalImageTest.cpp

Lines changed: 0 additions & 246 deletions
Original file line numberDiff line numberDiff line change
@@ -374,252 +374,6 @@ TEST_P(VulkanExternalImageTest, TextureFormatCompatChromiumZirconHandle)
374374
}
375375
}
376376

377-
// Test creating and clearing RGBA8 texture in opaque fd with acquire/release.
378-
TEST_P(VulkanExternalImageTest, ShouldClearOpaqueFdWithSemaphores)
379-
{
380-
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_memory_object_fd"));
381-
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_semaphore_fd"));
382-
383-
VulkanExternalHelper helper;
384-
helper.initialize(isSwiftshader());
385-
386-
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
387-
ANGLE_SKIP_TEST_IF(
388-
!helper.canCreateImageOpaqueFd(format, VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_OPTIMAL));
389-
ANGLE_SKIP_TEST_IF(!helper.canCreateSemaphoreOpaqueFd());
390-
391-
VkSemaphore vkAcquireSemaphore = VK_NULL_HANDLE;
392-
VkResult result = helper.createSemaphoreOpaqueFd(&vkAcquireSemaphore);
393-
EXPECT_EQ(result, VK_SUCCESS);
394-
EXPECT_TRUE(vkAcquireSemaphore != VK_NULL_HANDLE);
395-
396-
VkSemaphore vkReleaseSemaphore = VK_NULL_HANDLE;
397-
result = helper.createSemaphoreOpaqueFd(&vkReleaseSemaphore);
398-
EXPECT_EQ(result, VK_SUCCESS);
399-
EXPECT_TRUE(vkReleaseSemaphore != VK_NULL_HANDLE);
400-
401-
int acquireSemaphoreFd = kInvalidFd;
402-
result = helper.exportSemaphoreOpaqueFd(vkAcquireSemaphore, &acquireSemaphoreFd);
403-
EXPECT_EQ(result, VK_SUCCESS);
404-
EXPECT_NE(acquireSemaphoreFd, kInvalidFd);
405-
406-
int releaseSemaphoreFd = kInvalidFd;
407-
result = helper.exportSemaphoreOpaqueFd(vkReleaseSemaphore, &releaseSemaphoreFd);
408-
EXPECT_EQ(result, VK_SUCCESS);
409-
EXPECT_NE(releaseSemaphoreFd, kInvalidFd);
410-
411-
VkImage image = VK_NULL_HANDLE;
412-
VkDeviceMemory deviceMemory = VK_NULL_HANDLE;
413-
VkDeviceSize deviceMemorySize = 0;
414-
415-
VkExtent3D extent = {1, 1, 1};
416-
result = helper.createImage2DOpaqueFd(format, extent, &image, &deviceMemory, &deviceMemorySize);
417-
EXPECT_EQ(result, VK_SUCCESS);
418-
419-
int memoryFd = kInvalidFd;
420-
result = helper.exportMemoryOpaqueFd(deviceMemory, &memoryFd);
421-
EXPECT_EQ(result, VK_SUCCESS);
422-
EXPECT_NE(memoryFd, kInvalidFd);
423-
424-
{
425-
GLMemoryObject memoryObject;
426-
GLint dedicatedMemory = GL_TRUE;
427-
glMemoryObjectParameterivEXT(memoryObject, GL_DEDICATED_MEMORY_OBJECT_EXT,
428-
&dedicatedMemory);
429-
glImportMemoryFdEXT(memoryObject, deviceMemorySize, GL_HANDLE_TYPE_OPAQUE_FD_EXT, memoryFd);
430-
431-
GLTexture texture;
432-
glBindTexture(GL_TEXTURE_2D, texture);
433-
glTexStorageMem2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, 1, 1, memoryObject, 0);
434-
435-
GLSemaphore glAcquireSemaphore;
436-
glImportSemaphoreFdEXT(glAcquireSemaphore, GL_HANDLE_TYPE_OPAQUE_FD_EXT,
437-
acquireSemaphoreFd);
438-
439-
helper.releaseImageAndSignalSemaphore(image, VK_IMAGE_LAYOUT_UNDEFINED,
440-
VK_IMAGE_LAYOUT_GENERAL, vkAcquireSemaphore);
441-
442-
const GLuint barrierTextures[] = {
443-
texture,
444-
};
445-
constexpr uint32_t textureBarriersCount = std::extent<decltype(barrierTextures)>();
446-
const GLenum textureSrcLayouts[] = {
447-
GL_LAYOUT_GENERAL_EXT,
448-
};
449-
constexpr uint32_t textureSrcLayoutsCount = std::extent<decltype(textureSrcLayouts)>();
450-
static_assert(textureBarriersCount == textureSrcLayoutsCount,
451-
"barrierTextures and textureSrcLayouts must be the same length");
452-
glWaitSemaphoreEXT(glAcquireSemaphore, 0, nullptr, textureBarriersCount, barrierTextures,
453-
textureSrcLayouts);
454-
455-
GLFramebuffer framebuffer;
456-
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
457-
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
458-
459-
glClearColor(0.5f, 0.5f, 0.5f, 0.5f);
460-
glClear(GL_COLOR_BUFFER_BIT);
461-
462-
GLSemaphore glReleaseSemaphore;
463-
glImportSemaphoreFdEXT(glReleaseSemaphore, GL_HANDLE_TYPE_OPAQUE_FD_EXT,
464-
releaseSemaphoreFd);
465-
466-
const GLenum textureDstLayouts[] = {
467-
GL_LAYOUT_TRANSFER_SRC_EXT,
468-
};
469-
constexpr uint32_t textureDstLayoutsCount = std::extent<decltype(textureSrcLayouts)>();
470-
static_assert(textureBarriersCount == textureDstLayoutsCount,
471-
"barrierTextures and textureDstLayouts must be the same length");
472-
glSignalSemaphoreEXT(glReleaseSemaphore, 0, nullptr, textureBarriersCount, barrierTextures,
473-
textureDstLayouts);
474-
475-
helper.waitSemaphoreAndAcquireImage(image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
476-
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
477-
vkReleaseSemaphore);
478-
uint8_t pixels[4];
479-
VkOffset3D offset = {};
480-
VkExtent3D extent = {1, 1, 1};
481-
helper.readPixels(image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, format, offset, extent,
482-
pixels, sizeof(pixels));
483-
484-
EXPECT_NEAR(0x80, pixels[0], 1);
485-
EXPECT_NEAR(0x80, pixels[1], 1);
486-
EXPECT_NEAR(0x80, pixels[2], 1);
487-
EXPECT_NEAR(0x80, pixels[3], 1);
488-
}
489-
490-
EXPECT_GL_NO_ERROR();
491-
492-
vkDeviceWaitIdle(helper.getDevice());
493-
vkDestroyImage(helper.getDevice(), image, nullptr);
494-
vkDestroySemaphore(helper.getDevice(), vkAcquireSemaphore, nullptr);
495-
vkDestroySemaphore(helper.getDevice(), vkReleaseSemaphore, nullptr);
496-
vkFreeMemory(helper.getDevice(), deviceMemory, nullptr);
497-
}
498-
499-
// Test creating and clearing RGBA8 texture in zircon vmo with acquire/release.
500-
TEST_P(VulkanExternalImageTest, ShouldClearZirconVmoWithSemaphores)
501-
{
502-
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_memory_object_fuchsia"));
503-
ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_semaphore_fuchsia"));
504-
505-
VulkanExternalHelper helper;
506-
helper.initialize(isSwiftshader());
507-
508-
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
509-
ANGLE_SKIP_TEST_IF(
510-
!helper.canCreateImageZirconVmo(format, VK_IMAGE_TYPE_2D, VK_IMAGE_TILING_OPTIMAL));
511-
ANGLE_SKIP_TEST_IF(!helper.canCreateSemaphoreZirconEvent());
512-
513-
VkSemaphore vkAcquireSemaphore = VK_NULL_HANDLE;
514-
VkResult result = helper.createSemaphoreZirconEvent(&vkAcquireSemaphore);
515-
EXPECT_EQ(result, VK_SUCCESS);
516-
EXPECT_TRUE(vkAcquireSemaphore != VK_NULL_HANDLE);
517-
518-
VkSemaphore vkReleaseSemaphore = VK_NULL_HANDLE;
519-
result = helper.createSemaphoreZirconEvent(&vkReleaseSemaphore);
520-
EXPECT_EQ(result, VK_SUCCESS);
521-
EXPECT_TRUE(vkReleaseSemaphore != VK_NULL_HANDLE);
522-
523-
zx_handle_t acquireSemaphoreHandle = ZX_HANDLE_INVALID;
524-
result = helper.exportSemaphoreZirconEvent(vkAcquireSemaphore, &acquireSemaphoreHandle);
525-
EXPECT_EQ(result, VK_SUCCESS);
526-
EXPECT_NE(acquireSemaphoreHandle, ZX_HANDLE_INVALID);
527-
528-
zx_handle_t releaseSemaphoreHandle = ZX_HANDLE_INVALID;
529-
result = helper.exportSemaphoreZirconEvent(vkReleaseSemaphore, &releaseSemaphoreHandle);
530-
EXPECT_EQ(result, VK_SUCCESS);
531-
EXPECT_NE(releaseSemaphoreHandle, ZX_HANDLE_INVALID);
532-
533-
VkImage image = VK_NULL_HANDLE;
534-
VkDeviceMemory deviceMemory = VK_NULL_HANDLE;
535-
VkDeviceSize deviceMemorySize = 0;
536-
537-
VkExtent3D extent = {1, 1, 1};
538-
result =
539-
helper.createImage2DZirconVmo(format, extent, &image, &deviceMemory, &deviceMemorySize);
540-
EXPECT_EQ(result, VK_SUCCESS);
541-
542-
zx_handle_t memoryHandle = ZX_HANDLE_INVALID;
543-
result = helper.exportMemoryZirconVmo(deviceMemory, &memoryHandle);
544-
EXPECT_EQ(result, VK_SUCCESS);
545-
EXPECT_NE(memoryHandle, ZX_HANDLE_INVALID);
546-
547-
{
548-
GLMemoryObject memoryObject;
549-
GLint dedicatedMemory = GL_TRUE;
550-
glMemoryObjectParameterivEXT(memoryObject, GL_DEDICATED_MEMORY_OBJECT_EXT,
551-
&dedicatedMemory);
552-
glImportMemoryZirconHandleANGLE(memoryObject, deviceMemorySize,
553-
GL_HANDLE_TYPE_ZIRCON_VMO_ANGLE, memoryHandle);
554-
555-
GLTexture texture;
556-
glBindTexture(GL_TEXTURE_2D, texture);
557-
glTexStorageMem2DEXT(GL_TEXTURE_2D, 1, GL_RGBA8, 1, 1, memoryObject, 0);
558-
559-
GLSemaphore glAcquireSemaphore;
560-
glImportSemaphoreZirconHandleANGLE(glAcquireSemaphore, GL_HANDLE_TYPE_ZIRCON_EVENT_ANGLE,
561-
acquireSemaphoreHandle);
562-
563-
helper.releaseImageAndSignalSemaphore(image, VK_IMAGE_LAYOUT_UNDEFINED,
564-
VK_IMAGE_LAYOUT_GENERAL, vkAcquireSemaphore);
565-
566-
const GLuint barrierTextures[] = {
567-
texture,
568-
};
569-
constexpr uint32_t textureBarriersCount = std::extent<decltype(barrierTextures)>();
570-
const GLenum textureSrcLayouts[] = {
571-
GL_LAYOUT_GENERAL_EXT,
572-
};
573-
constexpr uint32_t textureSrcLayoutsCount = std::extent<decltype(textureSrcLayouts)>();
574-
static_assert(textureBarriersCount == textureSrcLayoutsCount,
575-
"barrierTextures and textureSrcLayouts must be the same length");
576-
glWaitSemaphoreEXT(glAcquireSemaphore, 0, nullptr, textureBarriersCount, barrierTextures,
577-
textureSrcLayouts);
578-
579-
GLFramebuffer framebuffer;
580-
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
581-
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
582-
583-
glClearColor(0.5f, 0.5f, 0.5f, 0.5f);
584-
glClear(GL_COLOR_BUFFER_BIT);
585-
586-
GLSemaphore glReleaseSemaphore;
587-
glImportSemaphoreZirconHandleANGLE(glReleaseSemaphore, GL_HANDLE_TYPE_ZIRCON_EVENT_ANGLE,
588-
releaseSemaphoreHandle);
589-
590-
const GLenum textureDstLayouts[] = {
591-
GL_LAYOUT_TRANSFER_SRC_EXT,
592-
};
593-
constexpr uint32_t textureDstLayoutsCount = std::extent<decltype(textureSrcLayouts)>();
594-
static_assert(textureBarriersCount == textureDstLayoutsCount,
595-
"barrierTextures and textureDstLayouts must be the same length");
596-
glSignalSemaphoreEXT(glReleaseSemaphore, 0, nullptr, textureBarriersCount, barrierTextures,
597-
textureDstLayouts);
598-
599-
helper.waitSemaphoreAndAcquireImage(image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
600-
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
601-
vkReleaseSemaphore);
602-
uint8_t pixels[4];
603-
VkOffset3D offset = {};
604-
VkExtent3D extent = {1, 1, 1};
605-
helper.readPixels(image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, format, offset, extent,
606-
pixels, sizeof(pixels));
607-
608-
EXPECT_NEAR(0x80, pixels[0], 1);
609-
EXPECT_NEAR(0x80, pixels[1], 1);
610-
EXPECT_NEAR(0x80, pixels[2], 1);
611-
EXPECT_NEAR(0x80, pixels[3], 1);
612-
}
613-
614-
EXPECT_GL_NO_ERROR();
615-
616-
vkDeviceWaitIdle(helper.getDevice());
617-
vkDestroyImage(helper.getDevice(), image, nullptr);
618-
vkDestroySemaphore(helper.getDevice(), vkAcquireSemaphore, nullptr);
619-
vkDestroySemaphore(helper.getDevice(), vkReleaseSemaphore, nullptr);
620-
vkFreeMemory(helper.getDevice(), deviceMemory, nullptr);
621-
}
622-
623377
// Use this to select which configurations (e.g. which renderer, which GLES major version) these
624378
// tests should be run against.
625379
ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(VulkanExternalImageTest);

0 commit comments

Comments
 (0)