mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-15 08:06:19 +00:00
Render Pipeline Descriptorization -- Part I
This patch remove render pipeline builder and use descriptor to create render pipeline. Sub-objects in descriptor will be removed in future. Bug: dawn:4 Change-Id: I58dd569c7be42c2648311847b939c681189c2854 Reviewed-on: https://dawn-review.googlesource.com/c/2180 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
07df605a2b
commit
a49242766a
@@ -99,8 +99,9 @@ namespace dawn_native { namespace opengl {
|
||||
RenderPassDescriptorBuilder* builder) {
|
||||
return new RenderPassDescriptor(builder);
|
||||
}
|
||||
RenderPipelineBase* Device::CreateRenderPipeline(RenderPipelineBuilder* builder) {
|
||||
return new RenderPipeline(builder);
|
||||
ResultOrError<RenderPipelineBase*> Device::CreateRenderPipelineImpl(
|
||||
const RenderPipelineDescriptor* descriptor) {
|
||||
return new RenderPipeline(this, descriptor);
|
||||
}
|
||||
ResultOrError<SamplerBase*> Device::CreateSamplerImpl(const SamplerDescriptor* descriptor) {
|
||||
return new Sampler(this, descriptor);
|
||||
|
||||
@@ -46,7 +46,6 @@ namespace dawn_native { namespace opengl {
|
||||
InputStateBase* CreateInputState(InputStateBuilder* builder) override;
|
||||
RenderPassDescriptorBase* CreateRenderPassDescriptor(
|
||||
RenderPassDescriptorBuilder* builder) override;
|
||||
RenderPipelineBase* CreateRenderPipeline(RenderPipelineBuilder* builder) override;
|
||||
SwapChainBase* CreateSwapChain(SwapChainBuilder* builder) override;
|
||||
|
||||
Serial GetCompletedCommandSerial() const final override;
|
||||
@@ -66,6 +65,8 @@ namespace dawn_native { namespace opengl {
|
||||
ResultOrError<PipelineLayoutBase*> CreatePipelineLayoutImpl(
|
||||
const PipelineLayoutDescriptor* descriptor) override;
|
||||
ResultOrError<QueueBase*> CreateQueueImpl() override;
|
||||
ResultOrError<RenderPipelineBase*> CreateRenderPipelineImpl(
|
||||
const RenderPipelineDescriptor* descriptor) override;
|
||||
ResultOrError<SamplerBase*> CreateSamplerImpl(const SamplerDescriptor* descriptor) override;
|
||||
ResultOrError<ShaderModuleBase*> CreateShaderModuleImpl(
|
||||
const ShaderModuleDescriptor* descriptor) override;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "dawn_native/opengl/BlendStateGL.h"
|
||||
#include "dawn_native/opengl/DepthStencilStateGL.h"
|
||||
#include "dawn_native/opengl/DeviceGL.h"
|
||||
#include "dawn_native/opengl/Forward.h"
|
||||
#include "dawn_native/opengl/InputStateGL.h"
|
||||
#include "dawn_native/opengl/PersistentPipelineStateGL.h"
|
||||
@@ -41,13 +42,12 @@ namespace dawn_native { namespace opengl {
|
||||
}
|
||||
} // namespace
|
||||
|
||||
RenderPipeline::RenderPipeline(RenderPipelineBuilder* builder)
|
||||
: RenderPipelineBase(builder),
|
||||
RenderPipeline::RenderPipeline(Device* device, const RenderPipelineDescriptor* descriptor)
|
||||
: RenderPipelineBase(device, descriptor),
|
||||
mGlPrimitiveTopology(GLPrimitiveTopology(GetPrimitiveTopology())) {
|
||||
PerStage<const ShaderModule*> modules(nullptr);
|
||||
for (dawn::ShaderStage stage : IterateStages(GetStageMask())) {
|
||||
modules[stage] = ToBackend(builder->GetStageInfo(stage).module.Get());
|
||||
}
|
||||
modules[dawn::ShaderStage::Vertex] = ToBackend(descriptor->vertexStage->module);
|
||||
modules[dawn::ShaderStage::Fragment] = ToBackend(descriptor->fragmentStage->module);
|
||||
|
||||
PipelineGL::Initialize(ToBackend(GetLayout()), modules);
|
||||
}
|
||||
|
||||
@@ -25,11 +25,12 @@
|
||||
|
||||
namespace dawn_native { namespace opengl {
|
||||
|
||||
class Device;
|
||||
class PersistentPipelineState;
|
||||
|
||||
class RenderPipeline : public RenderPipelineBase, public PipelineGL {
|
||||
public:
|
||||
RenderPipeline(RenderPipelineBuilder* builder);
|
||||
RenderPipeline(Device* device, const RenderPipelineDescriptor* descriptor);
|
||||
|
||||
GLenum GetGLPrimitiveTopology() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user