| Index: src/gpu/GrContext.cpp
|
| diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
|
| index 0a742ed42898527df12c700878b41ac660653e52..5e0755b229a774209c13680321bce230813777a3 100755
|
| --- a/src/gpu/GrContext.cpp
|
| +++ b/src/gpu/GrContext.cpp
|
| @@ -8,17 +8,14 @@
|
|
|
| #include "GrContext.h"
|
|
|
| -#include "effects/GrConfigConversionEffect.h"
|
| -#include "effects/GrDashingEffect.h"
|
| -#include "effects/GrSingleTextureEffect.h"
|
| -
|
| #include "GrAARectRenderer.h"
|
| #include "GrBufferAllocPool.h"
|
| -#include "GrGpu.h"
|
| +#include "GrDefaultGeoProcFactory.h"
|
| #include "GrGpuResource.h"
|
| #include "GrGpuResourceCacheAccess.h"
|
| #include "GrDistanceFieldTextContext.h"
|
| #include "GrDrawTargetCaps.h"
|
| +#include "GrGpu.h"
|
| #include "GrIndexBuffer.h"
|
| #include "GrInOrderDrawBuffer.h"
|
| #include "GrLayerCache.h"
|
| @@ -44,6 +41,10 @@
|
| #include "SkTLS.h"
|
| #include "SkTraceEvent.h"
|
|
|
| +#include "effects/GrConfigConversionEffect.h"
|
| +#include "effects/GrDashingEffect.h"
|
| +#include "effects/GrSingleTextureEffect.h"
|
| +
|
| #ifdef SK_DEBUG
|
| // change this to a 1 to see notifications when partial coverage fails
|
| #define GR_DEBUG_PARTIAL_COVERAGE_CHECK 0
|
| @@ -299,16 +300,6 @@ static void stretch_image(void* dst,
|
| }
|
| }
|
|
|
| -namespace {
|
| -
|
| -// position + local coordinate
|
| -extern const GrVertexAttrib gVertexAttribs[] = {
|
| - {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding},
|
| - {kVec2f_GrVertexAttribType, sizeof(SkPoint), kLocalCoord_GrVertexAttribBinding}
|
| -};
|
| -
|
| -};
|
| -
|
| // The desired texture is NPOT and tiled but that isn't supported by
|
| // the current hardware. Resize the texture to be a POT
|
| GrTexture* GrContext::createResizedTexture(const GrSurfaceDesc& desc,
|
| @@ -347,8 +338,11 @@ GrTexture* GrContext::createResizedTexture(const GrSurfaceDesc& desc,
|
| GrTextureParams::kNone_FilterMode);
|
| drawState->addColorTextureProcessor(clampedTexture, SkMatrix::I(), params);
|
|
|
| - drawState->setVertexAttribs<gVertexAttribs>(SK_ARRAY_COUNT(gVertexAttribs),
|
| - 2 * sizeof(SkPoint));
|
| + drawState->setGeometryProcessor(
|
| + GrDefaultGeoProcFactory::CreateAndSetAttribs(
|
| + drawState,
|
| + GrDefaultGeoProcFactory::kPosition_GPType |
|
| + GrDefaultGeoProcFactory::kLocalCoord_GPType))->unref();
|
|
|
| GrDrawTarget::AutoReleaseGeometry arg(fDrawBuffer, 4, 0);
|
|
|
| @@ -772,6 +766,7 @@ void GrContext::drawRect(const GrPaint& paint,
|
|
|
| static const int worstCaseVertCount = 10;
|
| target->drawState()->setDefaultVertexAttribs();
|
| + target->drawState()->setGeometryProcessor(GrDefaultGeoProcFactory::Create(false))->unref();
|
| GrDrawTarget::AutoReleaseGeometry geo(target, worstCaseVertCount, 0);
|
|
|
| if (!geo.succeeded()) {
|
| @@ -821,25 +816,6 @@ void GrContext::drawRectToRect(const GrPaint& paint,
|
| target->drawRect(dstRect, &localRect, localMatrix);
|
| }
|
|
|
| -namespace {
|
| -
|
| -extern const GrVertexAttrib gPosUVColorAttribs[] = {
|
| - {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding },
|
| - {kVec2f_GrVertexAttribType, sizeof(SkPoint), kLocalCoord_GrVertexAttribBinding },
|
| - {kVec4ub_GrVertexAttribType, 2*sizeof(SkPoint), kColor_GrVertexAttribBinding}
|
| -};
|
| -
|
| -static const size_t kPosUVAttribsSize = 2 * sizeof(SkPoint);
|
| -static const size_t kPosUVColorAttribsSize = 2 * sizeof(SkPoint) + sizeof(GrColor);
|
| -
|
| -extern const GrVertexAttrib gPosColorAttribs[] = {
|
| - {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding},
|
| - {kVec4ub_GrVertexAttribType, sizeof(SkPoint), kColor_GrVertexAttribBinding},
|
| -};
|
| -
|
| -static const size_t kPosAttribsSize = sizeof(SkPoint);
|
| -static const size_t kPosColorAttribsSize = sizeof(SkPoint) + sizeof(GrColor);
|
| -
|
| static void set_vertex_attributes(GrDrawState* drawState,
|
| const SkPoint* texCoords,
|
| const GrColor* colors,
|
| @@ -848,23 +824,23 @@ static void set_vertex_attributes(GrDrawState* drawState,
|
| *texOffset = -1;
|
| *colorOffset = -1;
|
|
|
| + uint32_t flags = GrDefaultGeoProcFactory::kPosition_GPType;
|
| if (texCoords && colors) {
|
| - *texOffset = sizeof(SkPoint);
|
| - *colorOffset = 2*sizeof(SkPoint);
|
| - drawState->setVertexAttribs<gPosUVColorAttribs>(3, kPosUVColorAttribsSize);
|
| + *colorOffset = sizeof(SkPoint);
|
| + *texOffset = sizeof(SkPoint) + sizeof(GrColor);
|
| + flags |= GrDefaultGeoProcFactory::kColor_GPType |
|
| + GrDefaultGeoProcFactory::kLocalCoord_GPType;
|
| } else if (texCoords) {
|
| *texOffset = sizeof(SkPoint);
|
| - drawState->setVertexAttribs<gPosUVColorAttribs>(2, kPosUVAttribsSize);
|
| + flags |= GrDefaultGeoProcFactory::kLocalCoord_GPType;
|
| } else if (colors) {
|
| *colorOffset = sizeof(SkPoint);
|
| - drawState->setVertexAttribs<gPosColorAttribs>(2, kPosColorAttribsSize);
|
| - } else {
|
| - drawState->setVertexAttribs<gPosColorAttribs>(1, kPosAttribsSize);
|
| + flags |= GrDefaultGeoProcFactory::kColor_GPType;
|
| }
|
| + drawState->setGeometryProcessor(GrDefaultGeoProcFactory::CreateAndSetAttribs(drawState,
|
| + flags))->unref();
|
| }
|
|
|
| -};
|
| -
|
| void GrContext::drawVertices(const GrPaint& paint,
|
| GrPrimitiveType primitiveType,
|
| int vertexCount,
|
|
|