X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Ffreedreno%2Ffreedreno_screen.h;h=087b07e0b09f261c8945c1ea3d24ec6d99611f4f;hb=c768461c1f22c412255ab7f1ef2e335015ff8500;hp=8fb096a10ddf48071e32ef32c960bf58d5ac4e1a;hpb=005c8e01062e8e88a86904b955d5422742bd32e7;p=mesa.git diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h index 8fb096a10dd..087b07e0b09 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.h +++ b/src/gallium/drivers/freedreno/freedreno_screen.h @@ -34,14 +34,18 @@ #include "pipe/p_screen.h" #include "util/u_memory.h" +#include "util/slab.h" +#include "os/os_thread.h" -typedef uint32_t u32; +#include "freedreno_batch_cache.h" struct fd_bo; struct fd_screen { struct pipe_screen base; + pipe_mutex lock; + /* it would be tempting to use pipe_reference here, but that * really doesn't work well if it isn't the first member of * the struct, so not quite so awesome to be adding refcnting @@ -52,11 +56,16 @@ struct fd_screen { /* place for winsys to stash it's own stuff: */ void *winsys_priv; + struct slab_parent_pool transfer_pool; + uint32_t gmemsize_bytes; uint32_t device_id; uint32_t gpu_id; /* 220, 305, etc */ uint32_t chip_id; /* coreid:8 majorrev:8 minorrev:8 patch:8 */ + uint32_t max_freq; uint32_t max_rts; /* max # of render targets */ + uint32_t gmem_alignw, gmem_alignh; + bool has_timestamp; void *compiler; /* currently unused for a2xx */ @@ -64,6 +73,10 @@ struct fd_screen { struct fd_pipe *pipe; int64_t cpu_gpu_time_delta; + + struct fd_batch_cache batch_cache; + + bool reorder; }; static inline struct fd_screen * @@ -77,8 +90,7 @@ boolean fd_screen_bo_get_handle(struct pipe_screen *pscreen, unsigned stride, struct winsys_handle *whandle); struct fd_bo * fd_screen_bo_from_handle(struct pipe_screen *pscreen, - struct winsys_handle *whandle, - unsigned *out_stride); + struct winsys_handle *whandle); struct pipe_screen * fd_screen_create(struct fd_device *dev); @@ -102,11 +114,17 @@ is_a4xx(struct fd_screen *screen) return (screen->gpu_id >= 400) && (screen->gpu_id < 500); } +static inline boolean +is_a5xx(struct fd_screen *screen) +{ + return (screen->gpu_id >= 500) && (screen->gpu_id < 600); +} + /* is it using the ir3 compiler (shader isa introduced with a3xx)? */ static inline boolean is_ir3(struct fd_screen *screen) { - return is_a3xx(screen) || is_a4xx(screen); + return is_a3xx(screen) || is_a4xx(screen) || is_a5xx(screen); } #endif /* FREEDRENO_SCREEN_H_ */