DawnContextProvider: create dawn instance with cache interface
So compiled shaders from graphite dawn will be stored into disk to
avoid re-compiling shaders between chrome runs.
Bug: 1454867
Change-Id: If6a2a7a552b13c29a2e4ea2c9411b98898cf0252
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4615640
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1160452}
diff --git a/gpu/ipc/service/gpu_channel_manager.h b/gpu/ipc/service/gpu_channel_manager.h
index acdb14b5..35bddb6 100644
--- a/gpu/ipc/service/gpu_channel_manager.h
+++ b/gpu/ipc/service/gpu_channel_manager.h
@@ -45,11 +45,9 @@
#include "ui/gl/gl_surface.h"
#include "url/gurl.h"
-namespace base {
-namespace trace_event {
+namespace base::trace_event {
class TracedValue;
-} // namespace trace_event
-} // namespace base
+} // namespace base::trace_event
namespace gl {
class GLShareGroup;
@@ -58,15 +56,16 @@
namespace gpu {
class BuiltInShaderCacheWriter;
-class SharedImageManager;
+class DawnContextProvider;
+class ImageDecodeAcceleratorWorker;
struct GpuPreferences;
class GpuChannel;
class GpuChannelManagerDelegate;
class GpuMemoryBufferFactory;
class GpuWatchdogThread;
-class ImageDecodeAcceleratorWorker;
class MailboxManager;
class Scheduler;
+class SharedImageManager;
class SyncPointManager;
struct VideoMemoryUsageStats;
@@ -107,7 +106,9 @@
ImageDecodeAcceleratorWorker* image_decode_accelerator_worker,
viz::VulkanContextProvider* vulkan_context_provider = nullptr,
viz::MetalContextProvider* metal_context_provider = nullptr,
- DawnContextProvider* dawn_context_provider = nullptr);
+ DawnContextProvider* dawn_context_provider = nullptr,
+ webgpu::DawnCachingInterfaceFactory* dawn_caching_interface_factory =
+ nullptr);
GpuChannelManager(const GpuChannelManager&) = delete;
GpuChannelManager& operator=(const GpuChannelManager&) = delete;
@@ -226,15 +227,9 @@
return gr_shader_cache_ ? &*gr_shader_cache_ : nullptr;
}
-#if BUILDFLAG(USE_DAWN)
webgpu::DawnCachingInterfaceFactory* dawn_caching_interface_factory() {
return dawn_caching_interface_factory_.get();
}
-#else
- webgpu::DawnCachingInterfaceFactory* dawn_caching_interface_factory() {
- return nullptr;
- }
-#endif
// raster::GrShaderCache::Client implementation.
void StoreShader(const std::string& key, const std::string& shader) override;
@@ -386,10 +381,7 @@
absl::optional<raster::GrShaderCache> gr_shader_cache_;
scoped_refptr<SharedContextState> shared_context_state_;
-#if BUILDFLAG(USE_DAWN)
- std::unique_ptr<webgpu::DawnCachingInterfaceFactory>
- dawn_caching_interface_factory_;
-#endif
+ raw_ptr<webgpu::DawnCachingInterfaceFactory> dawn_caching_interface_factory_;
// With --enable-vulkan, |vulkan_context_provider_| will be set from
// viz::GpuServiceImpl. The raster decoders will use it for rasterization if