mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
llvmpipe: more bin functions for create/destroy/queries
This commit is contained in:
parent
7f457acabc
commit
88e62b33dc
2 changed files with 56 additions and 0 deletions
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue