MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / raster_redraw

Function raster_redraw

samples/cgpu/cgpu-basic/texture/texture.c:290–360  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288};
289
290void raster_redraw()
291{
292 // sync & reset
293 CGPUAcquireNextDescriptor acquire_desc = {
294 .signal_semaphore = present_semaphore
295 };
296 backbuffer_index = cgpu_acquire_next_image(swapchain, &acquire_desc);
297 CGPUCommandPoolId pool = pools[backbuffer_index];
298 CGPUCommandBufferId cmd = cmds[backbuffer_index];
299 const CGPUTextureId back_buffer = swapchain->back_buffers[backbuffer_index];
300 cgpu_wait_fences(exec_fences + backbuffer_index, 1);
301 cgpu_reset_command_pool(pool);
302 // record
303 cgpu_cmd_begin(cmd);
304 CGPUColorAttachment screen_attachment = {
305 .view = views[backbuffer_index],
306 .load_action = CGPU_LOAD_ACTION_CLEAR,
307 .store_action = CGPU_STORE_ACTION_STORE,
308 .clear_color = fastclear_0000
309 };
310 CGPURenderPassDescriptor rp_desc = {
311 .render_target_count = 1,
312 .sample_count = CGPU_SAMPLE_COUNT_1,
313 .color_attachments = &screen_attachment,
314 .depth_stencil = CGPU_NULLPTR
315 };
316 CGPUTextureBarrier draw_barrier = {
317 .texture = back_buffer,
318 .src_state = CGPU_RESOURCE_STATE_UNDEFINED,
319 .dst_state = CGPU_RESOURCE_STATE_RENDER_TARGET
320 };
321 CGPUResourceBarrierDescriptor barrier_desc0 = { .texture_barriers = &draw_barrier, .texture_barriers_count = 1 };
322 cgpu_cmd_resource_barrier(cmd, &barrier_desc0);
323 CGPURenderPassEncoderId rp_encoder = cgpu_cmd_begin_render_pass(cmd, &rp_desc);
324 {
325 cgpu_render_encoder_set_viewport(rp_encoder,
326 0.0f, 0.0f,
327 (float)back_buffer->info->width, (float)back_buffer->info->height,
328 0.f, 1.f);
329 cgpu_render_encoder_set_scissor(rp_encoder, 0, 0, back_buffer->info->width, back_buffer->info->height);
330 cgpu_render_encoder_bind_pipeline(rp_encoder, pipeline);
331 cgpu_render_encoder_bind_descriptor_set(rp_encoder, desc_set);
332 cgpu_render_encoder_push_constants(rp_encoder, root_sig, "push_constants", &data);
333 if (desc_set2) cgpu_render_encoder_bind_descriptor_set(rp_encoder, desc_set2);
334 cgpu_render_encoder_draw(rp_encoder, 6, 0);
335 }
336 cgpu_cmd_end_render_pass(cmd, rp_encoder);
337 CGPUTextureBarrier present_barrier = {
338 .texture = back_buffer,
339 .src_state = CGPU_RESOURCE_STATE_RENDER_TARGET,
340 .dst_state = CGPU_RESOURCE_STATE_PRESENT
341 };
342 CGPUResourceBarrierDescriptor barrier_desc1 = { .texture_barriers = &present_barrier, .texture_barriers_count = 1 };
343 cgpu_cmd_resource_barrier(cmd, &barrier_desc1);
344 cgpu_cmd_end(cmd);
345 // submit
346 CGPUQueueSubmitDescriptor submit_desc = {
347 .cmds = &cmd,

Callers 1

raster_programFunction · 0.70

Tested by

no test coverage detected