/* Scene temporary storage is clamped to this size:
*/
-#define LP_SCENE_MAX_SIZE (9*1024*1024)
+#define LP_SCENE_MAX_SIZE (36*1024*1024)
/* The maximum amount of texture storage referenced by a scene is
- * clamped ot this size:
+ * clamped to this size:
*/
#define LP_SCENE_MAX_RESOURCE_SIZE (64*1024*1024)
uint8_t *map;
unsigned stride;
unsigned layer_stride;
+ unsigned format_bytes;
+ unsigned sample_stride;
+ unsigned nr_samples;
} zsbuf, cbufs[PIPE_MAX_COLOR_BUFS];
/* The amount of layers in the fb (minimum of all attachments) */
unsigned fb_max_layer;
+ /* fixed point sample positions. */
+ int32_t fixed_sample_pos[LP_MAX_SAMPLES][2];
+
+ /* max samples for bound framebuffer */
+ unsigned fb_max_samples;
+
/** the framebuffer to render the scene into */
struct pipe_framebuffer_state fb;
unsigned resource_reference_size;
boolean alloc_failed;
- boolean discard;
/**
* Number of active tiles in each dimension.
* This basically the framebuffer size divided by tile size
unsigned tiles_x, tiles_y;
int curr_x, curr_y; /**< for iterating over bins */
- pipe_mutex mutex;
+ mtx_t mutex;
struct cmd_bin tile[TILES_X][TILES_Y];
struct data_block_list data;
* Allocate space for a command/data in the bin's data buffer.
* Grow the block list if needed.
*/
-static INLINE void *
+static inline void *
lp_scene_alloc( struct lp_scene *scene, unsigned size)
{
struct data_block_list *list = &scene->data;
/**
* As above, but with specific alignment.
*/
-static INLINE void *
+static inline void *
lp_scene_alloc_aligned( struct lp_scene *scene, unsigned size,
unsigned alignment )
{
/* Put back data if we decide not to use it, eg. culled triangles.
*/
-static INLINE void
+static inline void
lp_scene_putback_data( struct lp_scene *scene, unsigned size)
{
struct data_block_list *list = &scene->data;
/** Return pointer to a particular tile's bin. */
-static INLINE struct cmd_bin *
+static inline struct cmd_bin *
lp_scene_get_bin(struct lp_scene *scene, unsigned x, unsigned y)
{
return &scene->tile[x][y];
/* Add a command to bin[x][y].
*/
-static INLINE boolean
+static inline boolean
lp_scene_bin_command( struct lp_scene *scene,
unsigned x, unsigned y,
unsigned cmd,
}
-static INLINE boolean
+static inline boolean
lp_scene_bin_cmd_with_state( struct lp_scene *scene,
unsigned x, unsigned y,
const struct lp_rast_state *state,
/* Add a command to all active bins.
*/
-static INLINE boolean
+static inline boolean
lp_scene_bin_everywhere( struct lp_scene *scene,
unsigned cmd,
const union lp_rast_cmd_arg arg )
}
-static INLINE unsigned
+static inline unsigned
lp_scene_get_num_bins( const struct lp_scene *scene )
{
return scene->tiles_x * scene->tiles_y;
/* Begin/end binning of a scene
*/
void
-lp_scene_begin_binning( struct lp_scene *scene,
- struct pipe_framebuffer_state *fb,
- boolean discard );
+lp_scene_begin_binning(struct lp_scene *scene,
+ struct pipe_framebuffer_state *fb);
void
-lp_scene_end_binning( struct lp_scene *scene );
+lp_scene_end_binning(struct lp_scene *scene);
/* Begin/end rasterization of a scene
lp_scene_begin_rasterization(struct lp_scene *scene);
void
-lp_scene_end_rasterization(struct lp_scene *scene );
+lp_scene_end_rasterization(struct lp_scene *scene);