At this commit driver skeleton is able to dump spirv and nir
[mesa.git] / src / libre-soc / vulkan / libresoc_private.h
index 0c2d1e5eea258170594364870e4842e8857d1ec4..55a9cbb609076d8543b67c7240ace0600c93622f 100644 (file)
 #include "wsi_common.h"
 #define LIBRESOC_MAX_QUEUE_FAMILIES 1 
 
+static inline gl_shader_stage
+vk_to_mesa_shader_stage(VkShaderStageFlagBits vk_stage)
+{
+       assert(__builtin_popcount(vk_stage) == 1);
+       return ffs(vk_stage) - 1;
+}
+
+static inline VkShaderStageFlagBits
+mesa_to_vk_shader_stage(gl_shader_stage mesa_stage)
+{
+       return (1 << mesa_stage);
+}
+
 static inline uint32_t
 align_u32(uint32_t v, uint32_t a)
 {
@@ -199,6 +212,14 @@ struct libresoc_pipeline_cache {
 struct libresoc_shader_binary;
 struct libresoc_shader_variant;
 
+struct libresoc_pipeline {
+       struct vk_object_base                         base;
+       struct libresoc_device *                          device;
+
+
+       VkShaderStageFlags                           active_stages;
+
+};
 void
 libresoc_pipeline_cache_init(struct libresoc_pipeline_cache *cache,
                         struct libresoc_device *device);
@@ -478,6 +499,12 @@ bool libresoc_layout_dcc_compressed(const struct libresoc_device *device,
                                VkImageLayout layout,
                                bool in_render_loop,
                                unsigned queue_mask);
+VkResult
+libresoc_graphics_pipeline_create(VkDevice device,
+                             VkPipelineCache cache,
+                             const VkGraphicsPipelineCreateInfo *pCreateInfo,
+                             const VkAllocationCallbacks *alloc,
+                             VkPipeline *pPipeline);
 
 #define libresoc_printflike(a, b) __attribute__((__format__(__printf__, a, b)))
 
@@ -542,13 +569,13 @@ LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_fence, VkFence)
 LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_image, VkImage)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_image_view, VkImageView);
 LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_pipeline_cache, VkPipelineCache)
-//LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_pipeline, VkPipeline)
+LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_pipeline, VkPipeline)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_pipeline_layout, VkPipelineLayout)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_query_pool, VkQueryPool)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_render_pass, VkRenderPass)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_sampler, VkSampler)
 //LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_sampler_ycbcr_conversion, VkSamplerYcbcrConversion)
-//LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_shader_module, VkShaderModule)
+LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_shader_module, VkShaderModule)
 LIBRESOC_DEFINE_NONDISP_HANDLE_CASTS(libresoc_semaphore, VkSemaphore)
 
 #endif /* LIBRESOC_PRIVATE_H */