#ifndef H_LIMA_CONTEXT
#define H_LIMA_CONTEXT
+#include "util/list.h"
#include "util/slab.h"
-#include "util/u_dynarray.h"
#include "pipe/p_context.h"
#include "pipe/p_state.h"
int shift_min;
};
-struct lima_context_clear {
- unsigned buffers;
- uint32_t color_8pc;
- uint32_t depth;
- uint32_t stencil;
- uint64_t color_16pc;
-};
-
struct lima_depth_stencil_alpha_state {
struct pipe_depth_stencil_alpha_state base;
};
};
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 {
LIMA_CONTEXT_DIRTY_TEXTURES = (1 << 14),
} dirty;
- unsigned resolve;
-
struct u_upload_mgr *uploader;
struct blitter_context *blitter;
struct lima_context_framebuffer framebuffer;
struct lima_context_viewport_state viewport;
struct pipe_scissor_state scissor;
- struct pipe_scissor_state damage_rect;
- struct lima_context_clear clear;
struct lima_vs_shader_state *vs;
struct lima_fs_shader_state *fs;
struct lima_vertex_element_state *vertex_elements;
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];
- struct util_dynarray vs_cmd_array;
- struct util_dynarray plbu_cmd_array;
- struct util_dynarray plbu_cmd_head;
-
- /* 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];
struct pipe_debug_callback debug;
- int pp_max_stack_size;
-
unsigned index_offset;
struct lima_resource *index_res;
};
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