OLD | NEW |
| (Empty) |
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 "GrXferProcessor.h" | |
9 #include "gl/GrGLCaps.h" | |
10 | |
11 GrXferProcessor::GrXferProcessor() : fWillReadDstColor(false), fDstCopyTextureOf
fset() { | |
12 } | |
13 | |
14 GrXferProcessor::GrXferProcessor(const GrDeviceCoordTexture* dstCopy, bool willR
eadDstColor) | |
15 : fWillReadDstColor(willReadDstColor) | |
16 , fDstCopyTextureOffset() { | |
17 if (dstCopy && dstCopy->texture()) { | |
18 fDstCopy.reset(dstCopy->texture()); | |
19 fDstCopyTextureOffset = dstCopy->offset(); | |
20 this->addTextureAccess(&fDstCopy); | |
21 } | |
22 } | |
23 | |
24 void GrXferProcessor::getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuil
der* b) const { | |
25 uint32_t key = this->willReadDstColor() ? 0x1 : 0x0; | |
26 if (this->getDstCopyTexture() && | |
27 kTopLeft_GrSurfaceOrigin == this->getDstCopyTexture()->origin()) { | |
28 key |= 0x2; | |
29 } | |
30 b->add32(key); | |
31 this->onGetGLProcessorKey(caps, b); | |
32 } | |
33 | |
34 /////////////////////////////////////////////////////////////////////////////// | |
35 | |
36 GrXferProcessor* GrXPFactory::createXferProcessor(const GrProcOptInfo& colorPOI, | |
37 const GrProcOptInfo& coverageP
OI, | |
38 const GrDeviceCoordTexture* ds
tCopy, | |
39 const GrDrawTargetCaps& caps)
const { | |
40 #ifdef SK_DEBUG | |
41 if (this->willReadDstColor()) { | |
42 if (!caps.dstReadInShaderSupport()) { | |
43 SkASSERT(dstCopy && dstCopy->texture()); | |
44 } else { | |
45 SkASSERT(!dstCopy || !dstCopy->texture()); | |
46 } | |
47 } else { | |
48 SkASSERT(!dstCopy || !dstCopy->texture()); | |
49 | |
50 } | |
51 #endif | |
52 return this->onCreateXferProcessor(colorPOI, coveragePOI, dstCopy); | |
53 } | |
54 | |
55 bool GrXPFactory::willNeedDstCopy(const GrDrawTargetCaps& caps) const { | |
56 return (this->willReadDstColor() && !caps.dstReadInShaderSupport()); | |
57 } | |
58 | |
OLD | NEW |