freedreno: remove unnecessary null checks
[mesa.git] / src / gallium / drivers / freedreno / freedreno_screen.h
index e0377b561a9230e1b9bd41370e4e64998cc45971..8fb096a10ddf48071e32ef32c960bf58d5ac4e1a 100644 (file)
@@ -42,10 +42,23 @@ struct fd_bo;
 struct fd_screen {
        struct pipe_screen base;
 
+       /* 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
+        * further down the inheritance hierarchy:
+        */
+       int refcnt;
+
+       /* place for winsys to stash it's own stuff: */
+       void *winsys_priv;
+
        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_rts;        /* max # of render targets */
+
+       void *compiler;          /* currently unused for a2xx */
 
        struct fd_device *dev;
        struct fd_pipe *pipe;
@@ -53,7 +66,7 @@ struct fd_screen {
        int64_t cpu_gpu_time_delta;
 };
 
-static INLINE struct fd_screen *
+static inline struct fd_screen *
 fd_screen(struct pipe_screen *pscreen)
 {
        return (struct fd_screen *)pscreen;
@@ -70,10 +83,30 @@ struct fd_bo * fd_screen_bo_from_handle(struct pipe_screen *pscreen,
 struct pipe_screen * fd_screen_create(struct fd_device *dev);
 
 /* is a3xx patch revision 0? */
+/* TODO a306.0 probably doesn't need this.. be more clever?? */
 static inline boolean
 is_a3xx_p0(struct fd_screen *screen)
 {
-       return (screen->gpu_id & 0xff0000ff) == 0x0300000000;
+       return (screen->chip_id & 0xff0000ff) == 0x03000000;
+}
+
+static inline boolean
+is_a3xx(struct fd_screen *screen)
+{
+       return (screen->gpu_id >= 300) && (screen->gpu_id < 400);
+}
+
+static inline boolean
+is_a4xx(struct fd_screen *screen)
+{
+       return (screen->gpu_id >= 400) && (screen->gpu_id < 500);
+}
+
+/* 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);
 }
 
 #endif /* FREEDRENO_SCREEN_H_ */