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