| /* |
| * Copyright 2016 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrGrInstancedPipelineInfo_DEFINED |
| #define GrGrInstancedPipelineInfo_DEFINED |
| |
| #include "GrRenderTargetProxy.h" |
| |
| /** |
| * Provides info about the pipeline that GrInstancedRendering needs in order to select appropriate |
| * drawing algorithms. |
| */ |
| struct GrInstancedPipelineInfo { |
| GrInstancedPipelineInfo(const GrRenderTargetProxy* rtp) |
| : fIsMultisampled(rtp->isStencilBufferMultisampled()) |
| , fIsMixedSampled(rtp->isMixedSampled()) |
| , fIsRenderingToFloat(GrPixelConfigIsFloatingPoint(rtp->desc().fConfig)) |
| , fColorDisabled(false) |
| , fDrawingShapeToStencil(false) |
| , fCanDiscard(false) { |
| } |
| |
| bool canUseCoverageAA() const { |
| return !fIsMultisampled || (fIsMixedSampled && !fDrawingShapeToStencil); |
| } |
| |
| bool fIsMultisampled : 1; |
| bool fIsMixedSampled : 1; |
| bool fIsRenderingToFloat : 1; |
| bool fColorDisabled : 1; |
| /** |
| * Indicates that the instanced renderer should take extra precautions to ensure the shape gets |
| * drawn correctly to the stencil buffer (e.g. no coverage AA). NOTE: this does not mean a |
| * stencil test is or is not active. |
| */ |
| bool fDrawingShapeToStencil : 1; |
| /** |
| * Indicates that the instanced renderer can use processors with discard instructions. This |
| * should not be set if the shader will use derivatives, automatic mipmap LOD, or other features |
| * that depend on neighboring pixels. Some draws will fail to create if this is not set. |
| */ |
| bool fCanDiscard : 1; |
| }; |
| |
| #endif |