Add StencilStateFaceDescriptor, in order to match web idl

BUG=dawn:31

Change-Id: I52f95ed134ae5afdf4fc872d5cfc5f36ec1a7a69
Reviewed-on: https://dawn-review.googlesource.com/c/3302
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
2018-12-15 02:32:34 +00:00
committed by Commit Bot service account
parent 8d7de591f4
commit 48485e36a8
10 changed files with 334 additions and 202 deletions

View File

@@ -211,11 +211,16 @@ void init() {
pipeline = device.CreateRenderPipeline(&descriptor);
dawn::StencilStateFaceDescriptor planeStencilDescriptor;
planeStencilDescriptor.compare = dawn::CompareFunction::Always;
planeStencilDescriptor.stencilFailOp = dawn::StencilOperation::Keep;
planeStencilDescriptor.depthFailOp = dawn::StencilOperation::Keep;
planeStencilDescriptor.passOp = dawn::StencilOperation::Replace;
auto planeStencilState = device.CreateDepthStencilStateBuilder()
.SetDepthCompareFunction(dawn::CompareFunction::Less)
.SetDepthWriteEnabled(false)
.SetStencilFunction(dawn::Face::Both, dawn::CompareFunction::Always, dawn::StencilOperation::Keep, dawn::StencilOperation::Keep, dawn::StencilOperation::Replace)
.GetResult();
.SetDepthCompareFunction(dawn::CompareFunction::Less)
.SetDepthWriteEnabled(false)
.SetStencilFunction(dawn::Face::Both, &planeStencilDescriptor)
.GetResult();
utils::ComboRenderPipelineDescriptor pDescriptor(device);
pDescriptor.layout = pl;
@@ -230,11 +235,17 @@ void init() {
planePipeline = device.CreateRenderPipeline(&pDescriptor);
auto reflectionStencilState = device.CreateDepthStencilStateBuilder()
.SetDepthCompareFunction(dawn::CompareFunction::Less)
.SetDepthWriteEnabled(true)
.SetStencilFunction(dawn::Face::Both, dawn::CompareFunction::Equal, dawn::StencilOperation::Keep, dawn::StencilOperation::Keep, dawn::StencilOperation::Replace)
.GetResult();
dawn::StencilStateFaceDescriptor reflectionStencilDescriptor;
reflectionStencilDescriptor.compare = dawn::CompareFunction::Equal;
reflectionStencilDescriptor.stencilFailOp = dawn::StencilOperation::Keep;
reflectionStencilDescriptor.depthFailOp = dawn::StencilOperation::Keep;
reflectionStencilDescriptor.passOp = dawn::StencilOperation::Replace;
auto reflectionStencilState =
device.CreateDepthStencilStateBuilder()
.SetDepthCompareFunction(dawn::CompareFunction::Less)
.SetDepthWriteEnabled(true)
.SetStencilFunction(dawn::Face::Both, &reflectionStencilDescriptor)
.GetResult();
utils::ComboRenderPipelineDescriptor rfDescriptor(device);
rfDescriptor.layout = pl;