mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-13 04:39:07 +00:00
Import libdrm 2.4.104
This commit is contained in:
13
lib/libdrm/amdgpu/.editorconfig
Normal file
13
lib/libdrm/amdgpu/.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
||||
# To use this config with your editor, follow the instructions at:
|
||||
# http://editorconfig.org
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = 8
|
||||
tab_width = 8
|
||||
insert_final_newline = true
|
||||
|
||||
[meson.build]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
19
lib/libdrm/amdgpu/Android.mk
Normal file
19
lib/libdrm/amdgpu/Android.mk
Normal file
@@ -0,0 +1,19 @@
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
# Import variables LIBDRM_AMDGPU_FILES, LIBDRM_AMDGPU_H_FILES
|
||||
include $(LOCAL_PATH)/Makefile.sources
|
||||
|
||||
LOCAL_MODULE := libdrm_amdgpu
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libdrm
|
||||
|
||||
LOCAL_SRC_FILES := $(LIBDRM_AMDGPU_FILES)
|
||||
|
||||
LOCAL_CFLAGS := \
|
||||
-DAMDGPU_ASIC_ID_TABLE=\"/vendor/etc/hwdata/amdgpu.ids\"
|
||||
|
||||
LOCAL_REQUIRED_MODULES := amdgpu.ids
|
||||
|
||||
include $(LIBDRM_COMMON_MK)
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
74
lib/libdrm/amdgpu/amdgpu-symbols.txt
Normal file
74
lib/libdrm/amdgpu/amdgpu-symbols.txt
Normal file
@@ -0,0 +1,74 @@
|
||||
amdgpu_bo_alloc
|
||||
amdgpu_bo_cpu_map
|
||||
amdgpu_bo_cpu_unmap
|
||||
amdgpu_bo_export
|
||||
amdgpu_bo_free
|
||||
amdgpu_bo_import
|
||||
amdgpu_bo_inc_ref
|
||||
amdgpu_bo_list_create_raw
|
||||
amdgpu_bo_list_destroy_raw
|
||||
amdgpu_bo_list_create
|
||||
amdgpu_bo_list_destroy
|
||||
amdgpu_bo_list_update
|
||||
amdgpu_bo_query_info
|
||||
amdgpu_bo_set_metadata
|
||||
amdgpu_bo_va_op
|
||||
amdgpu_bo_va_op_raw
|
||||
amdgpu_bo_wait_for_idle
|
||||
amdgpu_create_bo_from_user_mem
|
||||
amdgpu_cs_chunk_fence_info_to_data
|
||||
amdgpu_cs_chunk_fence_to_dep
|
||||
amdgpu_cs_create_semaphore
|
||||
amdgpu_cs_create_syncobj
|
||||
amdgpu_cs_create_syncobj2
|
||||
amdgpu_cs_ctx_create
|
||||
amdgpu_cs_ctx_create2
|
||||
amdgpu_cs_ctx_free
|
||||
amdgpu_cs_ctx_override_priority
|
||||
amdgpu_cs_destroy_semaphore
|
||||
amdgpu_cs_destroy_syncobj
|
||||
amdgpu_cs_export_syncobj
|
||||
amdgpu_cs_fence_to_handle
|
||||
amdgpu_cs_import_syncobj
|
||||
amdgpu_cs_query_fence_status
|
||||
amdgpu_cs_query_reset_state
|
||||
amdgpu_cs_query_reset_state2
|
||||
amdgpu_query_sw_info
|
||||
amdgpu_cs_signal_semaphore
|
||||
amdgpu_cs_submit
|
||||
amdgpu_cs_submit_raw
|
||||
amdgpu_cs_submit_raw2
|
||||
amdgpu_cs_syncobj_export_sync_file
|
||||
amdgpu_cs_syncobj_export_sync_file2
|
||||
amdgpu_cs_syncobj_import_sync_file
|
||||
amdgpu_cs_syncobj_import_sync_file2
|
||||
amdgpu_cs_syncobj_query
|
||||
amdgpu_cs_syncobj_query2
|
||||
amdgpu_cs_syncobj_reset
|
||||
amdgpu_cs_syncobj_signal
|
||||
amdgpu_cs_syncobj_timeline_signal
|
||||
amdgpu_cs_syncobj_timeline_wait
|
||||
amdgpu_cs_syncobj_transfer
|
||||
amdgpu_cs_syncobj_wait
|
||||
amdgpu_cs_wait_fences
|
||||
amdgpu_cs_wait_semaphore
|
||||
amdgpu_device_deinitialize
|
||||
amdgpu_device_initialize
|
||||
amdgpu_find_bo_by_cpu_mapping
|
||||
amdgpu_get_marketing_name
|
||||
amdgpu_query_buffer_size_alignment
|
||||
amdgpu_query_crtc_from_id
|
||||
amdgpu_query_firmware_version
|
||||
amdgpu_query_gds_info
|
||||
amdgpu_query_gpu_info
|
||||
amdgpu_query_heap_info
|
||||
amdgpu_query_hw_ip_count
|
||||
amdgpu_query_hw_ip_info
|
||||
amdgpu_query_info
|
||||
amdgpu_query_sensor_info
|
||||
amdgpu_read_mm_registers
|
||||
amdgpu_va_range_alloc
|
||||
amdgpu_va_range_free
|
||||
amdgpu_va_range_query
|
||||
amdgpu_vm_reserve_vmid
|
||||
amdgpu_vm_unreserve_vmid
|
||||
@@ -1606,6 +1606,24 @@ int amdgpu_cs_syncobj_timeline_wait(amdgpu_device_handle dev,
|
||||
int amdgpu_cs_syncobj_query(amdgpu_device_handle dev,
|
||||
uint32_t *handles, uint64_t *points,
|
||||
unsigned num_handles);
|
||||
/**
|
||||
* Query sync objects last signaled or submitted point.
|
||||
*
|
||||
* \param dev - \c [in] self-explanatory
|
||||
* \param handles - \c [in] array of sync object handles
|
||||
* \param points - \c [out] array of sync points returned, which presents
|
||||
* syncobj payload.
|
||||
* \param num_handles - \c [in] self-explanatory
|
||||
* \param flags - \c [in] a bitmask of DRM_SYNCOBJ_QUERY_FLAGS_*
|
||||
*
|
||||
* \return 0 on success\n
|
||||
* -ETIME - Timeout
|
||||
* <0 - Negative POSIX Error code
|
||||
*
|
||||
*/
|
||||
int amdgpu_cs_syncobj_query2(amdgpu_device_handle dev,
|
||||
uint32_t *handles, uint64_t *points,
|
||||
unsigned num_handles, uint32_t flags);
|
||||
|
||||
/**
|
||||
* Export kernel sync object to shareable fd.
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <pthread.h>
|
||||
#include <sched.h>
|
||||
#include <sys/ioctl.h>
|
||||
#ifdef HAVE_ALLOCA_H
|
||||
#if HAVE_ALLOCA_H
|
||||
# include <alloca.h>
|
||||
#endif
|
||||
|
||||
@@ -220,15 +220,15 @@ drm_public int amdgpu_cs_query_reset_state2(amdgpu_context_handle context,
|
||||
static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
struct amdgpu_cs_request *ibs_request)
|
||||
{
|
||||
union drm_amdgpu_cs cs;
|
||||
uint64_t *chunk_array;
|
||||
struct drm_amdgpu_cs_chunk *chunks;
|
||||
struct drm_amdgpu_cs_chunk_data *chunk_data;
|
||||
struct drm_amdgpu_cs_chunk_dep *dependencies = NULL;
|
||||
struct drm_amdgpu_cs_chunk_dep *sem_dependencies = NULL;
|
||||
amdgpu_device_handle dev = context->dev;
|
||||
struct list_head *sem_list;
|
||||
amdgpu_semaphore_handle sem, tmp;
|
||||
uint32_t i, size, sem_count = 0;
|
||||
uint32_t i, size, num_chunks, bo_list_handle = 0, sem_count = 0;
|
||||
uint64_t seq_no;
|
||||
bool user_fence;
|
||||
int r = 0;
|
||||
|
||||
@@ -244,23 +244,18 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
|
||||
size = ibs_request->number_of_ibs + (user_fence ? 2 : 1) + 1;
|
||||
|
||||
chunk_array = alloca(sizeof(uint64_t) * size);
|
||||
chunks = alloca(sizeof(struct drm_amdgpu_cs_chunk) * size);
|
||||
|
||||
size = ibs_request->number_of_ibs + (user_fence ? 1 : 0);
|
||||
|
||||
chunk_data = alloca(sizeof(struct drm_amdgpu_cs_chunk_data) * size);
|
||||
|
||||
memset(&cs, 0, sizeof(cs));
|
||||
cs.in.chunks = (uint64_t)(uintptr_t)chunk_array;
|
||||
cs.in.ctx_id = context->id;
|
||||
if (ibs_request->resources)
|
||||
cs.in.bo_list_handle = ibs_request->resources->handle;
|
||||
cs.in.num_chunks = ibs_request->number_of_ibs;
|
||||
bo_list_handle = ibs_request->resources->handle;
|
||||
num_chunks = ibs_request->number_of_ibs;
|
||||
/* IB chunks */
|
||||
for (i = 0; i < ibs_request->number_of_ibs; i++) {
|
||||
struct amdgpu_cs_ib_info *ib;
|
||||
chunk_array[i] = (uint64_t)(uintptr_t)&chunks[i];
|
||||
chunks[i].chunk_id = AMDGPU_CHUNK_ID_IB;
|
||||
chunks[i].length_dw = sizeof(struct drm_amdgpu_cs_chunk_ib) / 4;
|
||||
chunks[i].chunk_data = (uint64_t)(uintptr_t)&chunk_data[i];
|
||||
@@ -279,10 +274,9 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
pthread_mutex_lock(&context->sequence_mutex);
|
||||
|
||||
if (user_fence) {
|
||||
i = cs.in.num_chunks++;
|
||||
i = num_chunks++;
|
||||
|
||||
/* fence chunk */
|
||||
chunk_array[i] = (uint64_t)(uintptr_t)&chunks[i];
|
||||
chunks[i].chunk_id = AMDGPU_CHUNK_ID_FENCE;
|
||||
chunks[i].length_dw = sizeof(struct drm_amdgpu_cs_chunk_fence) / 4;
|
||||
chunks[i].chunk_data = (uint64_t)(uintptr_t)&chunk_data[i];
|
||||
@@ -295,7 +289,7 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
}
|
||||
|
||||
if (ibs_request->number_of_dependencies) {
|
||||
dependencies = malloc(sizeof(struct drm_amdgpu_cs_chunk_dep) *
|
||||
dependencies = alloca(sizeof(struct drm_amdgpu_cs_chunk_dep) *
|
||||
ibs_request->number_of_dependencies);
|
||||
if (!dependencies) {
|
||||
r = -ENOMEM;
|
||||
@@ -312,10 +306,9 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
dep->handle = info->fence;
|
||||
}
|
||||
|
||||
i = cs.in.num_chunks++;
|
||||
i = num_chunks++;
|
||||
|
||||
/* dependencies chunk */
|
||||
chunk_array[i] = (uint64_t)(uintptr_t)&chunks[i];
|
||||
chunks[i].chunk_id = AMDGPU_CHUNK_ID_DEPENDENCIES;
|
||||
chunks[i].length_dw = sizeof(struct drm_amdgpu_cs_chunk_dep) / 4
|
||||
* ibs_request->number_of_dependencies;
|
||||
@@ -326,7 +319,7 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
LIST_FOR_EACH_ENTRY(sem, sem_list, list)
|
||||
sem_count++;
|
||||
if (sem_count) {
|
||||
sem_dependencies = malloc(sizeof(struct drm_amdgpu_cs_chunk_dep) * sem_count);
|
||||
sem_dependencies = alloca(sizeof(struct drm_amdgpu_cs_chunk_dep) * sem_count);
|
||||
if (!sem_dependencies) {
|
||||
r = -ENOMEM;
|
||||
goto error_unlock;
|
||||
@@ -345,26 +338,23 @@ static int amdgpu_cs_submit_one(amdgpu_context_handle context,
|
||||
amdgpu_cs_reset_sem(sem);
|
||||
amdgpu_cs_unreference_sem(sem);
|
||||
}
|
||||
i = cs.in.num_chunks++;
|
||||
i = num_chunks++;
|
||||
|
||||
/* dependencies chunk */
|
||||
chunk_array[i] = (uint64_t)(uintptr_t)&chunks[i];
|
||||
chunks[i].chunk_id = AMDGPU_CHUNK_ID_DEPENDENCIES;
|
||||
chunks[i].length_dw = sizeof(struct drm_amdgpu_cs_chunk_dep) / 4 * sem_count;
|
||||
chunks[i].chunk_data = (uint64_t)(uintptr_t)sem_dependencies;
|
||||
}
|
||||
|
||||
r = drmCommandWriteRead(context->dev->fd, DRM_AMDGPU_CS,
|
||||
&cs, sizeof(cs));
|
||||
r = amdgpu_cs_submit_raw2(dev, context, bo_list_handle, num_chunks,
|
||||
chunks, &seq_no);
|
||||
if (r)
|
||||
goto error_unlock;
|
||||
|
||||
ibs_request->seq_no = cs.out.handle;
|
||||
ibs_request->seq_no = seq_no;
|
||||
context->last_seq[ibs_request->ip_type][ibs_request->ip_instance][ibs_request->ring] = ibs_request->seq_no;
|
||||
error_unlock:
|
||||
pthread_mutex_unlock(&context->sequence_mutex);
|
||||
free(dependencies);
|
||||
free(sem_dependencies);
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -740,6 +730,16 @@ drm_public int amdgpu_cs_syncobj_query(amdgpu_device_handle dev,
|
||||
return drmSyncobjQuery(dev->fd, handles, points, num_handles);
|
||||
}
|
||||
|
||||
drm_public int amdgpu_cs_syncobj_query2(amdgpu_device_handle dev,
|
||||
uint32_t *handles, uint64_t *points,
|
||||
unsigned num_handles, uint32_t flags)
|
||||
{
|
||||
if (!dev)
|
||||
return -EINVAL;
|
||||
|
||||
return drmSyncobjQuery2(dev->fd, handles, points, num_handles, flags);
|
||||
}
|
||||
|
||||
drm_public int amdgpu_cs_export_syncobj(amdgpu_device_handle dev,
|
||||
uint32_t handle,
|
||||
int *shared_fd)
|
||||
|
||||
@@ -102,7 +102,7 @@ struct amdgpu_bo {
|
||||
|
||||
pthread_mutex_t cpu_access_mutex;
|
||||
void *cpu_ptr;
|
||||
int cpu_map_count;
|
||||
int64_t cpu_map_count;
|
||||
};
|
||||
|
||||
struct amdgpu_bo_list {
|
||||
|
||||
@@ -58,8 +58,11 @@ ext_libdrm_amdgpu = declare_dependency(
|
||||
)
|
||||
|
||||
test(
|
||||
'amdgpu-symbol-check',
|
||||
find_program('amdgpu-symbol-check'),
|
||||
env : env_test,
|
||||
args : libdrm_amdgpu,
|
||||
'amdgpu-symbols-check',
|
||||
symbols_check,
|
||||
args : [
|
||||
'--lib', libdrm_amdgpu,
|
||||
'--symbols-file', files('amdgpu-symbols.txt'),
|
||||
'--nm', prog_nm.path(),
|
||||
],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user