# For documentation on the .attrib file format, see:
# android/android-emugl/host/tools/emugen/README

GLOBAL
	base_opcode 100000
	encoder_headers <stdint.h>

magma_device_import
	dir device_out out
	len device_out sizeof(magma_device_t)

magma_device_query
	dir result_buffer_out out
	len result_buffer_out sizeof(magma_handle_t)
	dir result_out out
	len result_out sizeof(uint64_t)

magma_device_query_fudge
	dir result_buffer_mapping_id_inout inout
	len result_buffer_mapping_id_inout sizeof(uint64_t)
	dir result_buffer_size_inout inout
	len result_buffer_size_inout sizeof(uint64_t)
	dir result_out out
	len result_out sizeof(uint64_t)

magma_device_create_connection
	dir connection_out out
	len connection_out sizeof(magma_connection_t)

magma_connection_create_context
	dir context_id_out out
	len context_id_out sizeof(uint32_t)

magma_connection_create_buffer
	dir size_out out
	len size_out sizeof(uint64_t)
	dir buffer_out out
	len buffer_out sizeof(magma_buffer_t)
	dir id_out out
	len id_out sizeof(magma_buffer_id_t)

magma_connection_import_buffer
	dir size_out out
	len size_out sizeof(uint64_t)
	dir buffer_out out
	len buffer_out sizeof(magma_buffer_t)
	dir id_out out
	len id_out sizeof(magma_buffer_id_t)

magma_connection_create_semaphore
	dir semaphore_out out
	len semaphore_out sizeof(magma_semaphore_t)
	dir id_out out
	len id_out sizeof(magma_semaphore_id_t)

magma_connection_import_semaphore
	dir semaphore_out out
	len semaphore_out sizeof(magma_semaphore_t)
	dir id_out out
	len id_out sizeof(magma_semaphore_id_t)

magma_connection_read_notification_channel
	dir buffer out
	len buffer buffer_size
	dir buffer_size_out out
	len buffer_size_out sizeof(uint64_t)
	dir more_data_out out
	len more_data_out sizeof(magma_bool_t)

magma_buffer_get_cache_policy
	dir cache_policy_out out
	len cache_policy_out sizeof(magma_cache_policy_t)

magma_buffer_get_info
	dir info_out out
	len info_out sizeof(magma_buffer_info)

magma_buffer_get_handle
	dir handle_out out
	len handle_out sizeof(magma_handle_t)

magma_buffer_export
	dir buffer_handle_out out
	len buffer_handle_out sizeof(magma_handle_t)

magma_semaphore_export
	dir semaphore_handle_out out
	len semaphore_handle_out sizeof(magma_handle_t)

magma_connection_create_performance_counter_buffer_pool
	dir pool_id_out out
	len pool_id_out sizeof(magma_perf_count_pool_t)
	dir notification_handle_out out
	len notification_handle_out sizeof(magma_handle_t)

magma_connection_read_performance_counter_completion
	dir trigger_id_out out
	len trigger_id_out sizeof(uint32_t)
	dir buffer_id_out out
	len buffer_id_out sizeof(uint64_t)
	dir buffer_offset_out out
	len buffer_offset_out sizeof(uint32_t)
	dir time_out out
	len time_out sizeof(uint64_t)
	dir result_flags_out out
	len result_flags_out sizeof(uint32_t)

magma_connection_execute_command
	dir descriptor in
	len descriptor sizeof(magma_command_descriptor_t)

magma_connection_execute_command_fudge
	dir descriptor in
	len descriptor descriptor_size

magma_connection_execute_immediate_commands
	dir command_buffers in
	len command_buffers command_count * sizeof(magma_inline_command_buffer_t)

magma_connection_execute_immediate_commands_fudge
	dir command_buffers in
	len command_buffers command_buffers_size
	dir command_buffer_offsets in
	len command_buffer_offsets command_count * sizeof(uint64_t)

magma_buffer_set_name
	dir name in
	len name 1

magma_buffer_set_name_fudge
	dir name in
	len name name_size

magma_poll
	dir items inout
	len items count * sizeof(magma_poll_item_t)

magma_connection_enable_performance_counters
	dir counters in
	len counters counters_count * sizeof(uint64_t)

magma_connection_clear_performance_counters
	dir counters in
	len counters counters_count * sizeof(uint64_t)

magma_connection_add_performance_counter_buffer_offsets_to_pool
	dir offsets in
	len offsets offsets_count * sizeof(magma_buffer_offset_t)

magma_virt_connection_create_image
	dir create_info in
	len create_info sizeof(magma_image_create_info_t)
	dir size_out out
	len size_out sizeof(uint64_t)
	dir image_out out
	len image_out sizeof(magma_buffer_t)
	dir buffer_id_out out
	len buffer_id_out sizeof(magma_buffer_id_t)

magma_virt_connection_get_image_info
	dir image_info_out out
	len image_info_out sizeof(magma_image_info_t)
