Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: src/gpu/GrTargetCommands.h

Issue 1040303002: Use texture barriers to read directly from the RT (Closed) Base URL: https://skia.googlesource.com/skia.git@upload_zz1_reverseiter
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrTargetCommands_DEFINED 8 #ifndef GrTargetCommands_DEFINED
9 #define GrTargetCommands_DEFINED 9 #define GrTargetCommands_DEFINED
10 10
(...skipping 29 matching lines...) Expand all
40 public: 40 public:
41 enum CmdType { 41 enum CmdType {
42 kDraw_CmdType = 1, 42 kDraw_CmdType = 1,
43 kStencilPath_CmdType = 2, 43 kStencilPath_CmdType = 2,
44 kSetState_CmdType = 3, 44 kSetState_CmdType = 3,
45 kClear_CmdType = 4, 45 kClear_CmdType = 4,
46 kCopySurface_CmdType = 5, 46 kCopySurface_CmdType = 5,
47 kDrawPath_CmdType = 6, 47 kDrawPath_CmdType = 6,
48 kDrawPaths_CmdType = 7, 48 kDrawPaths_CmdType = 7,
49 kDrawBatch_CmdType = 8, 49 kDrawBatch_CmdType = 8,
50 kBlendBarrier_CmdType = 9,
50 }; 51 };
51 52
52 Cmd(CmdType type) : fMarkerID(-1), fType(type) {} 53 Cmd(CmdType type) : fMarkerID(-1), fType(type) {}
53 virtual ~Cmd() {} 54 virtual ~Cmd() {}
54 55
55 virtual void execute(GrGpu*, const SetState*) = 0; 56 virtual void execute(GrGpu*, const SetState*) = 0;
56 57
57 CmdType type() const { return fType; } 58 CmdType type() const { return fType; }
58 59
59 // trace markers 60 // trace markers
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 Cmd* recordClear(GrInOrderDrawBuffer*, 115 Cmd* recordClear(GrInOrderDrawBuffer*,
115 const SkIRect* rect, 116 const SkIRect* rect,
116 GrColor, 117 GrColor,
117 bool canIgnoreRect, 118 bool canIgnoreRect,
118 GrRenderTarget*); 119 GrRenderTarget*);
119 Cmd* recordCopySurface(GrInOrderDrawBuffer*, 120 Cmd* recordCopySurface(GrInOrderDrawBuffer*,
120 GrSurface* dst, 121 GrSurface* dst,
121 GrSurface* src, 122 GrSurface* src,
122 const SkIRect& srcRect, 123 const SkIRect& srcRect,
123 const SkIPoint& dstPoint); 124 const SkIPoint& dstPoint);
125 Cmd* recordBlendBarrier(GrInOrderDrawBuffer*);
124 126
125 protected: 127 protected:
126 void willReserveVertexAndIndexSpace(int vertexCount, 128 void willReserveVertexAndIndexSpace(int vertexCount,
127 size_t vertexStride, 129 size_t vertexStride,
128 int indexCount); 130 int indexCount);
129 131
130 private: 132 private:
131 friend class GrInOrderDrawBuffer; 133 friend class GrInOrderDrawBuffer;
132 134
133 typedef GrGpu::DrawArgs DrawArgs; 135 typedef GrGpu::DrawArgs DrawArgs;
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 290
289 void execute(GrGpu*, const SetState*) override; 291 void execute(GrGpu*, const SetState*) override;
290 292
291 // TODO it wouldn't be too hard to let batches allocate in the cmd buffe r 293 // TODO it wouldn't be too hard to let batches allocate in the cmd buffe r
292 SkAutoTUnref<GrBatch> fBatch; 294 SkAutoTUnref<GrBatch> fBatch;
293 295
294 private: 296 private:
295 GrBatchTarget* fBatchTarget; 297 GrBatchTarget* fBatchTarget;
296 }; 298 };
297 299
300 struct BlendBarrier : public Cmd {
301 BlendBarrier() : Cmd(kBlendBarrier_CmdType) {}
302 void execute(GrGpu*, const SetState*) override;
303 };
304
298 static const int kCmdBufferInitialSizeInBytes = 8 * 1024; 305 static const int kCmdBufferInitialSizeInBytes = 8 * 1024;
299 306
300 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double. 307 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double.
301 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer; 308 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer;
302 309
303 CmdBuffer fCmdBuffer; 310 CmdBuffer fCmdBuffer;
304 SetState* fPrevState; 311 SetState* fPrevState;
305 GrBatchTarget fBatchTarget; 312 GrBatchTarget fBatchTarget;
306 // TODO hack until batch is everywhere 313 // TODO hack until batch is everywhere
307 GrTargetCommands::DrawBatch* fDrawBatch; 314 GrTargetCommands::DrawBatch* fDrawBatch;
308 315
309 // This will go away when everything uses batch. However, in the short ter m anything which 316 // This will go away when everything uses batch. However, in the short ter m anything which
310 // might be put into the GrInOrderDrawBuffer needs to make sure it closes t he last batch 317 // might be put into the GrInOrderDrawBuffer needs to make sure it closes t he last batch
311 void closeBatch(); 318 void closeBatch();
312 }; 319 };
313 320
314 #endif 321 #endif
315 322
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698