1 /*
2  * Copyright 2015 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 #include "GrDrawBatch.h"
9 
GrDrawBatch(uint32_t classID)10 GrDrawBatch::GrDrawBatch(uint32_t classID) : INHERITED(classID), fPipelineInstalled(false) { }
11 
~GrDrawBatch()12 GrDrawBatch::~GrDrawBatch() {
13     if (fPipelineInstalled) {
14         this->pipeline()->~GrPipeline();
15     }
16 }
17 
getPipelineOptimizations(GrPipelineOptimizations * opt) const18 void GrDrawBatch::getPipelineOptimizations(GrPipelineOptimizations* opt) const {
19     GrInitInvariantOutput color;
20     GrInitInvariantOutput coverage;
21     this->computePipelineOptimizations(&color, &coverage, &opt->fOverrides);
22     opt->fColorPOI.initUsingInvariantOutput(color);
23     opt->fCoveragePOI.initUsingInvariantOutput(coverage);
24 }
25 
installPipeline(const GrPipeline::CreateArgs & args)26 bool GrDrawBatch::installPipeline(const GrPipeline::CreateArgs& args) {
27     GrXPOverridesForBatch overrides;
28     void* location = fPipelineStorage.get();
29     if (!GrPipeline::CreateAt(location, args, &overrides)) {
30         return false;
31     }
32     fPipelineInstalled = true;
33     this->initBatchTracker(overrides);
34     return true;
35 }
36