ReactOS 0.4.17-dev-923-g4c9a150
vkd3d_memory.h File Reference
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include "vkd3d_common.h"
Include dependency graph for vkd3d_memory.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static void * vkd3d_malloc (size_t size)
 
static void * vkd3d_realloc (void *ptr, size_t size)
 
static void * vkd3d_calloc (size_t count, size_t size)
 
static void vkd3d_free (void *ptr)
 
static char * vkd3d_strdup (const char *string)
 
static void * vkd3d_memdup (const void *mem, size_t size)
 
bool vkd3d_array_reserve (void **elements, size_t *capacity, size_t element_count, size_t element_size)
 

Function Documentation

◆ vkd3d_array_reserve()

bool vkd3d_array_reserve ( void **  elements,
size_t *  capacity,
size_t  element_count,
size_t  element_size 
)

Definition at line 22 of file memory.c.

23{
24 size_t new_capacity, max_capacity;
25 void *new_elements;
26
27 if (element_count <= *capacity)
28 return true;
29
30 max_capacity = ~(size_t)0 / element_size;
31 if (max_capacity < element_count)
32 return false;
33
34 new_capacity = max(*capacity, 4);
35 while (new_capacity < element_count && new_capacity <= max_capacity / 2)
36 new_capacity *= 2;
37
38 if (new_capacity < element_count)
39 new_capacity = element_count;
40
41 if (!(new_elements = vkd3d_realloc(*elements, new_capacity * element_size)))
42 return false;
43
44 *elements = new_elements;
45 *capacity = new_capacity;
46
47 return true;
48}
size_t const element_size
Definition: debug_heap.cpp:510
unsigned int size_t
Definition: corecrt.h:203
static ULONG ** element_count
Definition: exception.c:124
#define max(a, b)
Definition: svc.c:63
static void * vkd3d_realloc(void *ptr, size_t size)
Definition: vkd3d_memory.h:36

Referenced by add_signature_element(), bytecode_align(), bytecode_put_bytes_unaligned(), bytecode_reserve_bytes(), cf_flattener_iterate_instruction_array(), cf_flattener_push_control_flow_level(), cf_flattener_require_space(), d3d12_command_allocator_add_buffer_view(), d3d12_command_allocator_add_descriptor_pool(), d3d12_command_allocator_add_framebuffer(), d3d12_command_allocator_add_render_pass(), d3d12_command_allocator_add_transfer_buffer(), d3d12_command_allocator_add_view(), d3d12_command_allocator_allocate_command_buffer(), d3d12_command_allocator_free_resources(), d3d12_command_list_invalidate_bindings(), d3d12_command_queue_op_array_append(), d3d12_command_queue_op_array_require_space(), d3d12_command_queue_wait_binary_semaphore_locked(), d3d12_device_add_descriptor_heap(), d3d12_fence_add_pending_timeline_signal(), d3d12_fence_add_vk_semaphore(), d3d12_fence_SetEventOnCompletion(), d3d12_root_signature_info_add_range(), decompose_fx_4_state_add_entries(), dxil_block_add_record(), dxil_block_init(), dxil_block_read(), generate_vsir_signature_entry(), hlsl_array_reserve(), hlsl_state_block_add_entry(), lower_switch_to_if_ladder_add_block_mapping(), reserve_instructions(), shader_instruction_array_add_icb(), shader_instruction_array_reserve(), sm6_block_phi_require_space(), sm6_function_blocks_reserve(), sm6_parser_add_block_abbrev(), sm6_parser_add_global_abbrev(), sm6_parser_descriptor_type_init(), sm6_parser_emit_phi(), sm6_parser_function_init(), spirv_compiler_emit_spec_constant(), vk_binding_array_add_binding(), vkd3d_enqueue_gpu_fence(), vkd3d_enqueue_timeline_semaphore(), vkd3d_gpu_va_allocator_allocate_fallback(), VKD3D_PRINTF_FUNC(), vkd3d_render_pass_cache_create_pass_locked(), vkd3d_shader_scan_add_descriptor(), vkd3d_shader_scan_combined_sampler_usage(), vkd3d_shader_scan_push_cf_info(), vkd3d_spirv_add_iface_variable(), vkd3d_spirv_build_word(), vkd3d_spirv_enable_capability(), vkd3d_spirv_stream_append(), vkd3d_string_buffer_get(), vkd3d_string_buffer_resize(), vsir_block_list_add_checked(), vsir_cfg_add_loop_interval(), vsir_cfg_compute_loops(), vsir_cfg_sort_nodes(), vsir_cfg_structure_list_append(), vsir_cfg_structure_list_append_from_region(), vsir_program_materialise_phi_ssas_to_temps(), vsir_program_normalise_flat_constants(), and vsir_validator_push_block().

◆ vkd3d_calloc()

static void * vkd3d_calloc ( size_t  count,
size_t  size 
)
inlinestatic

Definition at line 43 of file vkd3d_memory.h.

44{
45 void *ptr;
46 VKD3D_ASSERT(!size || count <= ~(size_t)0 / size);
47 if (!(ptr = calloc(count, size)))
48 ERR("Out of memory.\n");
49 return ptr;
50}
#define ERR(fmt,...)
Definition: precomp.h:57
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
static PVOID ptr
Definition: dispmode.c:27
#define calloc
Definition: rosglue.h:14
#define VKD3D_ASSERT(cond)
Definition: vkd3d_common.h:49

Referenced by clone_array_parameter(), convert_descriptor_info(), convert_parameter_info(), convert_root_parameters_to_v_1_0(), convert_root_parameters_to_v_1_1(), convert_root_signature_to_v1_0(), convert_root_signature_to_v1_1(), d3d12_command_list_ResourceBarrier(), d3d12_command_list_update_uav_counter_descriptors(), d3d12_command_queue_ExecuteCommandLists(), d3d12_command_signature_create(), d3d12_device_get_resource_allocation_info(), d3d12_pipeline_state_create(), d3d12_pipeline_state_init_uav_counters(), d3d12_resource_init_tiles(), d3d12_root_signature_init(), d3d12_root_signature_init_root_descriptor_tables(), dxil_block_read(), dxil_record_to_string(), hlsl_alloc(), hlsl_calloc(), parse_dxbc(), shader_parse_descriptor_table(), shader_parse_descriptor_table1(), shader_parse_root_signature(), shader_parse_signature(), sm6_block_create(), sm6_parser_allocate_named_metadata(), sm6_parser_emit_switch(), sm6_parser_init(), sm6_parser_metadata_init(), sm6_parser_read_signature(), sm6_parser_symtab_init(), sm6_parser_type_table_init(), spirv_compiler_allocate_ssa_register_ids(), spirv_compiler_create(), spirv_compiler_emit_constant_array(), spirv_compiler_emit_push_constant_buffers(), spirv_compiler_emit_switch(), spirv_compiler_generate_spirv(), spirv_compiler_init_blocks(), tpf_write_sfi0(), tpf_write_signature(), vkd3d_check_device_extensions(), vkd3d_create_vk_device(), vkd3d_gpu_va_allocator_init(), vkd3d_init_depth_stencil_formats(), vkd3d_init_format_compatibility_lists(), vkd3d_init_instance_caps(), vkd3d_instance_init(), vkd3d_select_physical_device(), vkd3d_select_queues(), vkd3d_shader_signature_from_shader_signature(), vkd3d_spirv_stream_init(), vkd3d_trace_physical_device(), vsir_cfg_build_structured_program(), vsir_cfg_compute_loops(), vsir_cfg_init(), vsir_cfg_materialize_undominated_ssas_to_temps(), vsir_cfg_sort_nodes(), vsir_program_materialise_phi_ssas_to_temps(), and vsir_program_validate().

◆ vkd3d_free()

static void vkd3d_free ( void *  ptr)
inlinestatic

Definition at line 52 of file vkd3d_memory.h.

53{
54 free(ptr);
55}
#define free
Definition: debug_ros.c:5

Referenced by add_semantic_var(), allocate_const_registers(), allocate_semantic_registers(), allocate_temp_registers(), cf_flattener_iterate_instruction_array(), clone_compile(), clone_load(), clone_resource_load(), clone_resource_store(), clone_stateblock_entry(), clone_store(), convert_root_signature_to_v1_0(), convert_root_signature_to_v1_1(), copy_propagation_var_def_destroy(), d3d12_cache_session_destroy(), d3d12_command_allocator_create(), d3d12_command_allocator_Release(), d3d12_command_list_create(), d3d12_command_list_Release(), d3d12_command_list_ResourceBarrier(), d3d12_command_list_update_uav_counter_descriptors(), d3d12_command_queue_create(), d3d12_command_queue_destroy_op(), d3d12_command_queue_ExecuteCommandLists(), d3d12_command_queue_op_array_destroy(), d3d12_command_queue_Release(), d3d12_command_signature_create(), d3d12_command_signature_decref(), d3d12_descriptor_heap_create(), d3d12_descriptor_heap_Release(), d3d12_device_create(), d3d12_device_CreateShaderCacheSession(), d3d12_device_get_resource_allocation_info(), d3d12_device_Release(), d3d12_fence_decref(), d3d12_heap_create(), d3d12_heap_destroy(), d3d12_pipeline_state_create(), d3d12_pipeline_state_create_compute(), d3d12_pipeline_state_create_graphics(), d3d12_pipeline_state_destroy_graphics(), d3d12_pipeline_state_init_uav_counters(), d3d12_pipeline_state_put_pipeline_to_cache(), d3d12_pipeline_state_Release(), d3d12_pipeline_uav_counter_state_cleanup(), d3d12_query_heap_create(), d3d12_query_heap_Release(), d3d12_resource_create(), d3d12_resource_decref(), d3d12_resource_init_tiles(), d3d12_resource_tile_info_cleanup(), d3d12_root_signature_cleanup(), d3d12_root_signature_create(), d3d12_root_signature_deserializer_Release(), d3d12_root_signature_info_from_desc(), d3d12_root_signature_Release(), d3d12_versioned_root_signature_deserializer_Release(), d3dbc_compile(), decompose_fx_4_state_function_call(), dxil_block_destroy(), dxil_block_init(), dxil_block_read(), dxil_global_abbrevs_cleanup(), dxil_parse(), free_descriptor_ranges(), free_descriptor_ranges1(), free_function(), free_function_decl(), free_ir_call(), free_ir_compile(), free_ir_constant(), free_ir_expr(), free_ir_if(), free_ir_index(), free_ir_jump(), free_ir_load(), free_ir_loop(), free_ir_resource_load(), free_ir_resource_store(), free_ir_sampler_state(), free_ir_stateblock_constant(), free_ir_store(), free_ir_string_constant(), free_ir_switch(), free_ir_swizzle(), fx_write_context_cleanup(), hlsl_add_function(), hlsl_cleanup_deref(), hlsl_cleanup_semantic(), hlsl_clone_block(), hlsl_ctx_cleanup(), hlsl_ctx_init(), hlsl_free_attribute(), hlsl_free_instr(), hlsl_free_ir_switch_case(), hlsl_free_state_block(), hlsl_free_state_block_entry(), hlsl_free_type(), hlsl_free_var(), hlsl_fx_2_write(), hlsl_fx_4_write(), hlsl_fx_5_write(), hlsl_new_compile(), hlsl_new_func_decl(), hlsl_new_load_component(), hlsl_new_load_index(), hlsl_new_resource_load(), hlsl_new_sampler_state(), hlsl_new_simple_type(), hlsl_new_stateblock_constant(), hlsl_new_store_component(), hlsl_new_store_index(), hlsl_new_type(), hlsl_new_var(), hlsl_type_clone(), metadata_value_create_node(), parse_dxbc(), process_entry_function(), shader_instruction_array_destroy(), shader_param_allocator_destroy(), shader_parse_signature(), shader_signature_cleanup(), shader_signature_merge(), sm1_generate_vsir(), sm4_free_extern_resources(), sm6_block_destroy(), sm6_functions_cleanup(), sm6_metadata_value_destroy(), sm6_parser_add_block_abbrev(), sm6_parser_add_global_abbrev(), sm6_parser_cleanup(), sm6_parser_metadata_cleanup(), sm6_parser_read_abbrev_record(), sm6_parser_read_signature(), sm6_parser_read_unabbrev_record(), sm6_parser_type_table_init(), sm6_phi_destroy(), sm6_symtab_cleanup(), sm6_type_table_cleanup(), spirv_compiler_create(), spirv_compiler_destroy(), spirv_compiler_emit_constant_array(), spirv_compiler_emit_push_constant_buffers(), spirv_compiler_emit_switch(), spirv_compiler_put_symbol(), ssas_to_temps_block_info_cleanup(), string_storage_destroy(), tpf_write_sfi0(), tpf_write_signature(), update_mappings_cleanup(), value_allocate_constant_array(), vk_binding_array_cleanup(), vkd3d_blob_Release(), vkd3d_check_device_extensions(), vkd3d_cleanup_depth_stencil_formats(), vkd3d_cleanup_format_compatibility_lists(), vkd3d_create_descriptor_set_layout(), vkd3d_create_image_resource(), vkd3d_create_instance(), vkd3d_create_root_signature_deserializer(), vkd3d_create_thread(), vkd3d_create_versioned_root_signature_deserializer(), vkd3d_create_vk_device(), vkd3d_desc_object_cache_cleanup(), vkd3d_destroy_instance(), vkd3d_fence_worker_main(), vkd3d_fence_worker_stop(), vkd3d_gpu_va_allocator_cleanup(), vkd3d_init_device_caps(), vkd3d_init_instance_caps(), vkd3d_instance_init(), vkd3d_pipeline_bindings_cleanup(), vkd3d_private_data_destroy(), vkd3d_queue_destroy(), vkd3d_render_pass_cache_cleanup(), vkd3d_select_physical_device(), vkd3d_select_queues(), vkd3d_set_thread_name(), vkd3d_set_vk_object_name(), vkd3d_shader_cache_decref(), vkd3d_shader_cache_destroy_entry(), vkd3d_shader_cache_put(), vkd3d_shader_free_dxbc(), vkd3d_shader_free_messages(), vkd3d_shader_free_root_signature_v_1_0(), vkd3d_shader_free_root_signature_v_1_1(), vkd3d_shader_free_scan_combined_resource_sampler_info(), vkd3d_shader_free_scan_descriptor_info(), vkd3d_shader_free_scan_descriptor_info1(), vkd3d_shader_free_shader_code(), vkd3d_shader_free_shader_signature(), vkd3d_shader_scan_context_cleanup(), vkd3d_shader_serialize_root_signature(), vkd3d_shader_signature_from_shader_signature(), vkd3d_spirv_builder_free(), vkd3d_spirv_declaration_free(), vkd3d_spirv_insert_declaration(), vkd3d_spirv_stream_clear(), vkd3d_spirv_stream_free(), vkd3d_string_buffer_cache_cleanup(), vkd3d_string_buffer_cleanup(), vkd3d_symbol_free(), vkd3d_trace_physical_device(), vsir_block_cleanup(), vsir_block_list_cleanup(), vsir_cfg_build_structured_program(), vsir_cfg_cleanup(), vsir_cfg_materialize_undominated_ssas_to_temps(), vsir_cfg_sort_nodes(), vsir_cfg_structure_list_cleanup(), vsir_program_cleanup(), vsir_program_flatten_control_flow_constructs(), vsir_program_lower_switch_to_selection_ladder(), vsir_program_materialise_phi_ssas_to_temps(), vsir_program_normalise_flat_constants(), vsir_program_structurize(), vsir_program_validate(), write_fx_4_type(), and write_sm1_uniforms().

◆ vkd3d_malloc()

static void * vkd3d_malloc ( size_t  size)
inlinestatic

Definition at line 28 of file vkd3d_memory.h.

29{
30 void *ptr;
31 if (!(ptr = malloc(size)))
32 ERR("Out of memory.\n");
33 return ptr;
34}
#define malloc
Definition: debug_ros.c:4

Referenced by d3d12_command_allocator_create(), d3d12_command_list_create(), d3d12_command_queue_create(), d3d12_command_signature_create(), d3d12_descriptor_heap_create(), d3d12_device_create(), d3d12_device_CreateShaderCacheSession(), d3d12_fence_create(), d3d12_heap_create(), d3d12_pipeline_state_create_compute(), d3d12_pipeline_state_create_graphics(), d3d12_pipeline_state_put_pipeline_to_cache(), d3d12_query_heap_create(), d3d12_resource_create(), d3d12_root_signature_create(), dxil_parse(), metadata_value_create_node(), shader_param_allocator_node_create(), shader_signature_merge(), shader_sm4_read_shader_data(), sm6_parser_add_block_abbrev(), sm6_parser_add_global_abbrev(), sm6_parser_read_abbrev_record(), sm6_parser_read_unabbrev_record(), sm6_parser_type_table_init(), spirv_compiler_create(), ssas_to_temps_alloc_init(), value_allocate_constant_array(), vkd3d_blob_create(), vkd3d_create_descriptor_set_layout(), vkd3d_create_image_resource(), vkd3d_create_instance(), vkd3d_create_root_signature_deserializer(), vkd3d_create_thread(), vkd3d_create_versioned_root_signature_deserializer(), vkd3d_desc_object_cache_get(), vkd3d_glsl_generator_generate(), vkd3d_memdup(), vkd3d_private_store_set_private_data(), vkd3d_queue_create(), vkd3d_set_thread_name(), vkd3d_shader_cache_put(), vkd3d_shader_message_context_copy_messages(), vkd3d_shader_open_cache(), vkd3d_spirv_insert_declaration(), vkd3d_spirv_stream_insert(), vkd3d_strdup(), vkd3d_strdup_w16_utf8(), vkd3d_strdup_w32_utf8(), vkd3d_string_buffer_get(), vkd3d_string_buffer_init(), vkd3d_symbol_dup(), and vsir_block_init().

◆ vkd3d_memdup()

static void * vkd3d_memdup ( const void *  mem,
size_t  size 
)
inlinestatic

Definition at line 67 of file vkd3d_memory.h.

68{
69 void *ptr;
70
71 if ((ptr = vkd3d_malloc(size)))
72 memcpy(ptr, mem, size);
73 return ptr;
74}
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
Definition: mem.c:349
static void * vkd3d_malloc(size_t size)
Definition: vkd3d_memory.h:28

◆ vkd3d_realloc()

static void * vkd3d_realloc ( void *  ptr,
size_t  size 
)
inlinestatic

Definition at line 36 of file vkd3d_memory.h.

37{
38 if (!(ptr = realloc(ptr, size)))
39 ERR("Out of memory, size %zu.\n", size);
40 return ptr;
41}
#define realloc
Definition: debug_ros.c:6

Referenced by hlsl_realloc(), sm6_parser_read_abbrev_record(), vkd3d_array_reserve(), vsir_program_add_diffuse_output(), vsir_program_insert_clip_planes(), and vsir_program_remap_output_signature().

◆ vkd3d_strdup()

static char * vkd3d_strdup ( const char *  string)
inlinestatic

Definition at line 57 of file vkd3d_memory.h.

58{
59 size_t len = strlen(string) + 1;
60 char *ptr;
61
62 if ((ptr = vkd3d_malloc(len)))
63 memcpy(ptr, string, len);
64 return ptr;
65}
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
GLenum GLsizei len
Definition: glext.h:6722

Referenced by add_signature_element(), generate_vsir_signature_entry(), hlsl_strdup(), shader_parse_signature(), sm6_parser_read_signature(), vkd3d_shader_signature_from_shader_signature(), and vsir_program_add_diffuse_output().