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

Side by Side Diff: src/gpu/gl/GrGLPathRendering.h

Issue 437473002: Wrap NV_path_rendering API with GrGLPathRendering (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix builds more Created 6 years, 4 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/gl/GrGLPathRange.cpp ('k') | src/gpu/gl/GrGLPathRendering.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2014 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 GrGLPathRendering_DEFINED
9 #define GrGLPathRendering_DEFINED
10
11 #include "SkRefCnt.h"
12 #include "gl/GrGLFunctions.h"
13
14 class GrGLNameAllocator;
15 struct GrGLInterface;
16
17 /**
18 * This class wraps the NV_path_rendering extension and manages its various
19 * API versions. If a method is not present in the GrGLInterface (because the
20 * driver version is old), it tries to provide a backup implementation. But if
21 * a backup implementation is not practical, it marks the method as not
22 * supported.
23 */
24 class GrGLPathRendering {
25 public:
26 /**
27 * Create a new GrGLPathRendering object from a given GL interface. Unless
28 * otherwise specified in the caps, every method will work properly, even
29 * if it did not exist in the GL interface.
30 */
31 static GrGLPathRendering* Create(const GrGLInterface*);
32 virtual ~GrGLPathRendering();
33
34 /**
35 * Mark certain functionality as not supported if the driver version is too
36 * old and a backup implementation is not practical.
37 */
38 struct Caps {
39 bool fragmentInputGenSupport : 1;
40 };
41 const Caps& caps() const { return fCaps; }
42
43 /**
44 * Called when the GPU resources have been lost and need to be abandoned
45 * (for example after a context loss).
46 */
47 void abandonGpuResources();
48
49 // NV_path_rendering
50 GrGLuint genPaths(GrGLsizei range);
51 GrGLvoid deletePaths(GrGLuint path, GrGLsizei range);
52 GrGLvoid pathCommands(GrGLuint path, GrGLsizei numCommands, const GrGLubyte *commands,
53 GrGLsizei numCoords, GrGLenum coordType, const GrGLvoi d *coords);
54 GrGLvoid pathCoords(GrGLuint path, GrGLsizei numCoords,
55 GrGLenum coordType, const GrGLvoid *coords);
56 GrGLvoid pathParameteri(GrGLuint path, GrGLenum pname, GrGLint value);
57 GrGLvoid pathParameterf(GrGLuint path, GrGLenum pname, GrGLfloat value);
58 GrGLboolean isPath(GrGLuint path);
59 GrGLvoid pathStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask);
60 GrGLvoid stencilFillPath(GrGLuint path, GrGLenum fillMode, GrGLuint mask);
61 GrGLvoid stencilStrokePath(GrGLuint path, GrGLint reference, GrGLuint mask);
62 GrGLvoid stencilFillPathInstanced(GrGLsizei numPaths, GrGLenum pathNameType,
63 const GrGLvoid *paths, GrGLuint pathBase, GrGLenum fillMode,
64 GrGLuint mask, GrGLenum transformType,
65 const GrGLfloat *transformValues);
66 GrGLvoid stencilStrokePathInstanced(GrGLsizei numPaths, GrGLenum pathNameTyp e,
67 const GrGLvoid *paths, GrGLuint pathBase ,
68 GrGLint reference, GrGLuint mask, GrGLen um transformType,
69 const GrGLfloat *transformValues);
70 GrGLvoid pathTexGen(GrGLenum texCoordSet, GrGLenum genMode,
71 GrGLint components, const GrGLfloat *coeffs);
72 GrGLvoid coverFillPath(GrGLuint path, GrGLenum coverMode);
73 GrGLvoid coverStrokePath(GrGLuint name, GrGLenum coverMode);
74 GrGLvoid coverFillPathInstanced(GrGLsizei numPaths, GrGLenum pathNameType,
75 const GrGLvoid *paths, GrGLuint pathBase, Gr GLenum coverMode,
76 GrGLenum transformType, const GrGLfloat *tra nsformValues);
77 GrGLvoid coverStrokePathInstanced(GrGLsizei numPaths, GrGLenum pathNameType,
78 const GrGLvoid *paths, GrGLuint pathBase, GrGLenum coverMode,
79 GrGLenum transformType, const GrGLfloat* t ransformValues);
80
81 // NV_path_rendering v1.2
82 virtual GrGLvoid stencilThenCoverFillPath(GrGLuint path, GrGLenum fillMode,
83 GrGLuint mask, GrGLenum coverMode) ;
84 virtual GrGLvoid stencilThenCoverStrokePath(GrGLuint path, GrGLint reference ,
85 GrGLuint mask, GrGLenum coverMod e);
86 virtual GrGLvoid stencilThenCoverFillPathInstanced(
87 GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvo id *paths,
88 GrGLuint pathBase, GrGLenum fillMode, GrGLuint mask, Gr GLenum coverMode,
89 GrGLenum transformType, const GrGLfloat *transformValue s);
90 virtual GrGLvoid stencilThenCoverStrokePathInstanced(
91 GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvo id *paths,
92 GrGLuint pathBase, GrGLint reference, GrGLuint mask, Gr GLenum coverMode,
93 GrGLenum transformType, const GrGLfloat *transformValue s);
94
95 // NV_path_rendering v1.3
96 virtual GrGLvoid programPathFragmentInputGen(GrGLuint program, GrGLint locat ion,
97 GrGLenum genMode, GrGLint compo nents,
98 const GrGLfloat *coeffs);
99
100 protected:
101 GrGLPathRendering(const GrGLInterface*);
102
103 SkAutoTUnref<const GrGLInterface> fGLInterface;
104 SkAutoTDelete<GrGLNameAllocator> fPathNameAllocator;
105 Caps fCaps;
106 };
107
108 #endif
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLPathRange.cpp ('k') | src/gpu/gl/GrGLPathRendering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698