SkiaRenderer: Call Begin{Read,Write}Access just before and after skia flush()

This CL a preparing CL for avoiding extra command buffer submission.
Next we will gather semaphores from shared image and create end read access
semaphores before calling skia flush(). And the skia flush() will submit
command buffer which will wait begin read read semaphores before execution,
and signal end read access semaphores when the GPU execution is done.

Change-Id: I32515417316f1b9b55da3b56bedc4828dde0ad3a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1557789
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#651513}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: bc77533cdd83301adf6b876657f2bc596e00847b
diff --git a/command_buffer/service/shared_image_factory.cc b/command_buffer/service/shared_image_factory.cc
index f4fda01..f4fca8c 100644
--- a/command_buffer/service/shared_image_factory.cc
+++ b/command_buffer/service/shared_image_factory.cc
@@ -232,22 +232,22 @@
 SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage(
     uint32_t usage,
     bool* allow_legacy_mailbox) {
+  bool using_dawn = usage & SHARED_IMAGE_USAGE_WEBGPU;
+  bool vulkan_usage = using_vulkan_ && (usage & SHARED_IMAGE_USAGE_DISPLAY);
+  bool gl_usage = usage & SHARED_IMAGE_USAGE_GLES2;
+  bool share_between_threads = IsSharedBetweenThreads(usage);
+  bool share_between_gl_vulkan = gl_usage && vulkan_usage;
+  bool using_interop_factory =
+      share_between_threads || share_between_gl_vulkan || using_dawn;
   // wrapped_sk_image_factory_ is only used for OOPR and supports
   // a limited number of flags (e.g. no SHARED_IMAGE_USAGE_SCANOUT).
   constexpr auto kWrappedSkImageUsage = SHARED_IMAGE_USAGE_RASTER |
                                         SHARED_IMAGE_USAGE_OOP_RASTERIZATION |
                                         SHARED_IMAGE_USAGE_DISPLAY;
-  bool using_wrapped_sk_image =
-      wrapped_sk_image_factory_ && (usage == kWrappedSkImageUsage);
-  bool using_dawn = usage & SHARED_IMAGE_USAGE_WEBGPU;
-
-  bool vulkan_usage = using_vulkan_ && (usage & SHARED_IMAGE_USAGE_DISPLAY);
-  bool gl_usage = usage & SHARED_IMAGE_USAGE_GLES2;
-  bool share_between_threads = IsSharedBetweenThreads(usage);
-  bool share_between_gl_vulkan = gl_usage && vulkan_usage;
-  bool using_interop_factory = share_between_threads ||
-                               share_between_gl_vulkan || using_dawn ||
-                               (vulkan_usage && !using_wrapped_sk_image);
+  bool using_wrapped_sk_image = wrapped_sk_image_factory_ &&
+                                (usage == kWrappedSkImageUsage) &&
+                                !using_interop_factory;
+  using_interop_factory |= vulkan_usage && !using_wrapped_sk_image;
 
   *allow_legacy_mailbox =
       !using_wrapped_sk_image && !using_interop_factory && !using_vulkan_;