| Index: src/gpu/gl/GrGLPathRendering.cpp
|
| diff --git a/src/gpu/gl/GrGLPathRendering.cpp b/src/gpu/gl/GrGLPathRendering.cpp
|
| deleted file mode 100644
|
| index 249d98139ad65b9d888e161ba32c7f6281a52046..0000000000000000000000000000000000000000
|
| --- a/src/gpu/gl/GrGLPathRendering.cpp
|
| +++ /dev/null
|
| @@ -1,281 +0,0 @@
|
| -/*
|
| - * Copyright 2014 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "gl/GrGLPathRendering.h"
|
| -#include "gl/GrGLInterface.h"
|
| -#include "gl/GrGLNameAllocator.h"
|
| -#include "gl/GrGLUtil.h"
|
| -
|
| -#define GL_CALL(X) GR_GL_CALL(fGLInterface.get(), X)
|
| -#define GL_CALL_RET(RET, X) GR_GL_CALL_RET(fGLInterface.get(), RET, X)
|
| -
|
| -class GrGLPathRenderingV12 : public GrGLPathRendering {
|
| -public:
|
| - GrGLPathRenderingV12(const GrGLInterface* glInterface)
|
| - : GrGLPathRendering(glInterface) {
|
| - }
|
| -
|
| - virtual GrGLvoid stencilThenCoverFillPath(GrGLuint path, GrGLenum fillMode,
|
| - GrGLuint mask, GrGLenum coverMode) SK_OVERRIDE;
|
| - virtual GrGLvoid stencilThenCoverStrokePath(GrGLuint path, GrGLint reference,
|
| - GrGLuint mask, GrGLenum coverMode) SK_OVERRIDE;
|
| - virtual GrGLvoid stencilThenCoverFillPathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLenum fillMode, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) SK_OVERRIDE;
|
| - virtual GrGLvoid stencilThenCoverStrokePathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLint reference, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) SK_OVERRIDE;
|
| -};
|
| -
|
| -class GrGLPathRenderingV13 : public GrGLPathRenderingV12 {
|
| -public:
|
| - GrGLPathRenderingV13(const GrGLInterface* glInterface)
|
| - : GrGLPathRenderingV12(glInterface) {
|
| - fCaps.fragmentInputGenSupport = true;
|
| - }
|
| -
|
| - virtual GrGLvoid programPathFragmentInputGen(GrGLuint program, GrGLint location,
|
| - GrGLenum genMode, GrGLint components,
|
| - const GrGLfloat *coeffs) SK_OVERRIDE;
|
| -};
|
| -
|
| -
|
| -GrGLPathRendering* GrGLPathRendering::Create(const GrGLInterface* glInterface) {
|
| - if (NULL == glInterface->fFunctions.fStencilThenCoverFillPath ||
|
| - NULL == glInterface->fFunctions.fStencilThenCoverStrokePath ||
|
| - NULL == glInterface->fFunctions.fStencilThenCoverFillPathInstanced ||
|
| - NULL == glInterface->fFunctions.fStencilThenCoverStrokePathInstanced) {
|
| - return new GrGLPathRendering(glInterface);
|
| - }
|
| -
|
| - if (NULL == glInterface->fFunctions.fProgramPathFragmentInputGen) {
|
| - return new GrGLPathRenderingV12(glInterface);
|
| - }
|
| -
|
| - return new GrGLPathRenderingV13(glInterface);
|
| -}
|
| -
|
| -GrGLPathRendering::GrGLPathRendering(const GrGLInterface* glInterface)
|
| - : fGLInterface(SkRef(glInterface)) {
|
| - memset(&fCaps, 0, sizeof(fCaps));
|
| -}
|
| -
|
| -GrGLPathRendering::~GrGLPathRendering() {
|
| -}
|
| -
|
| -void GrGLPathRendering::abandonGpuResources() {
|
| - fPathNameAllocator.reset(NULL);
|
| -}
|
| -
|
| -
|
| -// NV_path_rendering
|
| -GrGLuint GrGLPathRendering::genPaths(GrGLsizei range) {
|
| - if (range > 1) {
|
| - GrGLuint name;
|
| - GL_CALL_RET(name, GenPaths(range));
|
| - return name;
|
| - }
|
| -
|
| - if (NULL == fPathNameAllocator.get()) {
|
| - static const int range = 65536;
|
| - GrGLuint firstName;
|
| - GL_CALL_RET(firstName, GenPaths(range));
|
| - fPathNameAllocator.reset(SkNEW_ARGS(GrGLNameAllocator, (firstName, firstName + range)));
|
| - }
|
| -
|
| - // When allocating names one at a time, pull from a client-side pool of
|
| - // available names in order to save a round trip to the GL server.
|
| - GrGLuint name = fPathNameAllocator->allocateName();
|
| -
|
| - if (0 == name) {
|
| - // Our reserved path names are all in use. Fall back on GenPaths.
|
| - GL_CALL_RET(name, GenPaths(1));
|
| - }
|
| -
|
| - return name;
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::deletePaths(GrGLuint path, GrGLsizei range) {
|
| - if (range > 1) {
|
| - // It is not supported to delete names in ranges that were allocated
|
| - // individually using GrGLPathNameAllocator.
|
| - SkASSERT(NULL == fPathNameAllocator.get() ||
|
| - path + range <= fPathNameAllocator->firstName() ||
|
| - path >= fPathNameAllocator->endName());
|
| - GL_CALL(DeletePaths(path, range));
|
| - return;
|
| - }
|
| -
|
| - if (NULL == fPathNameAllocator.get() ||
|
| - path < fPathNameAllocator->firstName() ||
|
| - path >= fPathNameAllocator->endName()) {
|
| - // If we aren't inside fPathNameAllocator's range then this name was
|
| - // generated by the GenPaths fallback (or else was never allocated).
|
| - GL_CALL(DeletePaths(path, 1));
|
| - return;
|
| - }
|
| -
|
| - // Make the path empty to save memory, but don't free the name in the driver.
|
| - GL_CALL(PathCommands(path, 0, NULL, 0, GR_GL_FLOAT, NULL));
|
| - fPathNameAllocator->free(path);
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathCommands(GrGLuint path, GrGLsizei numCommands,
|
| - const GrGLubyte *commands, GrGLsizei numCoords,
|
| - GrGLenum coordType, const GrGLvoid *coords) {
|
| - GL_CALL(PathCommands(path, numCommands, commands, numCoords, coordType, coords));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathCoords(GrGLuint path, GrGLsizei numCoords,
|
| - GrGLenum coordType, const GrGLvoid *coords) {
|
| - GL_CALL(PathCoords(path, numCoords, coordType, coords));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathParameteri(GrGLuint path, GrGLenum pname, GrGLint value) {
|
| - GL_CALL(PathParameteri(path, pname, value));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathParameterf(GrGLuint path, GrGLenum pname, GrGLfloat value) {
|
| - GL_CALL(PathParameterf(path, pname, value));
|
| -}
|
| -
|
| -GrGLboolean GrGLPathRendering::isPath(GrGLuint path) {
|
| - GrGLboolean ret;
|
| - GL_CALL_RET(ret, IsPath(path));
|
| - return ret;
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathStencilFunc(GrGLenum func, GrGLint ref, GrGLuint mask) {
|
| - GL_CALL(PathStencilFunc(func, ref, mask));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilFillPath(GrGLuint path, GrGLenum fillMode, GrGLuint mask) {
|
| - GL_CALL(StencilFillPath(path, fillMode, mask));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilStrokePath(GrGLuint path, GrGLint reference, GrGLuint mask) {
|
| - GL_CALL(StencilStrokePath(path, reference, mask));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilFillPathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLenum fillMode, GrGLuint mask,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - fillMode, mask, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilStrokePathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLint reference, GrGLuint mask,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - reference, mask, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::pathTexGen(GrGLenum texCoordSet, GrGLenum genMode,
|
| - GrGLint components, const GrGLfloat *coeffs) {
|
| - GL_CALL(PathTexGen(texCoordSet, genMode, components, coeffs));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::coverFillPath(GrGLuint path, GrGLenum coverMode) {
|
| - GL_CALL(CoverFillPath(path, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::coverStrokePath(GrGLuint name, GrGLenum coverMode) {
|
| - GL_CALL(CoverStrokePath(name, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::coverFillPathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths, GrGLuint pathBase,
|
| - GrGLenum coverMode, GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(CoverFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::coverStrokePathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths, GrGLuint pathBase,
|
| - GrGLenum coverMode, GrGLenum transformType, const GrGLfloat* transformValues) {
|
| - GL_CALL(CoverStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilThenCoverFillPath(GrGLuint path, GrGLenum fillMode,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - GL_CALL(StencilFillPath(path, fillMode, mask));
|
| - GL_CALL(CoverFillPath(path, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilThenCoverStrokePath(GrGLuint path, GrGLint reference,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - GL_CALL(StencilStrokePath(path, reference, mask));
|
| - GL_CALL(CoverStrokePath(path, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilThenCoverFillPathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLenum fillMode, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - fillMode, mask, transformType, transformValues));
|
| - GL_CALL(CoverFillPathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::stencilThenCoverStrokePathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLint reference, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - reference, mask, transformType, transformValues));
|
| - GL_CALL(CoverStrokePathInstanced(numPaths, pathNameType, paths, pathBase,
|
| - coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRendering::programPathFragmentInputGen(
|
| - GrGLuint program, GrGLint location, GrGLenum genMode,
|
| - GrGLint components, const GrGLfloat *coeffs) {
|
| - SkFAIL("ProgramPathFragmentInputGen not supported in this GL context.");
|
| -}
|
| -
|
| -
|
| -// NV_path_rendering v1.2
|
| -GrGLvoid GrGLPathRenderingV12::stencilThenCoverFillPath(GrGLuint path, GrGLenum fillMode,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - GL_CALL(StencilThenCoverFillPath(path, fillMode, mask, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRenderingV12::stencilThenCoverStrokePath(GrGLuint path, GrGLint reference,
|
| - GrGLuint mask, GrGLenum coverMode) {
|
| - GL_CALL(StencilThenCoverStrokePath(path, reference, mask, coverMode));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRenderingV12::stencilThenCoverFillPathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLenum fillMode, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilThenCoverFillPathInstanced(numPaths, pathNameType, paths, pathBase, fillMode,
|
| - mask, coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -GrGLvoid GrGLPathRenderingV12::stencilThenCoverStrokePathInstanced(
|
| - GrGLsizei numPaths, GrGLenum pathNameType, const GrGLvoid *paths,
|
| - GrGLuint pathBase, GrGLint reference, GrGLuint mask, GrGLenum coverMode,
|
| - GrGLenum transformType, const GrGLfloat *transformValues) {
|
| - GL_CALL(StencilThenCoverStrokePathInstanced(numPaths, pathNameType, paths, pathBase, reference,
|
| - mask, coverMode, transformType, transformValues));
|
| -}
|
| -
|
| -
|
| -// NV_path_rendering v1.3
|
| -GrGLvoid GrGLPathRenderingV13::programPathFragmentInputGen(
|
| - GrGLuint program, GrGLint location, GrGLenum genMode,
|
| - GrGLint components, const GrGLfloat *coeffs) {
|
| - GL_CALL(ProgramPathFragmentInputGen(program, location, genMode, components, coeffs));
|
| -}
|
|
|