vk/meta: Clean up temporary objects
[mesa.git] / src / vulkan / private.h
index 65b81b3e918dd9a523d7f9c53bf9849f790bf73f..873efaa48f511a9d9ed851910d830dab428bc684 100644 (file)
@@ -234,9 +234,6 @@ struct anv_state_stream {
 
 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);
@@ -305,6 +302,7 @@ struct anv_meta_state {
 
    struct {
       VkPipeline                                pipeline;
+      VkPipelineLayout                          pipeline_layout;
       VkDescriptorSetLayout                     ds_layout;
    } blit;
 
@@ -331,7 +329,6 @@ struct anv_device {
 
     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;
@@ -619,7 +616,6 @@ struct anv_cmd_buffer {
    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;
 
@@ -743,9 +739,26 @@ struct anv_image {
    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;
@@ -773,6 +786,9 @@ void anv_color_attachment_view_init(struct anv_surface_view *view,
                                     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];
 };
@@ -817,6 +833,7 @@ struct anv_render_pass {
 };
 
 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,