Construct VertexInputDescriptor, in order to match web idl

BUG=dawn:107

Change-Id: Ic219fb98a88a7ac597fbdc592f604f27b76d756b
Reviewed-on: https://dawn-review.googlesource.com/c/4721
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
This commit is contained in:
Yunchao He
2019-02-14 23:56:07 +00:00
committed by Commit Bot service account
parent e7bb3fd119
commit 4dec7371a2
14 changed files with 136 additions and 65 deletions

View File

@@ -250,23 +250,32 @@ namespace {
dawn::VertexAttributeDescriptor attribute;
attribute.offset = 0;
attribute.format = format;
dawn::VertexInputDescriptor input;
input.stepMode = dawn::InputStepMode::Vertex;
if (iParameter.semantic == "POSITION") {
attribute.shaderLocation = 0;
attribute.inputSlot = 0;
input.inputSlot = 0;
input.stride = static_cast<uint32_t>(stridePos);
builder.SetAttribute(&attribute);
builder.SetInput(0, static_cast<uint32_t>(stridePos), dawn::InputStepMode::Vertex);
builder.SetInput(&input);
slotsSet.set(0);
} else if (iParameter.semantic == "NORMAL") {
attribute.shaderLocation = 1;
attribute.inputSlot = 1;
input.inputSlot = 1;
input.stride = static_cast<uint32_t>(strideNor);
builder.SetAttribute(&attribute);
builder.SetInput(1, static_cast<uint32_t>(strideNor), dawn::InputStepMode::Vertex);
builder.SetInput(&input);
slotsSet.set(1);
} else if (iParameter.semantic == "TEXCOORD_0") {
attribute.shaderLocation = 2;
attribute.inputSlot = 2;
input.inputSlot = 2;
input.stride = static_cast<uint32_t>(strideTxc);
builder.SetAttribute(&attribute);
builder.SetInput(2, static_cast<uint32_t>(strideTxc), dawn::InputStepMode::Vertex);
builder.SetInput(&input);
slotsSet.set(2);
} else {
fprintf(stderr, "unsupported technique attribute semantic %s\n", iParameter.semantic.c_str());
@@ -283,8 +292,13 @@ namespace {
attribute.inputSlot = i;
attribute.format = dawn::VertexFormat::FloatR32G32B32A32;
dawn::VertexInputDescriptor input;
input.inputSlot = i;
input.stride = 0;
input.stepMode = dawn::InputStepMode::Vertex;
builder.SetAttribute(&attribute);
builder.SetInput(i, 0, dawn::InputStepMode::Vertex);
builder.SetInput(&input);
}
auto inputState = builder.GetResult();