X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_screen.h;h=03f76b257e3578f7327b0c0b9767f2ae713a3eef;hb=0c923e6c33059b3ba0c29cbc920c2918e55f54db;hp=64bd2cf6510fef0900ebda6be0b93fdb6c4e3c37;hpb=1850d0a1cbf044dc4d29b7a9ede2c634f667d853;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_screen.h b/src/gallium/drivers/vc4/vc4_screen.h index 64bd2cf6510..03f76b257e3 100644 --- a/src/gallium/drivers/vc4/vc4_screen.h +++ b/src/gallium/drivers/vc4/vc4_screen.h @@ -25,21 +25,56 @@ #define VC4_SCREEN_H #include "pipe/p_screen.h" +#include "os/os_thread.h" #include "state_tracker/drm_driver.h" +#include "util/list.h" struct vc4_bo; -#define VC4_DBG_CL 0x0001 +#define VC4_DEBUG_CL 0x0001 +#define VC4_DEBUG_QPU 0x0002 +#define VC4_DEBUG_QIR 0x0004 +#define VC4_DEBUG_TGSI 0x0008 +#define VC4_DEBUG_SHADERDB 0x0010 +#define VC4_DEBUG_PERF 0x0020 +#define VC4_DEBUG_NORAST 0x0040 +#define VC4_DEBUG_ALWAYS_FLUSH 0x0080 +#define VC4_DEBUG_ALWAYS_SYNC 0x0100 +#define VC4_DEBUG_NIR 0x0200 +#define VC4_DEBUG_DUMP 0x0400 -#define VC4_MAX_MIP_LEVELS 11 +#define VC4_MAX_MIP_LEVELS 12 +#define VC4_MAX_TEXTURE_SAMPLERS 16 struct vc4_screen { struct pipe_screen base; int fd; void *simulator_mem_base; - uint32_t simulator_mem_next; uint32_t simulator_mem_size; + + /** The last seqno we've completed a wait for. + * + * This lets us slightly optimize our waits by skipping wait syscalls + * if we know the job's already done. + */ + uint64_t finished_seqno; + + struct vc4_bo_cache { + /** List of struct vc4_bo freed, by age. */ + struct list_head time_list; + /** List of struct vc4_bo freed, per size, by age. */ + struct list_head *size_list; + uint32_t size_list_size; + + pipe_mutex lock; + + uint32_t bo_size; + uint32_t bo_count; + } bo_cache; + + uint32_t bo_size; + uint32_t bo_count; }; static inline struct vc4_screen * @@ -55,9 +90,14 @@ boolean vc4_screen_bo_get_handle(struct pipe_screen *pscreen, struct winsys_handle *whandle); struct vc4_bo * vc4_screen_bo_from_handle(struct pipe_screen *pscreen, - struct winsys_handle *whandle, - unsigned *out_stride); + struct winsys_handle *whandle); + +extern uint32_t vc4_debug; + +void +vc4_fence_init(struct vc4_screen *screen); -uint8_t vc4_get_texture_format(enum pipe_format format); +struct vc4_fence * +vc4_fence_create(struct vc4_screen *screen, uint64_t seqno); #endif /* VC4_SCREEN_H */