1 /*
2  * Copyright 2016 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 SkSurface_Compute_DEFINED
9 #define SkSurface_Compute_DEFINED
10 
11 //
12 // for now make sure it's defined
13 //
14 
15 #if !defined(SK_SUPPORT_GPU_COMPUTE)
16 #define SK_SUPPORT_GPU_COMPUTE 1
17 #endif
18 
19 //
20 //
21 //
22 
23 #if SK_SUPPORT_GPU_COMPUTE
24 
25 //
26 //
27 //
28 
29 #include "SkSurface_Base.h"
30 #include "GrContext.h"
31 #include "SkRefCnt.h"
32 
33 // Yuqian: It doesn't seem right to me for SkSurface_Compute to depend on SkWindow.
34 //         Maybe we should move MakeComputeBackedSurface(from SkWindow) to SkWindow.cpp.
35 // #include "SkWindow.h"
36 
37 //
38 //
39 //
40 
41 #include "SkContext_Compute.h"
42 
43 //
44 //
45 //
46 
47 //
48 //
49 //
50 
51 class SkSurface_Compute : public SkSurface_Base
52 {
53  public:
54 
55   SkSurface_Compute(sk_sp<SkContext_Compute> compute,
56                     int const width, int const height);
57 
58   ~SkSurface_Compute();
59 
60   //
61   //
62   //
63 
64   SkCanvas*         onNewCanvas()                                    override;
65   sk_sp<SkSurface>  onNewSurface(const SkImageInfo&)                 override;
66   sk_sp<SkImage>    onNewImageSnapshot() override;
67   void              onCopyOnWrite(ContentChangeMode)                 override;
68 
69   //
70   //
71   //
72 
73   // static sk_sp<SkSurface> MakeComputeBackedSurface(SkWindow                       * const window,
74   //                                                  const SkWindow::AttachmentInfo &       attachmentInfo,
75   //                                                  GrGLInterface const            * const grInterface,
76   //                                                  GrContext                      * const grContext,
77   //                                                  sk_sp<SkContext_Compute>               compute);
78   // //
79   //
80   //
81 
82  private:
83 
84   typedef SkSurface_Base INHERITED;
85 
86   //
87   //
88   //
89 
90   sk_sp<SkBaseDevice>      device;
91 
92   //
93   //
94   //
95 
96   sk_sp<SkContext_Compute> compute;
97 
98   //
99   //
100   //
101 };
102 
103 //
104 //
105 //
106 
107 #endif
108 
109 //
110 //
111 //
112 
113 #endif
114