radv: display an error message if the winsys init failed
[mesa.git] / src / amd / vulkan / radv_private.h
index 7a51afcbccc9a3a249e872dc30c95e02630e58a9..6b54a8ad60011d04923494e156b45fe40dcf07bd 100644 (file)
@@ -106,25 +106,6 @@ struct gfx10_format {
 
 #include "gfx10_format_table.h"
 
-enum radv_mem_heap {
-       RADV_MEM_HEAP_VRAM,
-       RADV_MEM_HEAP_VRAM_CPU_ACCESS,
-       RADV_MEM_HEAP_GTT,
-       RADV_MEM_HEAP_COUNT
-};
-
-enum radv_mem_type {
-       RADV_MEM_TYPE_VRAM,
-       RADV_MEM_TYPE_GTT_WRITE_COMBINE,
-       RADV_MEM_TYPE_VRAM_CPU_ACCESS,
-       RADV_MEM_TYPE_GTT_CACHED,
-       RADV_MEM_TYPE_VRAM_UNCACHED,
-       RADV_MEM_TYPE_GTT_WRITE_COMBINE_VRAM_UNCACHED,
-       RADV_MEM_TYPE_VRAM_CPU_ACCESS_UNCACHED,
-       RADV_MEM_TYPE_GTT_CACHED_VRAM_UNCACHED,
-       RADV_MEM_TYPE_COUNT
-};
-
 enum radv_secure_compile_type {
        RADV_SC_TYPE_INIT_SUCCESS,
        RADV_SC_TYPE_INIT_FAILURE,
@@ -303,6 +284,9 @@ void *radv_lookup_entrypoint(const char *name);
 struct radv_physical_device {
        VK_LOADER_DATA                              _loader_data;
 
+       /* Link in radv_instance::physical_devices */
+       struct list_head                            link;
+
        struct radv_instance *                       instance;
 
        struct radeon_winsys *ws;
@@ -347,7 +331,8 @@ struct radv_physical_device {
        struct disk_cache *                          disk_cache;
 
        VkPhysicalDeviceMemoryProperties memory_properties;
-       enum radv_mem_type mem_type_indices[RADV_MEM_TYPE_COUNT];
+       enum radeon_bo_domain memory_domains[VK_MAX_MEMORY_TYPES];
+       enum radeon_bo_flag memory_flags[VK_MAX_MEMORY_TYPES];
 
        drmPciBusInfo bus_info;
 
@@ -360,8 +345,6 @@ struct radv_instance {
        VkAllocationCallbacks                       alloc;
 
        uint32_t                                    apiVersion;
-       int                                         physicalDeviceCount;
-       struct radv_physical_device                 physicalDevices[RADV_MAX_DRM_DEVICES];
 
        char *                                      engineName;
        uint32_t                                    engineVersion;
@@ -377,6 +360,9 @@ struct radv_instance {
        struct radv_physical_device_dispatch_table   physical_device_dispatch;
        struct radv_device_dispatch_table            device_dispatch;
 
+       bool                                        physical_devices_enumerated;
+       struct list_head                            physical_devices;
+
        struct driOptionCache dri_options;
        struct driOptionCache available_dri_options;
 };
@@ -878,6 +864,11 @@ struct radv_device {
        void *thread_trace_ptr;
        uint32_t thread_trace_buffer_size;
        int thread_trace_start_frame;
+
+       /* Overallocation. */
+       bool overallocation_disallowed;
+       uint64_t allocated_memory_size[VK_MAX_MEMORY_HEAPS];
+       mtx_t overallocation_mutex;
 };
 
 struct radv_device_memory {
@@ -885,8 +876,8 @@ struct radv_device_memory {
        /* for dedicated allocations */
        struct radv_image                            *image;
        struct radv_buffer                           *buffer;
-       uint32_t                                     type_index;
-       VkDeviceSize                                 map_size;
+       uint32_t                                     heap_index;
+       uint64_t                                     alloc_size;
        void *                                       map;
        void *                                       user_ptr;
 
@@ -1369,7 +1360,7 @@ struct radv_cmd_buffer {
        VkShaderStageFlags push_constant_stages;
        struct radv_descriptor_set meta_push_descriptors;
 
-       struct radv_descriptor_state descriptors[VK_PIPELINE_BIND_POINT_RANGE_SIZE];
+       struct radv_descriptor_state descriptors[MAX_BIND_POINTS];
 
        struct radv_cmd_buffer_upload upload;
 
@@ -2379,7 +2370,8 @@ struct radv_shader_variant_key;
 void radv_nir_shader_info_pass(const struct nir_shader *nir,
                               const struct radv_pipeline_layout *layout,
                               const struct radv_shader_variant_key *key,
-                              struct radv_shader_info *info);
+                              struct radv_shader_info *info,
+                              bool use_aco);
 
 void radv_nir_shader_info_init(struct radv_shader_info *info);