void anv_block_pool_init(struct anv_block_pool *pool,
struct anv_device *device, uint32_t block_size);
-void anv_block_pool_init_slave(struct anv_block_pool *pool,
- struct anv_block_pool *master_pool,
- uint32_t num_blocks);
void anv_block_pool_finish(struct anv_block_pool *pool);
uint32_t anv_block_pool_alloc(struct anv_block_pool *pool);
void anv_block_pool_free(struct anv_block_pool *pool, uint32_t offset);
struct {
VkPipeline pipeline;
+ VkPipelineLayout pipeline_layout;
VkDescriptorSetLayout ds_layout;
} blit;
struct anv_block_pool instruction_block_pool;
struct anv_block_pool surface_state_block_pool;
- struct anv_block_pool binding_table_block_pool;
struct anv_state_pool surface_state_pool;
struct anv_meta_state meta_state;
+ struct anv_state float_border_colors;
+ struct anv_state uint32_border_colors;
+
struct anv_compiler * compiler;
struct anv_aub_writer * aub_writer;
pthread_mutex_t mutex;
};
-struct anv_query_pool_slot {
- uint64_t begin;
- uint64_t end;
- uint64_t available;
-};
-
-struct anv_query_pool {
- struct anv_object base;
- VkQueryType type;
- uint32_t slots;
- struct anv_bo bo;
-};
-
struct anv_descriptor_slot {
- bool dynamic;
+ int8_t dynamic_slot;
uint8_t index;
-} entries[0];
+};
struct anv_descriptor_set_layout {
struct {
uint32_t count;
uint32_t num_dynamic_buffers;
+ uint32_t shader_stages;
struct anv_descriptor_slot entries[0];
};
};
#define ANV_CMD_BUFFER_PIPELINE_DIRTY (1 << 0)
-#define ANV_CMD_BUFFER_DESCRIPTOR_SET_DIRTY (1 << 1)
#define ANV_CMD_BUFFER_RS_DIRTY (1 << 2)
#define ANV_CMD_BUFFER_DS_DIRTY (1 << 3)
#define ANV_CMD_BUFFER_CB_DIRTY (1 << 4)
-
-struct anv_bindings {
- struct {
- struct anv_buffer *buffer;
- VkDeviceSize offset;
- } vb[MAX_VBS];
- struct {
- uint32_t surfaces[256];
- struct { uint32_t dwords[4]; } samplers[16];
- } descriptors[VK_NUM_SHADER_STAGE];
+struct anv_vertex_binding {
+ struct anv_buffer * buffer;
+ VkDeviceSize offset;
+};
+
+struct anv_descriptor_set_binding {
+ struct anv_descriptor_set * set;
+ uint32_t dynamic_offsets[128];
};
struct anv_cmd_buffer {
uint32_t bo_count;
struct anv_batch batch;
struct anv_batch_bo * last_batch_bo;
- struct anv_bo surface_bo;
+ struct anv_batch_bo * surface_batch_bo;
uint32_t surface_next;
struct anv_reloc_list surface_relocs;
- struct anv_state_stream binding_table_state_stream;
struct anv_state_stream surface_state_stream;
struct anv_state_stream dynamic_state_stream;
/* State required while building cmd buffer */
uint32_t vb_dirty;
uint32_t dirty;
+ uint32_t descriptors_dirty;
struct anv_pipeline * pipeline;
struct anv_framebuffer * framebuffer;
struct anv_dynamic_rs_state * rs_state;
struct anv_dynamic_ds_state * ds_state;
struct anv_dynamic_vp_state * vp_state;
struct anv_dynamic_cb_state * cb_state;
- struct anv_bindings * bindings;
- struct anv_bindings default_bindings;
+ struct anv_vertex_binding vertex_bindings[MAX_VBS];
+ struct anv_descriptor_set_binding descriptors[MAX_SETS];
};
void anv_cmd_buffer_dump(struct anv_cmd_buffer *cmd_buffer);
const struct anv_pipeline_create_info *extra,
VkPipeline *pPipeline);
-struct anv_compiler *anv_compiler_create(int fd);
+struct anv_compiler *anv_compiler_create(struct anv_device *device);
void anv_compiler_destroy(struct anv_compiler *compiler);
int anv_compiler_run(struct anv_compiler *compiler, struct anv_pipeline *pipeline);
void anv_compiler_free(struct anv_pipeline *pipeline);
struct anv_format {
+ const char * name;
uint16_t format;
uint8_t cpp;
uint8_t channels;
VkDeviceSize offset;
struct anv_swap_chain * swap_chain;
+
+ /**
+ * \name Alignment of miptree images, in units of pixels.
+ *
+ * These fields contain the actual alignment values, not the values the
+ * hardware expects. For example, if h_align is 4, then program the hardware
+ * with HALIGN_4.
+ *
+ * \see RENDER_SURFACE_STATE.SurfaceHorizontalAlignment
+ * \see RENDER_SURFACE_STATE.SurfaceVerticalAlignment
+ * \{
+ */
+ uint8_t h_align;
+ uint8_t v_align;
+ /** \} */
};
struct anv_surface_view {
+ struct anv_object base;
+
struct anv_state surface_state;
struct anv_bo * bo;
uint32_t offset;
const VkColorAttachmentViewCreateInfo* pCreateInfo,
struct anv_cmd_buffer *cmd_buffer);
+void anv_surface_view_destroy(struct anv_device *device,
+ struct anv_object *obj, VkObjectType obj_type);
+
struct anv_sampler {
uint32_t state[4];
};
};
void anv_device_init_meta(struct anv_device *device);
+void anv_device_finish_meta(struct anv_device *device);
void
anv_cmd_buffer_clear(struct anv_cmd_buffer *cmd_buffer,
struct anv_render_pass *pass);
-void
-anv_cmd_buffer_fill_render_targets(struct anv_cmd_buffer *cmd_buffer);
-
void *
anv_lookup_entrypoint(const char *name);