From ec219c627f50aa550fefad9f3d65fd01b16bcfbd Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 26 May 2021 12:40:55 -0700 Subject: [PATCH] Patch depth stencil pixel format. --- .../impeller/compositor/pipeline_descriptor.h | 3 +++ .../compositor/pipeline_descriptor.mm | 21 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.h b/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.h index 8cddcc00651..e565f231997 100644 --- a/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.h +++ b/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.h @@ -44,6 +44,8 @@ class PipelineDescriptor : public Comparable { size_t index, ColorAttachmentDescriptor desc); + PipelineDescriptor& SetDepthStencilPixelFormat(PixelFormat format); + MTLRenderPipelineDescriptor* GetMTLRenderPipelineDescriptor() const; // Comparable @@ -58,6 +60,7 @@ class PipelineDescriptor : public Comparable { std::map> entrypoints_; std::map color_attachment_descriptors_; std::shared_ptr vertex_descriptor_; + PixelFormat depth_stencil_pixel_format_ = PixelFormat::kUnknown; }; } // namespace impeller diff --git a/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.mm b/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.mm index b133df4a724..b983f523bcb 100644 --- a/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.mm +++ b/engine/src/flutter/impeller/impeller/compositor/pipeline_descriptor.mm @@ -25,13 +25,14 @@ std::size_t PipelineDescriptor::GetHash() const { fml::HashCombineSeed(seed, second->GetHash()); } } - if (vertex_descriptor_) { - fml::HashCombineSeed(seed, vertex_descriptor_->GetHash()); - } for (const auto& des : color_attachment_descriptors_) { fml::HashCombineSeed(seed, des.first); fml::HashCombineSeed(seed, des.second.Hash()); } + if (vertex_descriptor_) { + fml::HashCombineSeed(seed, vertex_descriptor_->GetHash()); + } + fml::HashCombineSeed(seed, depth_stencil_pixel_format_); return seed; } @@ -39,8 +40,9 @@ std::size_t PipelineDescriptor::GetHash() const { bool PipelineDescriptor::IsEqual(const PipelineDescriptor& other) const { return label_ == other.label_ && sample_count_ == other.sample_count_ && DeepCompareMap(entrypoints_, other.entrypoints_) && + color_attachment_descriptors_ == other.color_attachment_descriptors_ && DeepComparePointer(vertex_descriptor_, other.vertex_descriptor_) && - color_attachment_descriptors_ == other.color_attachment_descriptors_; + depth_stencil_pixel_format_ == other.depth_stencil_pixel_format_; } PipelineDescriptor& PipelineDescriptor::SetLabel( @@ -82,6 +84,12 @@ PipelineDescriptor& PipelineDescriptor::SetColorAttachmentDescriptor( return *this; } +PipelineDescriptor& PipelineDescriptor::SetDepthStencilPixelFormat( + PixelFormat format) { + depth_stencil_pixel_format_ = format; + return *this; +} + MTLRenderPipelineDescriptor* PipelineDescriptor::GetMTLRenderPipelineDescriptor() const { auto descriptor = [[MTLRenderPipelineDescriptor alloc] init]; @@ -106,6 +114,11 @@ PipelineDescriptor::GetMTLRenderPipelineDescriptor() const { ToMTLRenderPipelineColorAttachmentDescriptor(item.second); } + descriptor.depthAttachmentPixelFormat = + ToMTLPixelFormat(depth_stencil_pixel_format_); + descriptor.stencilAttachmentPixelFormat = + ToMTLPixelFormat(depth_stencil_pixel_format_); + return descriptor; }