nir: support lowering clipdist to arrays
[mesa.git] / src / gallium / drivers / virgl / virgl_screen.h
index 82b876f9f11a008ec02461095d70ca2c63e40a13..3c7c596e1eb42038d3a04c0b9638ab7a66d3269e 100644 (file)
 #ifndef VIRGL_H
 #define VIRGL_H
 
-#include "util/u_transfer.h"
+#include "pipe/p_screen.h"
+#include "util/slab.h"
+#include "virgl_winsys.h"
+
+enum virgl_debug_flags {
+   VIRGL_DEBUG_VERBOSE              = 1 << 0,
+   VIRGL_DEBUG_TGSI                 = 1 << 1,
+   VIRGL_DEBUG_EMULATE_BGRA         = 1 << 2,
+   VIRGL_DEBUG_BGRA_DEST_SWIZZLE    = 1 << 3,
+   VIRGL_DEBUG_SYNC                 = 1 << 4,
+   VIRGL_DEBUG_XFER                 = 1 << 5,
+};
 
-#include "virgl_hw.h"
+extern int virgl_debug;
 
-#include "virgl_winsys.h"
-#include "pipe/p_screen.h"
 struct virgl_screen {
    struct pipe_screen base;
+
+   int refcnt;
+
+   /* place for winsys to stash it's own stuff: */
+   void *winsys_priv;
+
    struct virgl_winsys *vws;
 
    struct virgl_drm_caps caps;
 
+   struct slab_parent_pool transfer_pool;
+
    uint32_t sub_ctx_id;
+   bool tweak_gles_emulate_bgra;
+   bool tweak_gles_apply_bgra_dest_swizzle;
+   int32_t tweak_gles_tf3_value;
 };
 
 
 static inline struct virgl_screen *
-virgl_screen( struct pipe_screen *pipe )
+virgl_screen(struct pipe_screen *pipe)
 {
    return (struct virgl_screen *)pipe;
 }
 
+bool
+virgl_has_readback_format(struct pipe_screen *screen, enum virgl_formats fmt);
+
+/* GL_ARB_map_buffer_alignment requires 64 as the minimum alignment value.  In
+ * addition to complying with the extension, a high enough alignment value is
+ * expected by various external GL clients. For example, wined3d doesn't like
+ * maps that don't have a 16 byte alignment.
+ */
 #define VIRGL_MAP_BUFFER_ALIGNMENT 64
 
 #endif