mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
Begin and finish command buffers
This commit is contained in:
parent
e5d4f9e04d
commit
47edd4564a
@ -1,6 +1,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "./../../wgpu-bindings/wgpu.h"
|
#include "./../../wgpu-bindings/wgpu.h"
|
||||||
|
|
||||||
|
#define STAGES_LENGTH (2)
|
||||||
|
#define BLEND_STATE_LENGTH (1)
|
||||||
|
#define FORMATS_LENGTH (1)
|
||||||
|
|
||||||
WGPUByteArray read_file(const char *name)
|
WGPUByteArray read_file(const char *name)
|
||||||
{
|
{
|
||||||
FILE *file = fopen(name, "rb");
|
FILE *file = fopen(name, "rb");
|
||||||
@ -63,7 +67,6 @@ int main()
|
|||||||
.entry_point = "main",
|
.entry_point = "main",
|
||||||
};
|
};
|
||||||
|
|
||||||
const unsigned int STAGES_LENGTH = 2;
|
|
||||||
WGPUPipelineStageDescriptor stages[STAGES_LENGTH] = { vertex_stage, fragment_stage };
|
WGPUPipelineStageDescriptor stages[STAGES_LENGTH] = { vertex_stage, fragment_stage };
|
||||||
|
|
||||||
WGPUBlendDescriptor blend_alpha = {
|
WGPUBlendDescriptor blend_alpha = {
|
||||||
@ -83,7 +86,6 @@ int main()
|
|||||||
.write_mask = 0,
|
.write_mask = 0,
|
||||||
};
|
};
|
||||||
WGPUBlendStateId blend_state_0 = wgpu_device_create_blend_state(device, blend_state_0_desc);
|
WGPUBlendStateId blend_state_0 = wgpu_device_create_blend_state(device, blend_state_0_desc);
|
||||||
const unsigned int BLEND_STATE_LENGTH = 1;
|
|
||||||
WGPUBlendStateId blend_state[BLEND_STATE_LENGTH] = { blend_state_0 };
|
WGPUBlendStateId blend_state[BLEND_STATE_LENGTH] = { blend_state_0 };
|
||||||
|
|
||||||
WGPUStencilStateFaceDescriptor stencil_state_front = {
|
WGPUStencilStateFaceDescriptor stencil_state_front = {
|
||||||
@ -108,7 +110,6 @@ int main()
|
|||||||
};
|
};
|
||||||
WGPUDepthStencilStateId depth_stencil_state = wgpu_device_create_depth_stencil_state(device, depth_stencil_state_desc);
|
WGPUDepthStencilStateId depth_stencil_state = wgpu_device_create_depth_stencil_state(device, depth_stencil_state_desc);
|
||||||
|
|
||||||
const unsigned int FORMATS_LENGTH = 1;
|
|
||||||
WGPUTextureFormat formats[FORMATS_LENGTH] = { WGPUTextureFormat_R8g8b8a8Unorm };
|
WGPUTextureFormat formats[FORMATS_LENGTH] = { WGPUTextureFormat_R8g8b8a8Unorm };
|
||||||
WGPUAttachmentStateDescriptor attachment_state_desc = {
|
WGPUAttachmentStateDescriptor attachment_state_desc = {
|
||||||
.formats = formats,
|
.formats = formats,
|
||||||
@ -132,7 +133,7 @@ int main()
|
|||||||
WGPUCommandBufferDescriptor cmd_buf_desc = { };
|
WGPUCommandBufferDescriptor cmd_buf_desc = { };
|
||||||
WGPUCommandBufferId cmd_buf = wgpu_device_create_command_buffer(device, cmd_buf_desc);
|
WGPUCommandBufferId cmd_buf = wgpu_device_create_command_buffer(device, cmd_buf_desc);
|
||||||
WGPUQueueId queue = wgpu_device_get_queue(device);
|
WGPUQueueId queue = wgpu_device_get_queue(device);
|
||||||
/*wgpu_queue_submit(queue, &cmd_buf, 1);*/
|
wgpu_queue_submit(queue, &cmd_buf, 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#define WGPU_REMOTE 1
|
|
||||||
#ifdef WGPU_REMOTE
|
#ifdef WGPU_REMOTE
|
||||||
typedef uint32_t WGPUId;
|
typedef uint32_t WGPUId;
|
||||||
#else
|
#else
|
||||||
typedef void *WGPUId;
|
typedef void *WGPUId;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#define WGPUColorWriteFlags_ALL 15
|
#define WGPUColorWriteFlags_ALL 15
|
||||||
|
|
||||||
#define WGPUColorWriteFlags_ALPHA 8
|
#define WGPUColorWriteFlags_ALPHA 8
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
use hal::command::RawCommandBuffer;
|
||||||
use hal::queue::RawCommandQueue;
|
use hal::queue::RawCommandQueue;
|
||||||
use hal::{self, Device as _Device};
|
use hal::{self, Device as _Device};
|
||||||
use {back, binding_model, command, conv, memory, pipeline};
|
use {back, binding_model, command, conv, memory, pipeline};
|
||||||
@ -130,7 +131,11 @@ pub extern "C" fn wgpu_device_create_command_buffer(
|
|||||||
) -> CommandBufferId {
|
) -> CommandBufferId {
|
||||||
let mut device_guard = registry::DEVICE_REGISTRY.lock();
|
let mut device_guard = registry::DEVICE_REGISTRY.lock();
|
||||||
let device = device_guard.get_mut(device_id);
|
let device = device_guard.get_mut(device_id);
|
||||||
let cmd_buf = device.com_allocator.allocate(&device.device);
|
let mut cmd_buf = device.com_allocator.allocate(&device.device);
|
||||||
|
cmd_buf.raw.begin(
|
||||||
|
hal::command::CommandBufferFlags::ONE_TIME_SUBMIT,
|
||||||
|
hal::command::CommandBufferInheritanceInfo::default(),
|
||||||
|
);
|
||||||
registry::COMMAND_BUFFER_REGISTRY.lock().register(cmd_buf)
|
registry::COMMAND_BUFFER_REGISTRY.lock().register(cmd_buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,7 +157,8 @@ pub extern "C" fn wgpu_queue_submit(
|
|||||||
//TODO: submit at once, requires `get_all()`
|
//TODO: submit at once, requires `get_all()`
|
||||||
let mut command_buffer_guard = registry::COMMAND_BUFFER_REGISTRY.lock();
|
let mut command_buffer_guard = registry::COMMAND_BUFFER_REGISTRY.lock();
|
||||||
for &cmb_id in command_buffer_ids {
|
for &cmb_id in command_buffer_ids {
|
||||||
let cmd_buf = command_buffer_guard.take(cmb_id);
|
let mut cmd_buf = command_buffer_guard.take(cmb_id);
|
||||||
|
cmd_buf.raw.finish();
|
||||||
{
|
{
|
||||||
let submission = hal::queue::RawSubmission {
|
let submission = hal::queue::RawSubmission {
|
||||||
cmd_buffers: iter::once(&cmd_buf.raw),
|
cmd_buffers: iter::once(&cmd_buf.raw),
|
||||||
@ -220,10 +226,6 @@ pub extern "C" fn wgpu_device_create_render_pipeline(
|
|||||||
let mut vertex = None;
|
let mut vertex = None;
|
||||||
let mut fragment = None;
|
let mut fragment = None;
|
||||||
for pipeline_stage in pipeline_stages.iter() {
|
for pipeline_stage in pipeline_stages.iter() {
|
||||||
let entry_name = unsafe { ffi::CStr::from_ptr(pipeline_stage.entry_point) }
|
|
||||||
.to_str()
|
|
||||||
.to_owned()
|
|
||||||
.unwrap();
|
|
||||||
let entry = hal::pso::EntryPoint::<back::Backend> {
|
let entry = hal::pso::EntryPoint::<back::Backend> {
|
||||||
entry: unsafe { ffi::CStr::from_ptr(pipeline_stage.entry_point) }
|
entry: unsafe { ffi::CStr::from_ptr(pipeline_stage.entry_point) }
|
||||||
.to_str()
|
.to_str()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user