vc4: Convert vc4_opt_peephole_sf to work with control flow.
[mesa.git] / src / gallium / drivers / vc4 / vc4_screen.h
index 64bd2cf6510fef0900ebda6be0b93fdb6c4e3c37..03f76b257e3578f7327b0c0b9767f2ae713a3eef 100644 (file)
 #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 */