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

Function create_resources

samples/render_graph/rg-deferred/deferred.cpp:96–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94}
95
96void create_resources()
97{
98 // upload
99 CGPUBufferDescriptor upload_buffer_desc = {};
100 upload_buffer_desc.name = u8"UploadBuffer";
101 upload_buffer_desc.flags = CGPU_BCF_PERSISTENT_MAP_BIT;
102 upload_buffer_desc.descriptors = CGPU_RESOURCE_TYPE_NONE;
103 upload_buffer_desc.memory_usage = CGPU_MEM_USAGE_CPU_ONLY;
104 upload_buffer_desc.size = sizeof(CubeGeometry) + sizeof(CubeGeometry::g_Indices) + sizeof(CubeGeometry::InstanceData);
105 auto upload_buffer = cgpu_create_buffer(device, &upload_buffer_desc);
106 CGPUBufferDescriptor vb_desc = {};
107 vb_desc.name = u8"VertexBuffer";
108 vb_desc.flags = CGPU_BCF_NONE;
109 vb_desc.descriptors = CGPU_RESOURCE_TYPE_VERTEX_BUFFER;
110 vb_desc.memory_usage = CGPU_MEM_USAGE_GPU_ONLY;
111 vb_desc.size = sizeof(CubeGeometry);
112 vertex_buffer = cgpu_create_buffer(device, &vb_desc);
113 CGPUBufferDescriptor ib_desc = {};
114 ib_desc.name = u8"IndexBuffer";
115 ib_desc.flags = CGPU_BCF_NONE;
116 ib_desc.descriptors = CGPU_RESOURCE_TYPE_INDEX_BUFFER;
117 ib_desc.memory_usage = CGPU_MEM_USAGE_GPU_ONLY;
118 ib_desc.size = sizeof(CubeGeometry::g_Indices);
119 index_buffer = cgpu_create_buffer(device, &ib_desc);
120 CGPUBufferDescriptor inb_desc = {};
121 inb_desc.name = u8"InstanceBuffer";
122 inb_desc.flags = CGPU_BCF_NONE;
123 inb_desc.descriptors = CGPU_RESOURCE_TYPE_VERTEX_BUFFER;
124 inb_desc.memory_usage = CGPU_MEM_USAGE_GPU_ONLY;
125 inb_desc.size = sizeof(CubeGeometry::InstanceData);
126 instance_buffer = cgpu_create_buffer(device, &inb_desc);
127 auto pool_desc = CGPUCommandPoolDescriptor();
128 auto cmd_pool = cgpu_create_command_pool(gfx_queue, &pool_desc);
129 auto cmd_desc = CGPUCommandBufferDescriptor();
130 auto cpy_cmd = cgpu_create_command_buffer(cmd_pool, &cmd_desc);
131 {
132 auto geom = CubeGeometry();
133 memcpy(upload_buffer->info->cpu_mapped_address, &geom, upload_buffer_desc.size);
134 }
135 cgpu_cmd_begin(cpy_cmd);
136 CGPUBufferToBufferTransfer vb_cpy = {};
137 vb_cpy.dst = vertex_buffer;
138 vb_cpy.dst_offset = 0;
139 vb_cpy.src = upload_buffer;
140 vb_cpy.src_offset = 0;
141 vb_cpy.size = sizeof(CubeGeometry);
142 cgpu_cmd_transfer_buffer_to_buffer(cpy_cmd, &vb_cpy);
143 {
144 memcpy((char8_t*)upload_buffer->info->cpu_mapped_address + sizeof(CubeGeometry),
145 CubeGeometry::g_Indices, sizeof(CubeGeometry::g_Indices));
146 }
147 CGPUBufferToBufferTransfer ib_cpy = {};
148 ib_cpy.dst = index_buffer;
149 ib_cpy.dst_offset = 0;
150 ib_cpy.src = upload_buffer;
151 ib_cpy.src_offset = sizeof(CubeGeometry);
152 ib_cpy.size = sizeof(CubeGeometry::g_Indices);
153 cgpu_cmd_transfer_buffer_to_buffer(cpy_cmd, &ib_cpy);

Callers 1

mainFunction · 0.85

Calls 15

cgpu_create_bufferFunction · 0.85
cgpu_create_command_poolFunction · 0.85
memcpyFunction · 0.85
cgpu_cmd_beginFunction · 0.85
vector_setClass · 0.85
cgpu_cmd_endFunction · 0.85
cgpu_submit_queueFunction · 0.85
cgpu_wait_queue_idleFunction · 0.85

Tested by

no test coverage detected