LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/gpu/instanced - InstanceProcessor.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 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             : #ifndef gr_instanced_InstanceProcessor_DEFINED
       9             : #define gr_instanced_InstanceProcessor_DEFINED
      10             : 
      11             : #include "GrCaps.h"
      12             : #include "GrGeometryProcessor.h"
      13             : #include "instanced/InstancedRenderingTypes.h"
      14             : 
      15             : namespace gr_instanced {
      16             : 
      17             : /**
      18             :  * This class provides a GP implementation that uses instanced rendering. Is sends geometry in as
      19             :  * basic, pre-baked canonical shapes, and uses instanced vertex attribs to control how these shapes
      20             :  * are transformed and drawn. MSAA is accomplished with the sample mask rather than finely
      21             :  * tesselated geometry.
      22             :  */
      23           0 : class InstanceProcessor : public GrGeometryProcessor {
      24             : public:
      25             :     InstanceProcessor(OpInfo, GrBuffer* paramsBuffer);
      26             : 
      27           0 :     const char* name() const override { return "Instance Processor"; }
      28           0 :     OpInfo opInfo() const { return fOpInfo; }
      29             : 
      30           0 :     void getGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder* b) const override {
      31           0 :         b->add32(fOpInfo.fData);
      32           0 :     }
      33             :     GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override;
      34             : 
      35             :     /**
      36             :      * Returns a buffer of ShapeVertex that defines the canonical instanced geometry.
      37             :      */
      38             :     static const GrBuffer* SK_WARN_UNUSED_RESULT FindOrCreateVertexBuffer(GrGpu*);
      39             : 
      40             :     /**
      41             :      * Returns a buffer of 8-bit indices for the canonical instanced geometry. The client can call
      42             :      * GetIndexRangeForXXX to know which indices to use for a specific shape.
      43             :      */
      44             :     static const GrBuffer* SK_WARN_UNUSED_RESULT FindOrCreateIndex8Buffer(GrGpu*);
      45             : 
      46             :     static IndexRange GetIndexRangeForRect(GrAAType);
      47             :     static IndexRange GetIndexRangeForOval(GrAAType, const SkRect& devBounds);
      48             :     static IndexRange GetIndexRangeForRRect(GrAAType);
      49             : 
      50             :     static const char* GetNameOfIndexRange(IndexRange);
      51             : 
      52             : private:
      53             :     /**
      54             :      * Called by the platform-specific instanced rendering implementation to determine the level of
      55             :      * support this class can offer on the given GLSL platform.
      56             :      */
      57             :     static GrCaps::InstancedSupport CheckSupport(const GrShaderCaps&, const GrCaps&);
      58             : 
      59             :     OpInfo fOpInfo;
      60             :     BufferAccess fParamsAccess;
      61             : 
      62             :     friend class GLInstancedRendering; // For CheckSupport.
      63             : 
      64             :     typedef GrGeometryProcessor INHERITED;
      65             : };
      66             : 
      67             : }
      68             : 
      69             : #endif

Generated by: LCOV version 1.13