+ int v3d_ver;
+
+ const char *name;
+
+ /** 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 slab_parent_pool transfer_pool;
+
+ 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;
+
+ 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;