summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/r300/r300_cs.h3
-rw-r--r--src/gallium/drivers/r300/r300_winsys.h2
-rw-r--r--src/gallium/winsys/drm/amd/amd_r300.c9
3 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h
index 1422842e0c..bd392afca3 100644
--- a/src/gallium/drivers/r300/r300_cs.h
+++ b/src/gallium/drivers/r300/r300_cs.h
@@ -69,4 +69,7 @@
#define END_CS \
cs_winsys->end_cs(cs, __FILE__, __FUNCTION__, __LINE__)
+#define FLUSH_CS \
+ cs_winsys->flush_cs(cs)
+
#endif /* R300_CS_H */ \ No newline at end of file
diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index 7048a9c88d..7711dc792d 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -74,6 +74,8 @@ struct r300_winsys {
const char* function,
int line);
+ /* Flush the CS. */
+ void (*flush_cs)(struct radeon_cs* cs);
};
struct pipe_context* r300_create_context(struct pipe_screen* screen,
diff --git a/src/gallium/winsys/drm/amd/amd_r300.c b/src/gallium/winsys/drm/amd/amd_r300.c
index 0bc0a842c1..0f543df9e1 100644
--- a/src/gallium/winsys/drm/amd/amd_r300.c
+++ b/src/gallium/winsys/drm/amd/amd_r300.c
@@ -37,6 +37,12 @@ static void amd_r300_write_cs_reloc(struct radeon_cs* cs,
radeon_cs_write_reloc(cs, ((struct amd_pipe_buffer*)pbuffer)->bo, rd, wd, flags);
}
+static void amd_r300_flush_cs(struct radeon_cs* cs)
+{
+ radeon_cs_emit(cs);
+ radeon_cs_erase(cs);
+}
+
struct r300_winsys* amd_create_r300_winsys(int fd)
{
struct r300_winsys* winsys = calloc(1, sizeof(struct r300_winsys));
@@ -50,6 +56,7 @@ struct r300_winsys* amd_create_r300_winsys(int fd)
winsys->write_cs_dword = radeon_cs_write_dword;
winsys->write_cs_reloc = amd_r300_write_cs_reloc;
winsys->end_cs = radeon_cs_end;
+ winsys->flush_cs = amd_r300_flush_cs;
return winsys;
-} \ No newline at end of file
+}