aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@google.com>2018-06-19 01:40:57 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-19 01:41:10 +0000
commit5045e501d2aec23e5f1e4b46346033ac3202c6b0 (patch)
treeb0179c300d6bc1822b0d945be812fff267bb414a /tests
parent63b3bfb711d7e3d4f9ad75681d77a69a3c454ab0 (diff)
Revert "Change how vertex/instance attributes are handled in geometry processors."
This reverts commit 19c1233c447f625c2522e7ecd0a0adecc629bb2f. Reason for revert: want to make sure Google3 can roll Original change's description: > Change how vertex/instance attributes are handled in geometry processors. > > * No longer register vertex/instance attributes on base class, just counts > > * Separate instance and vertex attributes and remove InputRate and offset > > * Make attributes constexpr where possible > > Change-Id: I1f1d5e772fa177a96d2aeb805aab7b69f35bfae6 > Reviewed-on: https://skia-review.googlesource.com/132405 > Commit-Queue: Brian Salomon <bsalomon@google.com> > Reviewed-by: Chris Dalton <csmartdalton@google.com> TBR=egdaniel@google.com,bsalomon@google.com,csmartdalton@google.com Change-Id: I4800632515e14fbf54af52826928ac915657b59f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/135661 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/GrMeshTest.cpp51
-rw-r--r--tests/GrPipelineDynamicStateTest.cpp22
-rw-r--r--tests/OnFlushCallbackTest.cpp9
-rw-r--r--tests/PrimitiveProcessorTest.cpp27
4 files changed, 43 insertions, 66 deletions
diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp
index 4ca0e1d10a..4535f13975 100644
--- a/tests/GrMeshTest.cpp
+++ b/tests/GrMeshTest.cpp
@@ -292,46 +292,35 @@ private:
class GrMeshTestProcessor : public GrGeometryProcessor {
public:
GrMeshTestProcessor(bool instanced, bool hasVertexBuffer)
- : INHERITED(kGrMeshTestProcessor_ClassID) {
+ : INHERITED(kGrMeshTestProcessor_ClassID)
+ , fInstanceLocation(nullptr)
+ , fVertex(nullptr)
+ , fColor(nullptr) {
if (instanced) {
- fInstanceLocation = {"location", kHalf2_GrVertexAttribType};
- fColor = {"color", kUByte4_norm_GrVertexAttribType};
- this->setInstanceAttributeCnt(2);
+ fInstanceLocation = &this->addInstanceAttrib("location", kHalf2_GrVertexAttribType);
if (hasVertexBuffer) {
- fVertex = {"vertex", kHalf2_GrVertexAttribType};
- this->setVertexAttributeCnt(1);
+ fVertex = &this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType);
}
+ fColor = &this->addInstanceAttrib("color", kUByte4_norm_GrVertexAttribType);
} else {
- fVertex = {"vertex", kHalf2_GrVertexAttribType};
- fColor = {"color", kUByte4_norm_GrVertexAttribType};
- this->setVertexAttributeCnt(2);
+ fVertex = &this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType);
+ fColor = &this->addVertexAttrib("color", kUByte4_norm_GrVertexAttribType);
}
}
const char* name() const override { return "GrMeshTest Processor"; }
void getGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder* b) const final {
- b->add32(fInstanceLocation.isInitialized());
- b->add32(fVertex.isInitialized());
+ b->add32(SkToBool(fInstanceLocation));
+ b->add32(SkToBool(fVertex));
}
GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const final;
-private:
- const Attribute& onVertexAttribute(int i) const override {
- if (fInstanceLocation.isInitialized()) {
- return fVertex;
- }
- return IthAttribute(i, fVertex, fColor);
- }
-
- const Attribute& onInstanceAttribute(int i) const override {
- return IthAttribute(i, fInstanceLocation, fColor);
- }
-
- Attribute fInstanceLocation;
- Attribute fVertex;
- Attribute fColor;
+protected:
+ const Attribute* fInstanceLocation;
+ const Attribute* fVertex;
+ const Attribute* fColor;
friend class GLSLMeshTestProcessor;
typedef GrGeometryProcessor INHERITED;
@@ -349,15 +338,15 @@ class GLSLMeshTestProcessor : public GrGLSLGeometryProcessor {
varyingHandler->addPassThroughAttribute(mp.fColor, args.fOutputColor);
GrGLSLVertexBuilder* v = args.fVertBuilder;
- if (!mp.fInstanceLocation.isInitialized()) {
- v->codeAppendf("float2 vertex = %s;", mp.fVertex.name());
+ if (!mp.fInstanceLocation) {
+ v->codeAppendf("float2 vertex = %s;", mp.fVertex->name());
} else {
- if (mp.fVertex.isInitialized()) {
- v->codeAppendf("float2 offset = %s;", mp.fVertex.name());
+ if (mp.fVertex) {
+ v->codeAppendf("float2 offset = %s;", mp.fVertex->name());
} else {
v->codeAppend ("float2 offset = float2(sk_VertexID / 2, sk_VertexID % 2);");
}
- v->codeAppendf("float2 vertex = %s + offset * %i;", mp.fInstanceLocation.name(),
+ v->codeAppendf("float2 vertex = %s + offset * %i;", mp.fInstanceLocation->name(),
kBoxSize);
}
gpArgs->fPositionVar.set(kFloat2_GrSLType, "vertex");
diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp
index 87db111a1a..0f786e7c23 100644
--- a/tests/GrPipelineDynamicStateTest.cpp
+++ b/tests/GrPipelineDynamicStateTest.cpp
@@ -58,9 +58,9 @@ struct Vertex {
class GrPipelineDynamicStateTestProcessor : public GrGeometryProcessor {
public:
GrPipelineDynamicStateTestProcessor()
- : INHERITED(kGrPipelineDynamicStateTestProcessor_ClassID) {
- this->setVertexAttributeCnt(2);
- }
+ : INHERITED(kGrPipelineDynamicStateTestProcessor_ClassID)
+ , fVertex(this->addVertexAttrib("vertex", kHalf2_GrVertexAttribType))
+ , fColor(this->addVertexAttrib("color", kUByte4_norm_GrVertexAttribType)) {}
const char* name() const override { return "GrPipelineDynamicStateTest Processor"; }
@@ -68,19 +68,13 @@ public:
GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const final;
-private:
- const Attribute& onVertexAttribute(int i) const override {
- return IthAttribute(i, kVertex, kColor);
- }
-
- static constexpr Attribute kVertex = {"vertex", kHalf2_GrVertexAttribType};
- static constexpr Attribute kColor = {"color", kUByte4_norm_GrVertexAttribType};
+protected:
+ const Attribute& fVertex;
+ const Attribute& fColor;
friend class GLSLPipelineDynamicStateTestProcessor;
typedef GrGeometryProcessor INHERITED;
};
-constexpr GrPrimitiveProcessor::Attribute GrPipelineDynamicStateTestProcessor::kVertex;
-constexpr GrPrimitiveProcessor::Attribute GrPipelineDynamicStateTestProcessor::kColor;
class GLSLPipelineDynamicStateTestProcessor : public GrGLSLGeometryProcessor {
void setData(const GrGLSLProgramDataManager& pdman, const GrPrimitiveProcessor&,
@@ -92,10 +86,10 @@ class GLSLPipelineDynamicStateTestProcessor : public GrGLSLGeometryProcessor {
GrGLSLVaryingHandler* varyingHandler = args.fVaryingHandler;
varyingHandler->emitAttributes(mp);
- varyingHandler->addPassThroughAttribute(mp.kColor, args.fOutputColor);
+ varyingHandler->addPassThroughAttribute(&mp.fColor, args.fOutputColor);
GrGLSLVertexBuilder* v = args.fVertBuilder;
- v->codeAppendf("float2 vertex = %s;", mp.kVertex.name());
+ v->codeAppendf("float2 vertex = %s;", mp.fVertex.name());
gpArgs->fPositionVar.set(kFloat2_GrSLType, "vertex");
GrGLSLFPFragmentBuilder* f = args.fFragBuilder;
diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp
index a8752057c8..e2f6fbf9e1 100644
--- a/tests/OnFlushCallbackTest.cpp
+++ b/tests/OnFlushCallbackTest.cpp
@@ -110,10 +110,11 @@ private:
return;
}
- size_t vertexStride = fHasLocalRect
- ? sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoordAttr)
- : sizeof(GrDefaultGeoProcFactory::PositionColorAttr);
- SkASSERT(vertexStride == gp->debugOnly_vertexStride());
+ size_t vertexStride = gp->getVertexStride();
+
+ SkASSERT(fHasLocalRect
+ ? vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorLocalCoordAttr)
+ : vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr));
const GrBuffer* indexBuffer;
int firstIndex;
diff --git a/tests/PrimitiveProcessorTest.cpp b/tests/PrimitiveProcessorTest.cpp
index 27902000c9..3a76e6c5e0 100644
--- a/tests/PrimitiveProcessorTest.cpp
+++ b/tests/PrimitiveProcessorTest.cpp
@@ -57,15 +57,15 @@ private:
void onPrepareDraws(Target* target) override {
class GP : public GrGeometryProcessor {
public:
- GP(int numAttribs) : INHERITED(kGP_ClassID), fNumAttribs(numAttribs) {
+ GP(int numAttribs)
+ : INHERITED(kGP_ClassID) {
SkASSERT(numAttribs > 1);
- fAttribNames.reset(new SkString[numAttribs]);
- fAttributes.reset(new Attribute[numAttribs]);
for (auto i = 0; i < numAttribs; ++i) {
- fAttribNames[i].printf("attr%d", i);
- fAttributes[i] = {fAttribNames[i].c_str(), kFloat2_GrVertexAttribType};
+ fAttribNames.push_back().printf("attr%d", i);
+ }
+ for (auto i = 0; i < numAttribs; ++i) {
+ this->addVertexAttrib(fAttribNames[i].c_str(), kFloat2_GrVertexAttribType);
}
- this->setVertexAttributeCnt(numAttribs);
}
const char* name() const override { return "Dummy GP"; }
@@ -76,7 +76,7 @@ private:
const GP& gp = args.fGP.cast<GP>();
args.fVaryingHandler->emitAttributes(gp);
this->writeOutputPosition(args.fVertBuilder, gpArgs,
- gp.fAttributes[0].name());
+ gp.getAttrib(0).name());
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
fragBuilder->codeAppendf("%s = half4(1);", args.fOutputColor);
fragBuilder->codeAppendf("%s = half4(1);", args.fOutputCoverage);
@@ -89,24 +89,17 @@ private:
}
void getGLSLProcessorKey(const GrShaderCaps&,
GrProcessorKeyBuilder* builder) const override {
- builder->add32(fNumAttribs);
+ builder->add32(this->numAttribs());
}
private:
- const GrPrimitiveProcessor::Attribute& onVertexAttribute(int i) const override {
- return fAttributes[i];
- }
-
- int fNumAttribs;
- std::unique_ptr<SkString[]> fAttribNames;
- std::unique_ptr<Attribute[]> fAttributes;
+ SkTArray<SkString> fAttribNames;
typedef GrGeometryProcessor INHERITED;
};
sk_sp<GrGeometryProcessor> gp(new GP(fNumAttribs));
QuadHelper helper;
- size_t vertexStride = fNumAttribs * GrVertexAttribTypeSize(kFloat2_GrVertexAttribType);
- SkASSERT(vertexStride == gp->debugOnly_vertexStride());
+ size_t vertexStride = gp->getVertexStride();
SkPoint* vertices = reinterpret_cast<SkPoint*>(helper.init(target, vertexStride, 1));
SkPointPriv::SetRectTriStrip(vertices, 0.f, 0.f, 1.f, 1.f, vertexStride);
helper.recordDraw(target, gp.get(),