llvmpipe: more bin functions for create/destroy/queries

This commit is contained in:
Brian Paul 2009-12-09 12:22:12 -07:00
parent 7f457acabc
commit 88e62b33dc
2 changed files with 56 additions and 0 deletions

View file

@ -29,6 +29,25 @@
#include "lp_bin.h"
struct lp_bins *
lp_bins_create(void)
{
struct lp_bins *bins = CALLOC_STRUCT(lp_bins);
if (bins)
lp_init_bins(bins);
return bins;
}
void
lp_bins_destroy(struct lp_bins *bins)
{
lp_reset_bins(bins);
lp_free_bin_data(bins);
FREE(bins);
}
void
lp_init_bins(struct lp_bins *bins)
{
@ -147,6 +166,34 @@ lp_bin_new_data_block( struct data_block_list *list )
}
/** Return number of bytes used for bin data */
unsigned
lp_bin_data_size( const struct lp_bins *bins )
{
unsigned size = 0;
const struct data_block *block;
for (block = bins->data.head; block; block = block->next) {
size += block->used;
}
return size;
}
/** Return number of bytes used for a tile bin */
unsigned
lp_bin_cmd_size( const struct lp_bins *bins, unsigned x, unsigned y )
{
struct cmd_bin *bin = lp_get_bin((struct lp_bins *) bins, x, y);
const struct cmd_block *cmd;
unsigned size = 0;
for (cmd = bin->commands.head; cmd; cmd = cmd->next) {
size += (cmd->count *
(sizeof(lp_rast_cmd) + sizeof(union lp_rast_cmd_arg)));
}
return size;
}
/**
* Return last command in the bin
*/

View file

@ -120,6 +120,11 @@ struct lp_bins {
struct lp_bins *lp_bins_create(void);
void lp_bins_destroy(struct lp_bins *bins);
void lp_init_bins(struct lp_bins *bins);
void lp_reset_bins(struct lp_bins *bins );
@ -134,6 +139,10 @@ void lp_bin_new_data_block( struct data_block_list *list );
void lp_bin_new_cmd_block( struct cmd_block_list *list );
unsigned lp_bin_data_size( const struct lp_bins *bins );
unsigned lp_bin_cmd_size( const struct lp_bins *bins, unsigned x, unsigned y );
/**
* Allocate space for a command/data in the bin's data buffer.