• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2021 Google Inc.
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 #ifndef GrMtlPipeline_DEFINED
9 #define GrMtlPipeline_DEFINED
10 
11 #include "src/gpu/GrManagedResource.h"
12 
13 #import <Metal/Metal.h>
14 
15 /**
16  * Wraps a MTLRenderPipelineState object
17  */
18 class GrMtlRenderPipeline : public GrManagedResource {
19 public:
Make(id<MTLRenderPipelineState> pso)20     static sk_sp<GrMtlRenderPipeline> Make(id<MTLRenderPipelineState> pso) {
21         return sk_sp<GrMtlRenderPipeline>(new GrMtlRenderPipeline(pso));
22     }
23 #ifdef SK_TRACE_MANAGED_RESOURCES
24     /** output a human-readable dump of this resource's information
25      */
dumpInfo()26     void dumpInfo() const override {
27         SkDebugf("GrMtlRenderPipeline: %p (%ld refs)\n", fPipelineState,
28                  CFGetRetainCount((CFTypeRef)fPipelineState));
29     }
30 #endif
31 
freeGPUData()32     void freeGPUData() const override {
33         fPipelineState = nil;
34     }
35 
mtlPipelineState()36     id<MTLRenderPipelineState> mtlPipelineState() const { return fPipelineState; }
37 
38 private:
GrMtlRenderPipeline(id<MTLRenderPipelineState> pso)39     GrMtlRenderPipeline(id<MTLRenderPipelineState> pso)
40         : GrManagedResource()
41         , fPipelineState(pso) {
42     }
43 
44     mutable id<MTLRenderPipelineState> fPipelineState;
45 };
46 
47 #endif
48