struct draw_stage;
struct draw_vertex_shader;
struct draw_geometry_shader;
+struct draw_tess_ctrl_shader;
+struct draw_tess_eval_shader;
struct draw_fragment_shader;
struct tgsi_sampler;
struct tgsi_image;
int internal_offset;
};
+bool draw_has_llvm(void);
+
struct draw_context *draw_create( struct pipe_context *pipe );
#ifdef LLVM_AVAILABLE
void draw_set_zs_format(struct draw_context *draw, enum pipe_format format);
+/* for TGSI constants are 4 * sizeof(float), but for NIR they need to be sizeof(float); */
+void draw_set_constant_buffer_stride(struct draw_context *draw, unsigned num_bytes);
+
boolean
draw_install_aaline_stage(struct draw_context *draw, struct pipe_context *pipe);
uint
draw_total_gs_outputs(const struct draw_context *draw);
+uint
+draw_total_tcs_outputs(const struct draw_context *draw);
+
+uint
+draw_total_tes_outputs(const struct draw_context *draw);
+
void
draw_texture_sampler(struct draw_context *draw,
enum pipe_shader_type shader_type,
unsigned sview_idx,
uint32_t width, uint32_t height, uint32_t depth,
uint32_t first_level, uint32_t last_level,
+ uint32_t num_samples,
+ uint32_t sample_stride,
const void *base,
uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS],
uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS],
uint32_t width, uint32_t height, uint32_t depth,
const void *base_ptr,
uint32_t row_stride,
- uint32_t img_stride);
+ uint32_t img_stride,
+ uint32_t num_samples,
+ uint32_t sample_stride);
/*
* Vertex shader functions
void draw_delete_geometry_shader(struct draw_context *draw,
struct draw_geometry_shader *dvs);
+/*
+ * Tess shader functions
+ */
+struct draw_tess_ctrl_shader *
+draw_create_tess_ctrl_shader(struct draw_context *draw,
+ const struct pipe_shader_state *shader);
+void draw_bind_tess_ctrl_shader(struct draw_context *draw,
+ struct draw_tess_ctrl_shader *dvs);
+void draw_delete_tess_ctrl_shader(struct draw_context *draw,
+ struct draw_tess_ctrl_shader *dvs);
+struct draw_tess_eval_shader *
+draw_create_tess_eval_shader(struct draw_context *draw,
+ const struct pipe_shader_state *shader);
+void draw_bind_tess_eval_shader(struct draw_context *draw,
+ struct draw_tess_eval_shader *dvs);
+void draw_delete_tess_eval_shader(struct draw_context *draw,
+ struct draw_tess_eval_shader *dvs);
+void draw_set_tess_state(struct draw_context *draw,
+ const float default_outer_level[4],
+ const float default_inner_level[2]);
/*
* Vertex data functions
void draw_collect_pipeline_statistics(struct draw_context *draw,
boolean enable);
+void draw_collect_primitives_generated(struct draw_context *draw,
+ bool eanble);
+
/*******************************************************************************
* Draw pipeline
*/
boolean
draw_get_option_use_llvm(void);
+struct lp_cached_code;
+void
+draw_set_disk_cache_callbacks(struct draw_context *draw,
+ void *data_cookie,
+ void (*find_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]),
+ void (*insert_shader)(void *cookie,
+ struct lp_cached_code *cache,
+ unsigned char ir_sha1_cache_key[20]));
#endif /* DRAW_CONTEXT_H */