zink: implement streamout and xfb handling in ntv
[mesa.git] / src / gallium / drivers / zink / zink_compiler.h
index 3e9b640a3a8a81f306fa1fab946296b9c602a363..73bdebec9ddf1c91f70b4f9393b0cfa40664e2cb 100644 (file)
 #include "pipe/p_defines.h"
 #include "pipe/p_state.h"
 
+#include "compiler/shader_info.h"
+
 #include <vulkan/vulkan.h>
 
 struct pipe_screen;
 struct zink_screen;
+struct zink_gfx_program;
 
 struct nir_shader_compiler_options;
 struct nir_shader;
 
+struct set;
+
 struct tgsi_token;
 
 const void *
@@ -48,16 +53,20 @@ zink_tgsi_to_nir(struct pipe_screen *screen, const struct tgsi_token *tokens);
 struct zink_shader {
    VkShaderModule shader_module;
 
+   shader_info info;
+
    struct {
       int index;
       int binding;
       VkDescriptorType type;
    } bindings[PIPE_MAX_CONSTANT_BUFFERS + PIPE_MAX_SHADER_SAMPLER_VIEWS];
    size_t num_bindings;
+   struct set *programs;
 };
 
 struct zink_shader *
-zink_compile_nir(struct zink_screen *screen, struct nir_shader *nir);
+zink_compile_nir(struct zink_screen *screen, struct nir_shader *nir,
+                 const struct pipe_stream_output_info *so_info);
 
 void
 zink_shader_free(struct zink_screen *screen, struct zink_shader *shader);