softpipe: don't clamp or do logical operations on floating-point buffers.
[mesa.git] / src / gallium / drivers / nouveau / nouveau_winsys.h
index bed014b9ce084d0c16cd9c42b7cc08d33904bffe..524e63652f6ddab185d4bd7426ea36bd60e25ac0 100644 (file)
@@ -2,29 +2,44 @@
 #define NOUVEAU_WINSYS_H
 
 #include <stdint.h>
-#include "util/u_simple_screen.h"
+#include <inttypes.h>
+
 #include "pipe/p_defines.h"
 
 #include "nouveau/nouveau_bo.h"
 #include "nouveau/nouveau_channel.h"
-#include "nouveau/nouveau_class.h"
 #include "nouveau/nouveau_device.h"
 #include "nouveau/nouveau_grobj.h"
 #include "nouveau/nouveau_notifier.h"
-#include "nouveau/nouveau_resource.h"
-#include "nouveau/nouveau_pushbuf.h"
+#ifndef NOUVEAU_NVC0
+#include "nouveau/nv04_pushbuf.h"
+#endif
+
+#ifndef NV04_PFIFO_MAX_PACKET_LEN
+#define NV04_PFIFO_MAX_PACKET_LEN 2047
+#endif
 
-#define NOUVEAU_CAP_HW_VTXBUF (0xbeef0000)
-#define NOUVEAU_CAP_HW_IDXBUF (0xbeef0001)
+#define NOUVEAU_RESOURCE_FLAG_LINEAR   (PIPE_RESOURCE_FLAG_DRV_PRIV << 0)
+#define NOUVEAU_RESOURCE_FLAG_DRV_PRIV (PIPE_RESOURCE_FLAG_DRV_PRIV << 1)
 
-#define NOUVEAU_TEXTURE_USAGE_LINEAR (1 << 16)
+static INLINE uint32_t
+nouveau_screen_transfer_flags(unsigned pipe)
+{
+       uint32_t flags = 0;
 
-#define NOUVEAU_BUFFER_USAGE_TEXTURE  (1 << 16)
-#define NOUVEAU_BUFFER_USAGE_ZETA     (1 << 17)
-#define NOUVEAU_BUFFER_USAGE_TRANSFER (1 << 18)
+       if (pipe & PIPE_TRANSFER_READ)
+               flags |= NOUVEAU_BO_RD;
+       if (pipe & PIPE_TRANSFER_WRITE)
+               flags |= NOUVEAU_BO_WR;
+       if (pipe & PIPE_TRANSFER_DISCARD)
+               flags |= NOUVEAU_BO_INVAL;
+       if (pipe & PIPE_TRANSFER_UNSYNCHRONIZED)
+               flags |= NOUVEAU_BO_NOSYNC;
+       else if (pipe & PIPE_TRANSFER_DONTBLOCK)
+               flags |= NOUVEAU_BO_NOWAIT;
 
-/* use along with GPU_WRITE for 2D-only writes */
-#define NOUVEAU_BUFFER_USAGE_NO_RENDER (1 << 19)
+       return flags;
+}
 
 extern struct pipe_screen *
 nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *);
@@ -32,4 +47,7 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *);
 extern struct pipe_screen *
 nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *);
 
+extern struct pipe_screen *
+nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *);
+
 #endif