WebGPU wrapper wip: add pipeline layout object
This commit is contained in:
parent
20b584b5e0
commit
c0b485ae4b
5 changed files with 33 additions and 1 deletions
|
|
@ -7,6 +7,7 @@
|
||||||
#include <psemek/wgpu/buffer.hpp>
|
#include <psemek/wgpu/buffer.hpp>
|
||||||
#include <psemek/wgpu/command_encoder.hpp>
|
#include <psemek/wgpu/command_encoder.hpp>
|
||||||
#include <psemek/wgpu/compute_pipeline.hpp>
|
#include <psemek/wgpu/compute_pipeline.hpp>
|
||||||
|
#include <psemek/wgpu/pipeline_layout.hpp>
|
||||||
#include <psemek/wgpu/query_set.hpp>
|
#include <psemek/wgpu/query_set.hpp>
|
||||||
#include <psemek/wgpu/render_pipeline.hpp>
|
#include <psemek/wgpu/render_pipeline.hpp>
|
||||||
#include <psemek/wgpu/sampler.hpp>
|
#include <psemek/wgpu/sampler.hpp>
|
||||||
|
|
@ -116,6 +117,7 @@ namespace psemek::wgpu
|
||||||
buffer create_buffer(buffer::descriptor const & desc);
|
buffer create_buffer(buffer::descriptor const & desc);
|
||||||
command_encoder create_command_encoder(command_encoder::descriptor const & desc);
|
command_encoder create_command_encoder(command_encoder::descriptor const & desc);
|
||||||
compute_pipeline create_compute_pipeline(compute_pipeline::descriptor const & desc);
|
compute_pipeline create_compute_pipeline(compute_pipeline::descriptor const & desc);
|
||||||
|
pipeline_layout create_pipeline_layout(pipeline_layout::descriptor const & desc);
|
||||||
query_set create_query_set(query_set::descriptor const & desc);
|
query_set create_query_set(query_set::descriptor const & desc);
|
||||||
render_pipeline create_render_pipeline(render_pipeline::descriptor const & desc);
|
render_pipeline create_render_pipeline(render_pipeline::descriptor const & desc);
|
||||||
sampler create_sampler(sampler::descriptor const & desc);
|
sampler create_sampler(sampler::descriptor const & desc);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <psemek/wgpu/detail/object.hpp>
|
#include <psemek/wgpu/detail/object.hpp>
|
||||||
|
#include <psemek/wgpu/bind_group_layout.hpp>
|
||||||
|
#include <psemek/wgpu/chained_struct.hpp>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace psemek::wgpu
|
namespace psemek::wgpu
|
||||||
{
|
{
|
||||||
|
|
@ -10,6 +15,15 @@ namespace psemek::wgpu
|
||||||
{
|
{
|
||||||
using detail::object<pipeline_layout>::object;
|
using detail::object<pipeline_layout>::object;
|
||||||
|
|
||||||
|
struct descriptor
|
||||||
|
{
|
||||||
|
std::vector<chained_struct> chain = {};
|
||||||
|
std::string label = {};
|
||||||
|
std::vector<bind_group_layout> layouts;
|
||||||
|
};
|
||||||
|
|
||||||
|
void set_label(std::string const & label);
|
||||||
|
|
||||||
static void reference(void * ptr);
|
static void reference(void * ptr);
|
||||||
static void release(void * ptr);
|
static void release(void * ptr);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
+ WGPUComputePipeline
|
+ WGPUComputePipeline
|
||||||
- WGPUDevice
|
- WGPUDevice
|
||||||
+ WGPUInstance
|
+ WGPUInstance
|
||||||
- WGPUPipelineLayout
|
+ WGPUPipelineLayout
|
||||||
+ WGPUQuerySet
|
+ WGPUQuerySet
|
||||||
+ WGPUQueue
|
+ WGPUQueue
|
||||||
WGPURenderBundle
|
WGPURenderBundle
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,17 @@ namespace psemek::wgpu
|
||||||
return compute_pipeline(wgpuDeviceCreateComputePipeline((WGPUDevice)get(), &descriptor));
|
return compute_pipeline(wgpuDeviceCreateComputePipeline((WGPUDevice)get(), &descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pipeline_layout device::create_pipeline_layout(pipeline_layout::descriptor const & desc)
|
||||||
|
{
|
||||||
|
WGPUPipelineLayoutDescriptor descriptor = {};
|
||||||
|
descriptor.nextInChain = (WGPUChainedStruct const *)detail::fill_chain(desc.chain);
|
||||||
|
descriptor.label = desc.label.data();
|
||||||
|
descriptor.bindGroupLayoutCount = desc.layouts.size();
|
||||||
|
static_assert(sizeof(WGPUBindGroupLayout) == sizeof(bind_group_layout));
|
||||||
|
descriptor.bindGroupLayouts = (WGPUBindGroupLayout const *)desc.layouts.data();
|
||||||
|
return pipeline_layout(wgpuDeviceCreatePipelineLayout((WGPUDevice)get(), &descriptor));
|
||||||
|
}
|
||||||
|
|
||||||
query_set device::create_query_set(query_set::descriptor const & desc)
|
query_set device::create_query_set(query_set::descriptor const & desc)
|
||||||
{
|
{
|
||||||
WGPUQuerySetDescriptor descriptor = {};
|
WGPUQuerySetDescriptor descriptor = {};
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,11 @@
|
||||||
namespace psemek::wgpu
|
namespace psemek::wgpu
|
||||||
{
|
{
|
||||||
|
|
||||||
|
void pipeline_layout::set_label(std::string const & label)
|
||||||
|
{
|
||||||
|
wgpuPipelineLayoutSetLabel((WGPUPipelineLayout)get(), label.data());
|
||||||
|
}
|
||||||
|
|
||||||
void pipeline_layout::reference(void * ptr)
|
void pipeline_layout::reference(void * ptr)
|
||||||
{
|
{
|
||||||
wgpuPipelineLayoutReference((WGPUPipelineLayout)ptr);
|
wgpuPipelineLayoutReference((WGPUPipelineLayout)ptr);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue