struct pipe_screen;
struct etna_shader_variant;
+struct etna_sampler_ts;
struct etna_index_buffer {
struct etna_reloc FE_INDEX_STREAM_BASE_ADDR;
struct pipe_transfer base;
struct pipe_resource *rsc;
void *staging;
+ void *mapped;
};
struct etna_vertexbuf_state {
enum etna_immediate_contents {
ETNA_IMMEDIATE_UNUSED = 0,
ETNA_IMMEDIATE_CONSTANT,
+ ETNA_IMMEDIATE_UNIFORM,
ETNA_IMMEDIATE_TEXRECT_SCALE_X,
ETNA_IMMEDIATE_TEXRECT_SCALE_Y,
+ ETNA_IMMEDIATE_UBO0_ADDR,
+ ETNA_IMMEDIATE_UBOMAX_ADDR = ETNA_IMMEDIATE_UBO0_ADDR + 255,
};
struct etna_shader_uniform_info {
enum etna_immediate_contents *imm_contents;
uint32_t *imm_data;
uint32_t imm_count;
- uint32_t const_count;
};
struct etna_context {
struct pipe_context base;
+ /* GPU-specific implementation to emit texture state */
+ void (*emit_texture_state)(struct etna_context *pctx);
+ /* Get sampler TS pointer for sampler view */
+ struct etna_sampler_ts *(*ts_for_sampler_view)(struct pipe_sampler_view *pview);
+
struct etna_specs specs;
struct etna_screen *screen;
struct etna_cmd_stream *stream;
uint32_t prim_hwsupport;
struct primconvert_context *primconvert;
- /* list of resources used by currently-unsubmitted renders */
- struct list_head used_resources;
-
struct slab_child_pool transfer_pool;
struct blitter_context *blitter;
struct pipe_viewport_state viewport_s;
struct pipe_scissor_state scissor_s;
- /* cached state of entire GPU */
- struct etna_3d_state gpu3d;
-
/* stats/counters */
struct {
uint64_t prims_emitted;
/* list of active hardware queries */
struct list_head active_hw_queries;
+
+ struct etna_bo *dummy_rt;
+ struct etna_reloc dummy_rt_reloc;
+
+ /* Dummy texture descriptor (if needed) */
+ struct etna_bo *dummy_desc_bo;
+ struct etna_reloc DUMMY_DESC_ADDR;
+
+ /* set of resources used by currently-unsubmitted renders */
+ struct set *used_resources_read;
+ struct set *used_resources_write;
+
+ mtx_t lock;
};
static inline struct etna_context *