#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
+#include <vulkan/vulkan.h>
#include "amd_family.h"
#include "util/u_memory.h"
#include "util/u_math.h"
};
struct radeon_winsys_fence;
+struct radeon_winsys_ctx;
struct radeon_winsys_bo {
uint64_t va;
};
struct radv_winsys_sem_counts {
uint32_t syncobj_count;
+ uint32_t syncobj_reset_count; /* for wait only, whether to reset the syncobj */
uint32_t sem_count;
uint32_t *syncobj;
struct radeon_winsys_sem **sem;
void (*buffer_get_metadata)(struct radeon_winsys_bo *bo,
struct radeon_bo_metadata *md);
- void (*buffer_virtual_bind)(struct radeon_winsys_bo *parent,
- uint64_t offset, uint64_t size,
- struct radeon_winsys_bo *bo, uint64_t bo_offset);
- struct radeon_winsys_ctx *(*ctx_create)(struct radeon_winsys *ws,
- enum radeon_ctx_priority priority);
+ VkResult (*buffer_virtual_bind)(struct radeon_winsys_bo *parent,
+ uint64_t offset, uint64_t size,
+ struct radeon_winsys_bo *bo, uint64_t bo_offset);
+ VkResult (*ctx_create)(struct radeon_winsys *ws,
+ enum radeon_ctx_priority priority,
+ struct radeon_winsys_ctx **ctx);
void (*ctx_destroy)(struct radeon_winsys_ctx *ctx);
bool (*ctx_wait_idle)(struct radeon_winsys_ctx *ctx,
void (*cs_reset)(struct radeon_cmdbuf *cs);
- bool (*cs_finalize)(struct radeon_cmdbuf *cs);
+ VkResult (*cs_finalize)(struct radeon_cmdbuf *cs);
void (*cs_grow)(struct radeon_cmdbuf * cs, size_t min_size);
- int (*cs_submit)(struct radeon_winsys_ctx *ctx,
- int queue_index,
- struct radeon_cmdbuf **cs_array,
- unsigned cs_count,
- struct radeon_cmdbuf *initial_preamble_cs,
- struct radeon_cmdbuf *continue_preamble_cs,
- struct radv_winsys_sem_info *sem_info,
- const struct radv_winsys_bo_list *bo_list, /* optional */
- bool can_patch,
- struct radeon_winsys_fence *fence);
+ VkResult (*cs_submit)(struct radeon_winsys_ctx *ctx,
+ int queue_index,
+ struct radeon_cmdbuf **cs_array,
+ unsigned cs_count,
+ struct radeon_cmdbuf *initial_preamble_cs,
+ struct radeon_cmdbuf *continue_preamble_cs,
+ struct radv_winsys_sem_info *sem_info,
+ const struct radv_winsys_bo_list *bo_list, /* optional */
+ bool can_patch,
+ struct radeon_winsys_fence *fence);
void (*cs_add_buffer)(struct radeon_cmdbuf *cs,
struct radeon_winsys_bo *bo);
void (*destroy_sem)(struct radeon_winsys_sem *sem);
/* new shareable sync objects */
- int (*create_syncobj)(struct radeon_winsys *ws, uint32_t *handle);
+ int (*create_syncobj)(struct radeon_winsys *ws, bool create_signaled,
+ uint32_t *handle);
void (*destroy_syncobj)(struct radeon_winsys *ws, uint32_t handle);
void (*reset_syncobj)(struct radeon_winsys *ws, uint32_t handle);