MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / uniform_buffer_create

Method uniform_buffer_create

servers/rendering/rendering_device.cpp:3570–3601  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3568/******************/
3569
3570RID RenderingDevice::uniform_buffer_create(uint32_t p_size_bytes, Span<uint8_t> p_data, BitField<BufferCreationBits> p_creation_bits) {
3571 ERR_FAIL_COND_V(p_data.size() && (uint32_t)p_data.size() != p_size_bytes, RID());
3572
3573 Buffer buffer;
3574 buffer.size = p_size_bytes;
3575 buffer.usage = (RDD::BUFFER_USAGE_TRANSFER_TO_BIT | RDD::BUFFER_USAGE_UNIFORM_BIT);
3576 if (p_creation_bits.has_flag(BUFFER_CREATION_DEVICE_ADDRESS_BIT)) {
3577 buffer.usage.set_flag(RDD::BUFFER_USAGE_DEVICE_ADDRESS_BIT);
3578 }
3579 buffer.driver_id = driver->buffer_create(buffer.size, buffer.usage, RDD::MEMORY_ALLOCATION_TYPE_GPU);
3580 ERR_FAIL_COND_V(!buffer.driver_id, RID());
3581
3582 // Uniform buffers are assumed to be immutable unless they don't have initial data.
3583 if (p_data.is_empty()) {
3584 buffer.draw_tracker = RDG::resource_tracker_create();
3585 buffer.draw_tracker->buffer_driver_id = buffer.driver_id;
3586 }
3587
3588 if (p_data.size()) {
3589 _buffer_initialize(&buffer, p_data);
3590 }
3591
3592 _THREAD_SAFE_LOCK_
3593 buffer_memory += buffer.size;
3594 _THREAD_SAFE_UNLOCK_
3595
3596 RID id = uniform_buffer_owner.make_rid(buffer);
3597#ifdef DEV_ENABLED
3598 set_resource_name(id, "RID:" + itos(id.get_id()));
3599#endif
3600 return id;
3601}
3602
3603void RenderingDevice::_uniform_set_update_shared(UniformSet *p_uniform_set) {
3604 for (UniformSet::SharedTexture shared : p_uniform_set->shared_textures_to_update) {

Callers 15

_denoiseMethod · 0.80
bakeMethod · 0.80
ClusterBuilderRDMethod · 0.80
SSEffectsMethod · 0.80
init_fog_shaderMethod · 0.80
initMethod · 0.80
createMethod · 0.80
debug_probesMethod · 0.80
initMethod · 0.80

Calls 9

RIDClass · 0.85
itosFunction · 0.85
sizeMethod · 0.65
has_flagMethod · 0.45
set_flagMethod · 0.45
buffer_createMethod · 0.45
is_emptyMethod · 0.45
make_ridMethod · 0.45
get_idMethod · 0.45

Tested by

no test coverage detected