Commit 0bbf8ec0 authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

ExternalVkImage: fix ETC1 format related problems.

Bug: None
Change-Id: I89d721e8dc5f1ad322ba1ecea0b45c0e4b97d5f9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2242040
Commit-Queue: Peng Huang <penghuang@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Auto-Submit: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#777966}
parent 4bd23fa8
...@@ -136,8 +136,19 @@ std::unique_ptr<ExternalVkImageBacking> ExternalVkImageBacking::Create( ...@@ -136,8 +136,19 @@ std::unique_ptr<ExternalVkImageBacking> ExternalVkImageBacking::Create(
auto* device_queue = context_state->vk_context_provider()->GetDeviceQueue(); auto* device_queue = context_state->vk_context_provider()->GetDeviceQueue();
VkFormat vk_format = ToVkFormat(format); VkFormat vk_format = ToVkFormat(format);
VkImageUsageFlags vk_usage =
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT; constexpr auto kUsageNeedsColorAttachment =
SHARED_IMAGE_USAGE_GLES2 | SHARED_IMAGE_USAGE_RASTER |
SHARED_IMAGE_USAGE_OOP_RASTERIZATION | SHARED_IMAGE_USAGE_WEBGPU;
VkImageUsageFlags vk_usage = VK_IMAGE_USAGE_SAMPLED_BIT;
if (usage & kUsageNeedsColorAttachment) {
vk_usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
if (format == viz::ETC1) {
DLOG(ERROR) << "ETC1 format cannot be used as color attachment.";
return nullptr;
}
}
if (is_transfer_dst) if (is_transfer_dst)
vk_usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT; vk_usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
...@@ -769,6 +780,8 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size, ...@@ -769,6 +780,8 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size,
size().width(), size().height()); size().width(), size().height());
} }
SetCleared();
if (!need_synchronization()) { if (!need_synchronization()) {
DCHECK(handles.empty()); DCHECK(handles.empty());
command_buffer->Submit(0, nullptr, 0, nullptr); command_buffer->Submit(0, nullptr, 0, nullptr);
...@@ -781,7 +794,6 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size, ...@@ -781,7 +794,6 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size,
std::move(command_buffer)); std::move(command_buffer));
fence_helper->EnqueueBufferCleanupForSubmittedWork(stage_buffer, fence_helper->EnqueueBufferCleanupForSubmittedWork(stage_buffer,
stage_allocation); stage_allocation);
return true; return true;
} }
...@@ -814,7 +826,6 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size, ...@@ -814,7 +826,6 @@ bool ExternalVkImageBacking::WritePixels(size_t data_size,
begin_access_semaphores); begin_access_semaphores);
fence_helper->EnqueueBufferCleanupForSubmittedWork(stage_buffer, fence_helper->EnqueueBufferCleanupForSubmittedWork(stage_buffer,
stage_allocation); stage_allocation);
return true; return true;
} }
......
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