llvmpipe: assorted clean-ups in texture code

This commit is contained in:
Brian Paul 2010-01-14 14:19:16 -07:00
parent 2ba1c8189a
commit 4414a1a73c
3 changed files with 29 additions and 33 deletions

View File

@ -166,7 +166,6 @@ llvmpipe_create( struct pipe_screen *screen )
llvmpipe->pipe.is_buffer_referenced = llvmpipe_is_buffer_referenced;
llvmpipe_init_query_funcs( llvmpipe );
llvmpipe_init_texture_funcs( llvmpipe );
/*
* Create drawing context and plug our rendering stage into it.

View File

@ -46,21 +46,19 @@
#include "lp_winsys.h"
/* Simple, maximally packed layout.
*/
/* Conventional allocation path for non-display textures:
/**
* Conventional allocation path for non-display textures:
* Simple, maximally packed layout.
*/
static boolean
llvmpipe_texture_layout(struct llvmpipe_screen *screen,
struct llvmpipe_texture * lpt)
struct llvmpipe_texture *lpt)
{
struct pipe_texture *pt = &lpt->base;
unsigned level;
unsigned width = pt->width0;
unsigned height = pt->height0;
unsigned depth = pt->depth0;
unsigned buffer_size = 0;
for (level = 0; level <= pt->last_level; level++) {
@ -79,7 +77,7 @@ llvmpipe_texture_layout(struct llvmpipe_screen *screen,
((pt->target == PIPE_TEXTURE_CUBE) ? 6 : depth) *
lpt->stride[level]);
width = u_minify(width, 1);
width = u_minify(width, 1);
height = u_minify(height, 1);
depth = u_minify(depth, 1);
}
@ -89,9 +87,11 @@ llvmpipe_texture_layout(struct llvmpipe_screen *screen,
return lpt->data != NULL;
}
static boolean
llvmpipe_displaytarget_layout(struct llvmpipe_screen *screen,
struct llvmpipe_texture * lpt)
struct llvmpipe_texture *lpt)
{
struct llvmpipe_winsys *winsys = screen->winsys;
@ -106,9 +106,6 @@ llvmpipe_displaytarget_layout(struct llvmpipe_screen *screen,
}
static struct pipe_texture *
llvmpipe_texture_create(struct pipe_screen *_screen,
const struct pipe_texture *templat)
@ -125,7 +122,7 @@ llvmpipe_texture_create(struct pipe_screen *_screen,
/* XXX: The xlib state tracker is brain-dead and will request
* PIPE_FORMAT_Z16_UNORM no matter how much we tell it we don't support it.
*/
if(lpt->base.format == PIPE_FORMAT_Z16_UNORM)
if (lpt->base.format == PIPE_FORMAT_Z16_UNORM)
lpt->base.format = PIPE_FORMAT_Z32_UNORM;
if (lpt->base.tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET |
@ -189,12 +186,15 @@ llvmpipe_texture_destroy(struct pipe_texture *pt)
struct llvmpipe_screen *screen = llvmpipe_screen(pt->screen);
struct llvmpipe_texture *lpt = llvmpipe_texture(pt);
if(lpt->dt) {
if (lpt->dt) {
/* display target */
struct llvmpipe_winsys *winsys = screen->winsys;
winsys->displaytarget_destroy(winsys, lpt->dt);
}
else
else {
/* regular texture */
align_free(lpt->data);
}
FREE(lpt);
}
@ -356,7 +356,8 @@ llvmpipe_transfer_map( struct pipe_screen *_screen,
lpt = llvmpipe_texture(transfer->texture);
format = lpt->base.format;
if(lpt->dt) {
if (lpt->dt) {
/* display target */
struct llvmpipe_winsys *winsys = screen->winsys;
map = winsys->displaytarget_map(winsys, lpt->dt,
@ -364,14 +365,15 @@ llvmpipe_transfer_map( struct pipe_screen *_screen,
if (map == NULL)
return NULL;
}
else
else {
/* regular texture */
map = lpt->data;
}
/* May want to different things here depending on read/write nature
* of the map:
*/
if (transfer->texture && (transfer->usage & PIPE_TRANSFER_WRITE))
{
if (transfer->texture && (transfer->usage & PIPE_TRANSFER_WRITE)) {
/* Do something to notify sharing contexts of a texture change.
*/
screen->timestamp++;
@ -386,28 +388,23 @@ llvmpipe_transfer_map( struct pipe_screen *_screen,
static void
llvmpipe_transfer_unmap(struct pipe_screen *_screen,
llvmpipe_transfer_unmap(struct pipe_screen *screen,
struct pipe_transfer *transfer)
{
struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
struct llvmpipe_screen *lp_screen = llvmpipe_screen(screen);
struct llvmpipe_texture *lpt;
assert(transfer->texture);
lpt = llvmpipe_texture(transfer->texture);
if(lpt->dt) {
struct llvmpipe_winsys *winsys = screen->winsys;
if (lpt->dt) {
/* display target */
struct llvmpipe_winsys *winsys = lp_screen->winsys;
winsys->displaytarget_unmap(winsys, lpt->dt);
}
}
void
llvmpipe_init_texture_funcs(struct llvmpipe_context *lp)
{
}
void
llvmpipe_init_screen_texture_funcs(struct pipe_screen *screen)
{

View File

@ -37,6 +37,7 @@ struct pipe_screen;
struct llvmpipe_context;
struct llvmpipe_displaytarget;
struct llvmpipe_texture
{
struct pipe_texture base;
@ -58,6 +59,7 @@ struct llvmpipe_texture
unsigned timestamp;
};
struct llvmpipe_transfer
{
struct pipe_transfer base;
@ -73,6 +75,7 @@ llvmpipe_texture(struct pipe_texture *pt)
return (struct llvmpipe_texture *) pt;
}
static INLINE const struct llvmpipe_texture *
llvmpipe_texture_const(const struct pipe_texture *pt)
{
@ -87,11 +90,8 @@ llvmpipe_transfer(struct pipe_transfer *pt)
}
extern void
llvmpipe_init_texture_funcs( struct llvmpipe_context *llvmpipe );
extern void
llvmpipe_init_screen_texture_funcs(struct pipe_screen *screen);
#endif /* LP_TEXTURE */
#endif /* LP_TEXTURE_H */