#include "ilo_common.h"
+enum ilo_kernel_param {
+ ILO_KERNEL_INPUT_COUNT,
+ ILO_KERNEL_OUTPUT_COUNT,
+ ILO_KERNEL_URB_DATA_START_REG,
+ ILO_KERNEL_SKIP_CBUF0_UPLOAD,
+ ILO_KERNEL_PCB_CBUF0_SIZE,
+
+ ILO_KERNEL_VS_INPUT_INSTANCEID,
+ ILO_KERNEL_VS_INPUT_VERTEXID,
+ ILO_KERNEL_VS_INPUT_EDGEFLAG,
+ ILO_KERNEL_VS_PCB_UCP_SIZE,
+ ILO_KERNEL_VS_GEN6_SO,
+ ILO_KERNEL_VS_GEN6_SO_START_REG,
+ ILO_KERNEL_VS_GEN6_SO_POINT_OFFSET,
+ ILO_KERNEL_VS_GEN6_SO_LINE_OFFSET,
+ ILO_KERNEL_VS_GEN6_SO_TRI_OFFSET,
+
+ ILO_KERNEL_GS_DISCARD_ADJACENCY,
+ ILO_KERNEL_GS_GEN6_SVBI_POST_INC,
+
+ ILO_KERNEL_FS_INPUT_Z,
+ ILO_KERNEL_FS_INPUT_W,
+ ILO_KERNEL_FS_OUTPUT_Z,
+ ILO_KERNEL_FS_USE_KILL,
+ ILO_KERNEL_FS_BARYCENTRIC_INTERPOLATIONS,
+ ILO_KERNEL_FS_DISPATCH_16_OFFSET,
+
+ ILO_KERNEL_PARAM_COUNT,
+};
+
+struct ilo_kernel_routing {
+ uint32_t const_interp_enable;
+ uint32_t point_sprite_enable;
+ unsigned source_skip, source_len;
+
+ bool swizzle_enable;
+ uint16_t swizzles[16];
+};
+
struct intel_bo;
struct ilo_context;
+struct ilo_rasterizer_state;
struct ilo_shader_cache;
struct ilo_shader_state;
+struct ilo_shader_cso;
struct ilo_shader_cache *
ilo_shader_cache_create(void);
bool incremental);
struct ilo_shader_state *
-ilo_shader_state_create(const struct ilo_context *ilo,
- int type, const void *templ);
+ilo_shader_create_vs(const struct ilo_dev_info *dev,
+ const struct pipe_shader_state *state,
+ const struct ilo_context *precompile);
+
+struct ilo_shader_state *
+ilo_shader_create_gs(const struct ilo_dev_info *dev,
+ const struct pipe_shader_state *state,
+ const struct ilo_context *precompile);
+
+struct ilo_shader_state *
+ilo_shader_create_fs(const struct ilo_dev_info *dev,
+ const struct pipe_shader_state *state,
+ const struct ilo_context *precompile);
+
+struct ilo_shader_state *
+ilo_shader_create_cs(const struct ilo_dev_info *dev,
+ const struct pipe_compute_state *state,
+ const struct ilo_context *precompile);
void
-ilo_shader_state_destroy(struct ilo_shader_state *state);
+ilo_shader_destroy(struct ilo_shader_state *shader);
+
+int
+ilo_shader_get_type(const struct ilo_shader_state *shader);
+
+bool
+ilo_shader_select_kernel(struct ilo_shader_state *shader,
+ const struct ilo_context *ilo,
+ uint32_t dirty);
+
+bool
+ilo_shader_select_kernel_routing(struct ilo_shader_state *shader,
+ const struct ilo_shader_state *source,
+ const struct ilo_rasterizer_state *rasterizer);
+
+uint32_t
+ilo_shader_get_kernel_offset(const struct ilo_shader_state *shader);
+
+int
+ilo_shader_get_kernel_param(const struct ilo_shader_state *shader,
+ enum ilo_kernel_param param);
+
+const struct ilo_shader_cso *
+ilo_shader_get_kernel_cso(const struct ilo_shader_state *shader);
+
+const struct pipe_stream_output_info *
+ilo_shader_get_kernel_so_info(const struct ilo_shader_state *shader);
+
+const struct ilo_kernel_routing *
+ilo_shader_get_kernel_routing(const struct ilo_shader_state *shader);
#endif /* ILO_SHADER_H */