/* Parent class */
struct u_resource b;
+ enum r300_buffer_domain domain;
+
/* Offsets into the buffer. */
unsigned offset[R300_MAX_TEXTURE_LEVELS];
return ret;
}
-static struct r300_winsys_buffer *
-r300_winsys_buffer_create(struct r300_screen *r300screen,
- unsigned alignment,
- unsigned usage,
- unsigned size)
-{
- struct r300_winsys_screen *rws = r300screen->rws;
- struct r300_winsys_buffer *buf;
-
- buf = rws->buffer_create(rws, alignment, usage, R300_DOMAIN_GTT, size);
- return buf;
-}
-
static void r300_winsys_buffer_destroy(struct r300_screen *r300screen,
struct r300_buffer *rbuf)
{
rws->buffer_reference(rws, &rbuf->buf, NULL);
rbuf->num_ranges = 0;
- rbuf->buf = r300_winsys_buffer_create(r300screen,
- 16,
- rbuf->b.b.bind, /* XXX */
+ rbuf->buf = r300screen->rws->buffer_create(r300screen->rws, 16,
+ rbuf->b.b.bind,
+ rbuf->domain,
rbuf->b.b.width0);
break;
}
if (rbuf->b.b.bind & R300_BIND_OQBO)
alignment = 4096;
- rbuf->buf = r300_winsys_buffer_create(r300screen,
+ rbuf->domain = R300_DOMAIN_GTT;
+
+ rbuf->buf = r300screen->rws->buffer_create(r300screen->rws,
alignment,
rbuf->b.b.bind,
+ rbuf->domain,
rbuf->b.b.width0);
if (!rbuf->buf)
rbuf->b.b.width0 = bytes;
rbuf->b.b.height0 = 1;
rbuf->b.b.depth0 = 1;
+ rbuf->domain = R300_DOMAIN_GTT;
rbuf->user_buffer = ptr;
return &rbuf->b.b;
struct r300_winsys_buffer *buf;
+ enum r300_buffer_domain domain;
+
void *user_buffer;
struct r300_buffer_range ranges[R300_BUFFER_MAX_RANGES];
unsigned num_ranges;
struct r300_texture* tex = CALLOC_STRUCT(r300_texture);
struct r300_screen* rscreen = r300_screen(screen);
struct r300_winsys_screen *rws = (struct r300_winsys_screen *)screen->winsys;
- enum r300_buffer_domain domain;
if (!tex) {
return NULL;
base->width0, base->height0, base->depth0, base->last_level,
util_format_short_name(base->format));
- domain = base->flags & R300_RESOURCE_FLAG_TRANSFER ? R300_DOMAIN_GTT :
- R300_DOMAIN_VRAM;
+ tex->domain = base->flags & R300_RESOURCE_FLAG_TRANSFER ? R300_DOMAIN_GTT :
+ R300_DOMAIN_VRAM;
- tex->buffer = rws->buffer_create(rws, 2048, base->bind, domain, tex->size);
+ tex->buffer = rws->buffer_create(rws, 2048, base->bind, tex->domain,
+ tex->size);
rws->buffer_set_tiling(rws, tex->buffer,
tex->pitch[0] * util_format_get_blocksize(tex->b.b.format),
tex->b.vtbl = &r300_texture_vtbl;
pipe_reference_init(&tex->b.b.reference, 1);
tex->b.b.screen = screen;
+ tex->domain = R300_DOMAIN_VRAM;
tex->stride_override = stride;