diff options
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/r300/r300_texture.c | 18 | ||||
-rw-r--r-- | src/gallium/drivers/r300/r300_texture.h | 8 | ||||
-rw-r--r-- | src/gallium/drivers/r300/r300_winsys.h | 4 |
3 files changed, 30 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index 8251a597eab..b3425587e38 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -186,3 +186,21 @@ void r300_init_screen_texture_functions(struct pipe_screen* screen) screen->tex_surface_release = r300_tex_surface_release; screen->texture_blanket = r300_texture_blanket; } + +boolean r300_get_texture_buffer(struct pipe_texture* texture, + struct pipe_buffer** buffer, + unsigned* stride) +{ + struct r300_texture* tex = (struct r300_texture*)texture; + if (!tex) { + return FALSE; + } + + pipe_buffer_reference(texture->screen, buffer, tex->buffer); + + if (stride) { + *stride = tex->stride; + } + + return TRUE; +} diff --git a/src/gallium/drivers/r300/r300_texture.h b/src/gallium/drivers/r300/r300_texture.h index 7964229a94f..27f5ea1eb7b 100644 --- a/src/gallium/drivers/r300/r300_texture.h +++ b/src/gallium/drivers/r300/r300_texture.h @@ -31,4 +31,12 @@ void r300_init_screen_texture_functions(struct pipe_screen* screen); +#ifndef R300_WINSYS_H + +boolean r300_get_texture_buffer(struct pipe_texture* texture, + struct pipe_buffer** buffer, + unsigned* stride); + +#endif /* R300_WINSYS_H */ + #endif /* R300_TEXTURE_H */ diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h index b7341c4f3ad..8c9578de514 100644 --- a/src/gallium/drivers/r300/r300_winsys.h +++ b/src/gallium/drivers/r300/r300_winsys.h @@ -92,4 +92,8 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, } #endif +boolean r300_get_texture_buffer(struct pipe_texture* texture, + struct pipe_buffer** buffer, + unsigned* stride); + #endif /* R300_WINSYS_H */ |