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

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: fix windows build Created 5 years, 7 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
« no previous file with comments | « src/gpu/GrGpu.h ('k') | src/gpu/GrTargetCommands.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 public: 49 public:
50 enum CmdType { 50 enum CmdType {
51 kDraw_CmdType = 1, 51 kDraw_CmdType = 1,
52 kStencilPath_CmdType = 2, 52 kStencilPath_CmdType = 2,
53 kSetState_CmdType = 3, 53 kSetState_CmdType = 3,
54 kClear_CmdType = 4, 54 kClear_CmdType = 4,
55 kCopySurface_CmdType = 5, 55 kCopySurface_CmdType = 5,
56 kDrawPath_CmdType = 6, 56 kDrawPath_CmdType = 6,
57 kDrawPaths_CmdType = 7, 57 kDrawPaths_CmdType = 7,
58 kDrawBatch_CmdType = 8, 58 kDrawBatch_CmdType = 8,
59 kXferBarrier_CmdType = 9,
59 }; 60 };
60 61
61 Cmd(CmdType type) : fMarkerID(-1), fType(type) {} 62 Cmd(CmdType type) : fMarkerID(-1), fType(type) {}
62 virtual ~Cmd() {} 63 virtual ~Cmd() {}
63 64
64 virtual void execute(GrGpu*, const SetState*) = 0; 65 virtual void execute(GrGpu*, const SetState*) = 0;
65 66
66 CmdType type() const { return fType; } 67 CmdType type() const { return fType; }
67 68
68 // trace markers 69 // trace markers
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 // instanced draw. The caller must have already recorded a new draw state an d clip if necessary. 145 // instanced draw. The caller must have already recorded a new draw state an d clip if necessary.
145 int concatInstancedDraw(GrInOrderDrawBuffer*, const GrDrawTarget::DrawInfo&) ; 146 int concatInstancedDraw(GrInOrderDrawBuffer*, const GrDrawTarget::DrawInfo&) ;
146 147
147 bool SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrInOrderDrawBuffer*, 148 bool SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrInOrderDrawBuffer*,
148 const GrPrimitiveProce ssor*, 149 const GrPrimitiveProce ssor*,
149 const GrDrawTarget::Pi pelineInfo&); 150 const GrDrawTarget::Pi pelineInfo&);
150 bool SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrInOrderDrawBuffer*, 151 bool SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrInOrderDrawBuffer*,
151 GrBatch*, 152 GrBatch*,
152 const GrDrawTarget::Pi pelineInfo&); 153 const GrDrawTarget::Pi pelineInfo&);
153 154
155 void recordXferBarrierIfNecessary(GrInOrderDrawBuffer*, const GrDrawTarget:: PipelineInfo&);
156
154 struct Draw : public Cmd { 157 struct Draw : public Cmd {
155 Draw(const GrDrawTarget::DrawInfo& info) : Cmd(kDraw_CmdType), fInfo(inf o) {} 158 Draw(const GrDrawTarget::DrawInfo& info) : Cmd(kDraw_CmdType), fInfo(inf o) {}
156 159
157 void execute(GrGpu*, const SetState*) override; 160 void execute(GrGpu*, const SetState*) override;
158 161
159 GrDrawTarget::DrawInfo fInfo; 162 GrDrawTarget::DrawInfo fInfo;
160 }; 163 };
161 164
162 struct StencilPath : public Cmd { 165 struct StencilPath : public Cmd {
163 StencilPath(const GrPath* path, GrRenderTarget* rt) 166 StencilPath(const GrPath* path, GrRenderTarget* rt)
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 272
270 ~SetState() { reinterpret_cast<GrPipeline*>(fPipeline.get())->~GrPipelin e(); } 273 ~SetState() { reinterpret_cast<GrPipeline*>(fPipeline.get())->~GrPipelin e(); }
271 274
272 // This function is only for getting the location in memory where we wil l create our 275 // This function is only for getting the location in memory where we wil l create our
273 // pipeline object. 276 // pipeline object.
274 GrPipeline* pipelineLocation() { return reinterpret_cast<GrPipeline*>(fP ipeline.get()); } 277 GrPipeline* pipelineLocation() { return reinterpret_cast<GrPipeline*>(fP ipeline.get()); }
275 278
276 const GrPipeline* getPipeline() const { 279 const GrPipeline* getPipeline() const {
277 return reinterpret_cast<const GrPipeline*>(fPipeline.get()); 280 return reinterpret_cast<const GrPipeline*>(fPipeline.get());
278 } 281 }
282 GrRenderTarget* getRenderTarget() const {
283 return this->getPipeline()->getRenderTarget();
284 }
285 const GrXferProcessor* getXferProcessor() const {
286 return this->getPipeline()->getXferProcessor();
287 }
279 288
280 void execute(GrGpu*, const SetState*) override; 289 void execute(GrGpu*, const SetState*) override;
281 290
282 typedef GrPendingProgramElement<const GrPrimitiveProcessor> ProgramPrimi tiveProcessor; 291 typedef GrPendingProgramElement<const GrPrimitiveProcessor> ProgramPrimi tiveProcessor;
283 ProgramPrimitiveProcessor fPrimitiveProcessor; 292 ProgramPrimitiveProcessor fPrimitiveProcessor;
284 SkAlignedSStorage<sizeof(GrPipeline)> fPipeline; 293 SkAlignedSStorage<sizeof(GrPipeline)> fPipeline;
285 GrProgramDesc fDesc; 294 GrProgramDesc fDesc;
286 GrBatchTracker fBatchTracker; 295 GrBatchTracker fBatchTracker;
287 }; 296 };
288 297
289 struct DrawBatch : public Cmd { 298 struct DrawBatch : public Cmd {
290 DrawBatch(GrBatch* batch, GrBatchTarget* batchTarget) 299 DrawBatch(GrBatch* batch, GrBatchTarget* batchTarget)
291 : Cmd(kDrawBatch_CmdType) 300 : Cmd(kDrawBatch_CmdType)
292 , fBatch(SkRef(batch)) 301 , fBatch(SkRef(batch))
293 , fBatchTarget(batchTarget) { 302 , fBatchTarget(batchTarget) {
294 SkASSERT(!batch->isUsed()); 303 SkASSERT(!batch->isUsed());
295 } 304 }
296 305
297 void execute(GrGpu*, const SetState*) override; 306 void execute(GrGpu*, const SetState*) override;
298 307
299 // TODO it wouldn't be too hard to let batches allocate in the cmd buffe r 308 // TODO it wouldn't be too hard to let batches allocate in the cmd buffe r
300 SkAutoTUnref<GrBatch> fBatch; 309 SkAutoTUnref<GrBatch> fBatch;
301 310
302 private: 311 private:
303 GrBatchTarget* fBatchTarget; 312 GrBatchTarget* fBatchTarget;
304 }; 313 };
305 314
315 struct XferBarrier : public Cmd {
316 XferBarrier() : Cmd(kXferBarrier_CmdType) {}
317
318 void execute(GrGpu*, const SetState*) override;
319
320 GrXferBarrierType fBarrierType;
321 };
322
306 static const int kCmdBufferInitialSizeInBytes = 8 * 1024; 323 static const int kCmdBufferInitialSizeInBytes = 8 * 1024;
307 324
308 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double. 325 typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double.
309 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer; 326 typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer;
310 327
311 CmdBuffer fCmdBuffer; 328 CmdBuffer fCmdBuffer;
312 SetState* fPrevState; 329 SetState* fPrevState;
313 GrBatchTarget fBatchTarget; 330 GrBatchTarget fBatchTarget;
314 // TODO hack until batch is everywhere 331 // TODO hack until batch is everywhere
315 GrTargetCommands::DrawBatch* fDrawBatch; 332 GrTargetCommands::DrawBatch* fDrawBatch;
316 333
317 // This will go away when everything uses batch. However, in the short ter m anything which 334 // This will go away when everything uses batch. However, in the short ter m anything which
318 // might be put into the GrInOrderDrawBuffer needs to make sure it closes t he last batch 335 // might be put into the GrInOrderDrawBuffer needs to make sure it closes t he last batch
319 void closeBatch(); 336 void closeBatch();
320 }; 337 };
321 338
322 #endif 339 #endif
323 340
OLDNEW
« no previous file with comments | « src/gpu/GrGpu.h ('k') | src/gpu/GrTargetCommands.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698