r300g: Add CS table writing.
This commit is contained in:
parent
2d1b95477f
commit
c53142c3f4
|
@ -104,6 +104,13 @@
|
|||
cs_count--; \
|
||||
} while (0)
|
||||
|
||||
#define OUT_CS_TABLE(values, count) do { \
|
||||
if (VERY_VERBOSE_REGISTERS) \
|
||||
DBG(cs_context_copy, DBG_CS, "r300: writing table of %d dwords\n", count); \
|
||||
cs_winsys->write_cs_table(cs_winsys, values, count); \
|
||||
cs_count -= count; \
|
||||
} while (0)
|
||||
|
||||
#define OUT_CS_BUF_RELOC(bo, offset, rd, wd, flags) do { \
|
||||
DBG(cs_context_copy, DBG_CS, "r300: writing relocation for buffer %p, offset %d, " \
|
||||
"domains (%d, %d, %d)\n", \
|
||||
|
|
|
@ -119,6 +119,10 @@ struct r300_winsys_screen {
|
|||
/* Write a dword to the command buffer. */
|
||||
void (*write_cs_dword)(struct r300_winsys_screen* winsys, uint32_t dword);
|
||||
|
||||
/* Write a table of dwords to the command buffer. */
|
||||
void (*write_cs_table)(struct r300_winsys_screen* winsys,
|
||||
void *dwords, unsigned count);
|
||||
|
||||
/* Write a relocated dword to the command buffer. */
|
||||
void (*write_cs_reloc)(struct r300_winsys_screen *winsys,
|
||||
struct r300_winsys_buffer *buf,
|
||||
|
|
|
@ -201,6 +201,13 @@ static void radeon_write_cs_dword(struct r300_winsys_screen *rws,
|
|||
radeon_cs_write_dword(ws->cs, dword);
|
||||
}
|
||||
|
||||
static void radeon_write_cs_table(struct r300_winsys_screen *rws,
|
||||
void *table, unsigned count)
|
||||
{
|
||||
struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
|
||||
radeon_cs_write_table(ws->cs, table, count);
|
||||
}
|
||||
|
||||
static void radeon_write_cs_reloc(struct r300_winsys_screen *rws,
|
||||
struct r300_winsys_buffer *buf,
|
||||
uint32_t rd,
|
||||
|
@ -322,6 +329,7 @@ radeon_setup_winsys(int fd, struct radeon_libdrm_winsys* ws)
|
|||
ws->base.check_cs = radeon_check_cs;
|
||||
ws->base.begin_cs = radeon_begin_cs;
|
||||
ws->base.write_cs_dword = radeon_write_cs_dword;
|
||||
ws->base.write_cs_table = radeon_write_cs_table;
|
||||
ws->base.write_cs_reloc = radeon_write_cs_reloc;
|
||||
ws->base.end_cs = radeon_end_cs;
|
||||
ws->base.flush_cs = radeon_flush_cs;
|
||||
|
|
Loading…
Reference in New Issue