summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_cs.h
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2009-01-12 01:40:50 -0800
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-02-01 23:30:22 -0800
commitfbeeb6675733f5b2da36d40b0142dadf8cc953b4 (patch)
treeaadefefde5fa45534c6b6c13faf2ef6fbc29c0d6 /src/gallium/drivers/r300/r300_cs.h
parent0c59004fe3cc9f691c73da2b4a9321c7682410f4 (diff)
r300, amd: Make everything build. (Not necessarily work, mind you.)
Lots of structural work, especially in getting the two parts to talk nicely. Todo: - Get damn blitter working. - Add CS flush. - Reverse order of above two items.
Diffstat (limited to 'src/gallium/drivers/r300/r300_cs.h')
-rw-r--r--src/gallium/drivers/r300/r300_cs.h30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h
index ebd5324119..1422842e0c 100644
--- a/src/gallium/drivers/r300/r300_cs.h
+++ b/src/gallium/drivers/r300/r300_cs.h
@@ -23,48 +23,50 @@
#ifndef R300_CS_H
#define R300_CS_H
-#include "radeon_cs.h"
#include "radeon_reg.h"
+#include "r300_winsys.h"
+
/* Yes, I know macros are ugly. However, they are much prettier than the code
* that they neatly hide away, and don't have the cost of function setup,so
* we're going to use them. */
#define MAX_CS_SIZE 64 * 1024 / 4
+/* XXX stolen from radeon_drm.h */
+#define RADEON_GEM_DOMAIN_CPU 0x1
+#define RADEON_GEM_DOMAIN_GTT 0x2
+#define RADEON_GEM_DOMAIN_VRAM 0x4
+
#define CP_PACKET0(register, count) \
(RADEON_CP_PACKET0 | ((count) << 16) | ((register) >> 2))
#define CS_LOCALS(context) \
- struct radeon_cs* cs = context->cs
+ struct r300_winsys* cs_winsys = context->winsys; \
+ struct radeon_cs* cs = cs_winsys->cs
-#define CHECK_CS(size) do { \
- if ((cs->cdw + (size) + 128) > MAX_CS_SIZE || radeon_cs_need_flush(cs)) { \
- /* XXX flush the CS */ \
- } } while (0)
+#define CHECK_CS(size) \
+ cs_winsys->check_cs(cs, (size))
-/* XXX radeon_cs_begin is currently unimplemented on the backend, but let's
- * be future-proof, yeah? */
#define BEGIN_CS(size) do { \
CHECK_CS(size); \
- radeon_cs_begin(cs, (size), __FILE__, __FUNCTION__, __LINE__); \
+ cs_winsys->begin_cs(cs, (size), __FILE__, __FUNCTION__, __LINE__); \
} while (0)
#define OUT_CS(value) \
- radeon_cs_write_dword(cs, value)
+ cs_winsys->write_cs_dword(cs, value)
#define OUT_CS_REG(register, value) do { \
OUT_CS(CP_PACKET0(register, 0)); \
OUT_CS(value); } while (0)
#define OUT_CS_RELOC(bo, offset, rd, wd, flags) do { \
- radeon_cs_write_dword(cs, offset); \
- radeon_cs_write_reloc(cs, bo, rd, wd, flags); \
+ OUT_CS(offset); \
+ cs_winsys->write_cs_reloc(cs, bo, rd, wd, flags); \
} while (0)
-/* XXX more future-proofing */
#define END_CS \
- radeon_cs_end(cs, __FILE__, __FUNCTION__, __LINE__)
+ cs_winsys->end_cs(cs, __FILE__, __FUNCTION__, __LINE__)
#endif /* R300_CS_H */ \ No newline at end of file