llvmpipe: assorted clean-ups in texture code
This commit is contained in:
parent
2ba1c8189a
commit
4414a1a73c
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue