panfrost: Support (non-)seamless cube maps
[mesa.git] / src / gallium / drivers / panfrost / pan_screen.h
index d2b786387e7584bef845aceeb48ea2c3b59bca50..4907bd4395fdbc592e8a2e3df7acb28c0496bf53 100644 (file)
@@ -35,7 +35,6 @@
 
 #include <panfrost-misc.h>
 #include "pan_allocate.h"
-#include "pan_trace.h"
 
 struct panfrost_context;
 struct panfrost_resource;
@@ -47,44 +46,11 @@ struct panfrost_screen;
 #define PAN_ALLOCATE_INVISIBLE (1 << 2)
 #define PAN_ALLOCATE_COHERENT_LOCAL (1 << 3)
 
-struct panfrost_driver {
-       struct panfrost_bo * (*import_bo) (struct panfrost_screen *screen, struct winsys_handle *whandle);
-       int (*export_bo) (struct panfrost_screen *screen, int gem_handle, unsigned int stride, struct winsys_handle *whandle);
-
-       int (*submit_vs_fs_job) (struct panfrost_context *ctx, bool has_draws, bool is_scanout);
-       void (*force_flush_fragment) (struct panfrost_context *ctx,
-                                     struct pipe_fence_handle **fence);
-       void (*allocate_slab) (struct panfrost_screen *screen,
-                              struct panfrost_memory *mem,
-                              size_t pages,
-                              bool same_va,
-                              int extra_flags,
-                              int commit_count,
-                              int extent);
-        void (*free_slab) (struct panfrost_screen *screen,
-                           struct panfrost_memory *mem);
-        void (*free_imported_bo) (struct panfrost_screen *screen,
-                             struct panfrost_bo *bo);
-        void (*enable_counters) (struct panfrost_screen *screen);
-        void (*dump_counters) (struct panfrost_screen *screen);
-       unsigned (*query_gpu_version) (struct panfrost_screen *screen);
-       int (*init_context) (struct panfrost_context *ctx);
-       void (*fence_reference) (struct pipe_screen *screen,
-                         struct pipe_fence_handle **ptr,
-                         struct pipe_fence_handle *fence);
-       boolean (*fence_finish) (struct pipe_screen *screen,
-                      struct pipe_context *ctx,
-                      struct pipe_fence_handle *fence,
-                      uint64_t timeout);
-};
-
 struct panfrost_screen {
         struct pipe_screen base;
+        int fd;
 
         struct renderonly *ro;
-        struct panfrost_driver *driver;
-
-        struct panfrost_memory perf_counters;
 
         /* Memory management is based on subdividing slabs with AMD's allocator */
         struct pb_slabs slabs;
@@ -105,4 +71,49 @@ pan_screen(struct pipe_screen *p)
    return (struct panfrost_screen *)p;
 }
 
+void
+panfrost_drm_allocate_slab(struct panfrost_screen *screen,
+                           struct panfrost_memory *mem,
+                           size_t pages,
+                           bool same_va,
+                           int extra_flags,
+                           int commit_count,
+                           int extent);
+void
+panfrost_drm_free_slab(struct panfrost_screen *screen,
+                       struct panfrost_memory *mem);
+struct panfrost_bo *
+panfrost_drm_import_bo(struct panfrost_screen *screen,
+                       struct winsys_handle *whandle);
+int
+panfrost_drm_export_bo(struct panfrost_screen *screen, int gem_handle,
+                       unsigned int stride, struct winsys_handle *whandle);
+void
+panfrost_drm_free_imported_bo(struct panfrost_screen *screen,
+                              struct panfrost_bo *bo);
+int
+panfrost_drm_submit_job(struct panfrost_context *ctx, u64 job_desc, int reqs,
+                        struct pipe_surface *surf);
+int
+panfrost_drm_submit_vs_fs_job(struct panfrost_context *ctx, bool has_draws,
+                              bool is_scanout);
+struct panfrost_fence *
+panfrost_fence_create(struct panfrost_context *ctx);
+void
+panfrost_drm_force_flush_fragment(struct panfrost_context *ctx,
+                                  struct pipe_fence_handle **fence);
+unsigned
+panfrost_drm_query_gpu_version(struct panfrost_screen *screen);
+int
+panfrost_drm_init_context(struct panfrost_context *ctx);
+void
+panfrost_drm_fence_reference(struct pipe_screen *screen,
+                             struct pipe_fence_handle **ptr,
+                             struct pipe_fence_handle *fence);
+boolean
+panfrost_drm_fence_finish(struct pipe_screen *pscreen,
+                          struct pipe_context *ctx,
+                          struct pipe_fence_handle *fence,
+                          uint64_t timeout);
+
 #endif /* PAN_SCREEN_H */