1 /* 2 * Copyright 2021 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "src/gpu/graphite/SharedContext.h" 9 10 #include "include/gpu/graphite/BackendTexture.h" 11 #include "include/gpu/graphite/TextureInfo.h" 12 #include "src/gpu/graphite/Caps.h" 13 #include "src/gpu/graphite/CommandBuffer.h" 14 #include "src/gpu/graphite/GpuWorkSubmission.h" 15 #include "src/gpu/graphite/RendererProvider.h" 16 #include "src/gpu/graphite/ResourceProvider.h" 17 18 namespace skgpu::graphite { 19 get_binding_layout(const Caps * caps)20static Layout get_binding_layout(const Caps* caps) { 21 ResourceBindingRequirements reqs = caps->resourceBindingRequirements(); 22 return caps->storageBufferSupport() ? reqs.fStorageBufferLayout : reqs.fUniformBufferLayout; 23 } 24 SharedContext(std::unique_ptr<const Caps> caps,BackendApi backend,SkSpan<sk_sp<SkRuntimeEffect>> userDefinedKnownRuntimeEffects)25SharedContext::SharedContext(std::unique_ptr<const Caps> caps, 26 BackendApi backend, 27 SkSpan<sk_sp<SkRuntimeEffect>> userDefinedKnownRuntimeEffects) 28 : fCaps(std::move(caps)) 29 , fBackend(backend) 30 , fGlobalCache() 31 , fShaderDictionary(get_binding_layout(fCaps.get()), userDefinedKnownRuntimeEffects) {} 32 ~SharedContext()33SharedContext::~SharedContext() { 34 // TODO: add disconnect? 35 36 // TODO: destroyResources instead? 37 } 38 isProtected() const39Protected SharedContext::isProtected() const { return Protected(fCaps->protectedSupport()); } 40 setRendererProvider(std::unique_ptr<RendererProvider> rendererProvider)41void SharedContext::setRendererProvider(std::unique_ptr<RendererProvider> rendererProvider) { 42 // Should only be called once and be non-null 43 SkASSERT(rendererProvider && !fRendererProvider); 44 fRendererProvider = std::move(rendererProvider); 45 } 46 47 } // namespace skgpu::graphite 48