boolean r300_check_cs(struct r300_context *r300, unsigned size)
{
- struct r300_cs_info cs_info;
-
- r300->rws->get_cs_info(r300->rws, &cs_info);
- return size <= cs_info.free;
+ return size <= r300->rws->get_cs_free_dwords(r300->rws);
}
void r300_finish(struct r300_context *r300)
unsigned max_index = (r300render->vbo_size - r300render->vbo_offset) /
(r300render->r300->vertex_info.size * 4) - 1;
unsigned short_count;
- struct r300_cs_info cs_info;
+ unsigned free_dwords;
CS_LOCALS(r300);
NULL, 256, 0, 0, &end_cs_dwords);
while (count) {
- r300->rws->get_cs_info(r300->rws, &cs_info);
+ free_dwords = r300->rws->get_cs_free_dwords(r300->rws);
- short_count = MIN2(count, (cs_info.free - end_cs_dwords - 6) * 2);
+ short_count = MIN2(count, (free_dwords - end_cs_dwords - 6) * 2);
BEGIN_CS(6 + (short_count+1)/2);
OUT_CS_REG(R300_GA_COLOR_CONTROL,
R300_REF_HW = 2
};
-struct r300_cs_info {
- /* In DWORDs. */
- unsigned used;
- unsigned free;
- unsigned capacity;
-};
-
struct r300_winsys_screen {
void (*destroy)(struct r300_winsys_screen *ws);
* Returns TRUE if a flush is required. */
boolean (*validate)(struct r300_winsys_screen* winsys);
- /* Return current CS info. */
- void (*get_cs_info)(struct r300_winsys_screen *winsys,
- struct r300_cs_info *info);
+ /* Return the number of free dwords in CS. */
+ unsigned (*get_cs_free_dwords)(struct r300_winsys_screen *winsys);
/* Start a command emit. */
void (*begin_cs)(struct r300_winsys_screen* winsys,
return TRUE;
}
-static void radeon_get_cs_info(struct r300_winsys_screen *rws,
- struct r300_cs_info *info)
+static unsigned radeon_get_cs_free_dwords(struct r300_winsys_screen *rws)
{
struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
struct radeon_cs *cs = ws->cs;
- info->capacity = cs->ndw;
- info->used = cs->cdw;
- info->free = cs->ndw - cs->cdw;
+ return cs->ndw - cs->cdw;
}
static void radeon_begin_cs(struct r300_winsys_screen *rws,
ws->base.add_buffer = radeon_add_buffer;
ws->base.validate = radeon_validate;
ws->base.destroy = radeon_winsys_destroy;
- ws->base.get_cs_info = radeon_get_cs_info;
+ ws->base.get_cs_free_dwords = radeon_get_cs_free_dwords;
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;