X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_screen.h;h=f4550d1c28602f7819aee9e0f3863656f5699d6d;hb=91a0251dbcc4d190ef3936f1d009897b60880f4e;hp=5992e37109380e4590ba140c01451fe315ef5498;hpb=62d153ea37b1bf572c39aab8ec46099fc903362d;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_screen.h b/src/gallium/drivers/vc4/vc4_screen.h index 5992e371093..f4550d1c286 100644 --- a/src/gallium/drivers/vc4/vc4_screen.h +++ b/src/gallium/drivers/vc4/vc4_screen.h @@ -25,9 +25,15 @@ #define VC4_SCREEN_H #include "pipe/p_screen.h" +#include "renderonly/renderonly.h" #include "os/os_thread.h" #include "state_tracker/drm_driver.h" #include "util/list.h" +#include "util/slab.h" + +#ifndef DRM_VC4_PARAM_SUPPORTS_ETC1 +#define DRM_VC4_PARAM_SUPPORTS_ETC1 4 +#endif struct vc4_bo; @@ -41,16 +47,23 @@ struct vc4_bo; #define VC4_DEBUG_ALWAYS_FLUSH 0x0080 #define VC4_DEBUG_ALWAYS_SYNC 0x0100 #define VC4_DEBUG_NIR 0x0200 +#define VC4_DEBUG_DUMP 0x0400 +#define VC4_DEBUG_SURFACE 0x0800 #define VC4_MAX_MIP_LEVELS 12 #define VC4_MAX_TEXTURE_SAMPLERS 16 +struct vc4_simulator_file; + struct vc4_screen { struct pipe_screen base; + struct renderonly *ro; + int fd; - void *simulator_mem_base; - uint32_t simulator_mem_size; + int v3d_ver; + + const char *name; /** The last seqno we've completed a wait for. * @@ -59,6 +72,8 @@ struct vc4_screen { */ uint64_t finished_seqno; + struct slab_parent_pool transfer_pool; + struct vc4_bo_cache { /** List of struct vc4_bo freed, by age. */ struct list_head time_list; @@ -66,14 +81,26 @@ struct vc4_screen { struct list_head *size_list; uint32_t size_list_size; - pipe_mutex lock; + mtx_t lock; uint32_t bo_size; uint32_t bo_count; } bo_cache; + struct util_hash_table *bo_handles; + mtx_t bo_handles_mutex; + uint32_t bo_size; uint32_t bo_count; + bool has_control_flow; + bool has_etc1; + bool has_threaded_fs; + bool has_madvise; + bool has_tiling_ioctl; + bool has_perfmon_ioctl; + bool has_syncobj; + + struct vc4_simulator_file *sim_file; }; static inline struct vc4_screen * @@ -82,21 +109,19 @@ vc4_screen(struct pipe_screen *screen) return (struct vc4_screen *)screen; } -struct pipe_screen *vc4_screen_create(int fd); -boolean vc4_screen_bo_get_handle(struct pipe_screen *pscreen, - struct vc4_bo *bo, - unsigned stride, - struct winsys_handle *whandle); -struct vc4_bo * -vc4_screen_bo_from_handle(struct pipe_screen *pscreen, - struct winsys_handle *whandle); +struct pipe_screen *vc4_screen_create(int fd, struct renderonly *ro); + +const void * +vc4_screen_get_compiler_options(struct pipe_screen *pscreen, + enum pipe_shader_ir ir, + enum pipe_shader_type shader); extern uint32_t vc4_debug; void -vc4_fence_init(struct vc4_screen *screen); +vc4_fence_screen_init(struct vc4_screen *screen); struct vc4_fence * -vc4_fence_create(struct vc4_screen *screen, uint64_t seqno); +vc4_fence_create(struct vc4_screen *screen, uint64_t seqno, int fd); #endif /* VC4_SCREEN_H */