radv: Fix various non-critical integer overflows
[mesa.git] / src / amd / vulkan / radv_private.h
index 8c016bb4d4fe1a4afcd0b629ab89366795728092..90012cdf45ab1d68d818dea30b81e8cdd9fb9e3c 100644 (file)
@@ -334,6 +334,8 @@ struct radv_instance {
 
        uint32_t                                    apiVersion;
 
+       char *                                      applicationName;
+       uint32_t                                    applicationVersion;
        char *                                      engineName;
        uint32_t                                    engineVersion;
 
@@ -739,7 +741,7 @@ struct radv_queue {
 struct radv_bo_list {
        struct radv_winsys_bo_list list;
        unsigned capacity;
-       pthread_mutex_t mutex;
+       pthread_rwlock_t rwlock;
 };
 
 VkResult radv_bo_list_add(struct radv_device *device,
@@ -844,13 +846,36 @@ struct radv_device {
        void *thread_trace_ptr;
        uint32_t thread_trace_buffer_size;
        int thread_trace_start_frame;
+       char *thread_trace_trigger_file;
+
+       /* Trap handler. */
+       struct radv_shader_variant *trap_handler_shader;
+       struct radeon_winsys_bo *tma_bo; /* Trap Memory Address */
+       uint32_t *tma_ptr;
 
        /* Overallocation. */
        bool overallocation_disallowed;
        uint64_t allocated_memory_size[VK_MAX_MEMORY_HEAPS];
        mtx_t overallocation_mutex;
+
+       /* Track the number of device loss occurs. */
+       int lost;
 };
 
+VkResult _radv_device_set_lost(struct radv_device *device,
+                              const char *file, int line,
+                              const char *msg, ...)
+       radv_printflike(4, 5);
+
+#define radv_device_set_lost(dev, ...) \
+       _radv_device_set_lost(dev, __FILE__, __LINE__, __VA_ARGS__)
+
+static inline bool
+radv_device_is_lost(const struct radv_device *device)
+{
+       return unlikely(p_atomic_read(&device->lost));
+}
+
 struct radv_device_memory {
        struct vk_object_base                        base;
        struct radeon_winsys_bo                      *bo;
@@ -1430,7 +1455,7 @@ bool radv_cmd_buffer_uses_mec(struct radv_cmd_buffer *cmd_buffer);
 
 void si_emit_graphics(struct radv_device *device,
                      struct radeon_cmdbuf *cs);
-void si_emit_compute(struct radv_physical_device *physical_device,
+void si_emit_compute(struct radv_device *device,
                      struct radeon_cmdbuf *cs);
 
 void cik_create_gfx_config(struct radv_device *device);
@@ -2552,7 +2577,7 @@ si_conv_gl_prim_to_vertices(unsigned gl_prim)
        case 0xc: /* GL_TRIANGLES_ADJACENCY_ARB */
                return 6;
        case 7: /* GL_QUADS */
-               return V_028A6C_OUTPRIM_TYPE_TRISTRIP;
+               return V_028A6C_TRISTRIP;
        default:
                assert(0);
                return 0;