X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_screen.h;h=85108219ee3babc434c3c3ac3921aa4d8b8b9d32;hb=53492917e2153e9f5eb503792c2793a8e4cba391;hp=03f76b257e3578f7327b0c0b9767f2ae713a3eef;hpb=3858722740185c644bdea1d6f27ff4960d4c49c5;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_screen.h b/src/gallium/drivers/vc4/vc4_screen.h index 03f76b257e3..85108219ee3 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; @@ -42,16 +48,22 @@ struct vc4_bo; #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. * @@ -60,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; @@ -67,14 +81,23 @@ 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_tiling_ioctl; + + struct vc4_simulator_file *sim_file; }; static inline struct vc4_screen * @@ -83,14 +106,12 @@ 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;