#ifndef H_LIMA_CONTEXT
#define H_LIMA_CONTEXT
+#include "util/list.h"
#include "util/slab.h"
#include "pipe/p_context.h"
};
struct lima_ctx_plb_pp_stream_key {
- uint32_t plb_index;
- uint32_t tiled_w;
- uint32_t tiled_h;
+ uint16_t plb_index;
+ /* Coordinates are in tiles */
+ uint16_t minx, miny, maxx, maxy;
+ /* FB params */
+ uint16_t shift_w, shift_h;
+ uint16_t block_w, block_h;
};
struct lima_ctx_plb_pp_stream {
+ struct list_head lru_list;
struct lima_ctx_plb_pp_stream_key key;
- uint32_t refcnt;
struct lima_bo *bo;
- uint32_t offset[4];
+ uint32_t offset[8];
};
struct lima_pp_stream_state {
uint32_t gp_output_point_size_offt;
struct hash_table *plb_pp_stream;
+ struct list_head plb_pp_stream_lru_list;
uint32_t plb_index;
+ size_t plb_stream_cache_size;
struct lima_ctx_buff_state buffer_state[lima_ctx_buff_num];
- /* current submit */
- struct lima_submit *submit;
+ /* current job */
+ struct lima_job *job;
- /* map from lima_submit_key to lima_submit */
- struct hash_table *submits;
+ /* map from lima_job_key to lima_job */
+ struct hash_table *jobs;
- /* map from pipe_resource to lima_submit which write to it */
- struct hash_table *write_submits;
+ /* map from pipe_resource to lima_job which write to it */
+ struct hash_table *write_jobs;
int in_sync_fd;
uint32_t in_sync[2];
lima_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags);
void lima_flush(struct lima_context *ctx);
-void lima_flush_submit_accessing_bo(
+void lima_flush_job_accessing_bo(
struct lima_context *ctx, struct lima_bo *bo, bool write);
-void lima_flush_previous_submit_writing_resource(
+void lima_flush_previous_job_writing_resource(
struct lima_context *ctx, struct pipe_resource *prsc);
#endif