case PIPE_SHADER_GEOMETRY:
draw->gs.tgsi.sampler = sampler;
break;
- case PIPE_SHADER_TESS_CTRL:
- draw->tcs.tgsi.sampler = sampler;
- break;
- case PIPE_SHADER_TESS_EVAL:
- draw->tes.tgsi.sampler = sampler;
- break;
default:
assert(0);
break;
case PIPE_SHADER_GEOMETRY:
draw->gs.tgsi.image = image;
break;
- case PIPE_SHADER_TESS_CTRL:
- draw->tcs.tgsi.image = image;
- break;
- case PIPE_SHADER_TESS_EVAL:
- draw->tes.tgsi.image = image;
- break;
default:
assert(0);
break;
case PIPE_SHADER_GEOMETRY:
draw->gs.tgsi.buffer = buffer;
break;
- case PIPE_SHADER_TESS_CTRL:
- draw->tcs.tgsi.buffer = buffer;
- break;
- case PIPE_SHADER_TESS_EVAL:
- draw->tes.tgsi.buffer = buffer;
- break;
default:
assert(0);
break;
/* Tessellation state */
struct {
struct draw_tess_ctrl_shader *tess_ctrl_shader;
-
- /** Fields for TGSI interpreter / execution */
- struct {
- struct tgsi_exec_machine *machine;
-
- struct tgsi_sampler *sampler;
- struct tgsi_image *image;
- struct tgsi_buffer *buffer;
- } tgsi;
} tcs;
struct {
uint num_tes_outputs; /**< convenience, from tess_eval_shader */
uint position_output;
uint clipvertex_output;
-
- /** Fields for TGSI interpreter / execution */
- struct {
- struct tgsi_exec_machine *machine;
-
- struct tgsi_sampler *sampler;
- struct tgsi_image *image;
- struct tgsi_buffer *buffer;
- } tgsi;
} tes;
/** Fragment shader state */
struct draw_vertex_shader *vshader = draw->vs.vertex_shader;
if (tcs_shader) {
draw_tess_ctrl_shader_run(tcs_shader,
- draw->pt.user.tcs_constants,
- draw->pt.user.tcs_constants_size,
vert_info,
prim_info,
&vshader->info,
if (tes_shader) {
draw_tess_eval_shader_run(tes_shader,
- draw->pt.user.tes_constants,
- draw->pt.user.tes_constants_size,
tcs_shader ? tcs_shader->vertices_out : draw->pt.vertices_per_patch,
vert_info,
prim_info,
* Execute tess ctrl shader.
*/
int draw_tess_ctrl_shader_run(struct draw_tess_ctrl_shader *shader,
- const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
- const unsigned constants_size[PIPE_MAX_CONSTANT_BUFFERS],
const struct draw_vertex_info *input_verts,
const struct draw_prim_info *input_prim,
const struct tgsi_shader_info *input_info,
* Execute tess eval shader.
*/
int draw_tess_eval_shader_run(struct draw_tess_eval_shader *shader,
- const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
- const unsigned constants_size[PIPE_MAX_CONSTANT_BUFFERS],
unsigned num_input_vertices_per_patch,
const struct draw_vertex_info *input_verts,
const struct draw_prim_info *input_prim,
enum mesa_prim get_tes_output_prim(struct draw_tess_eval_shader *shader);
int draw_tess_ctrl_shader_run(struct draw_tess_ctrl_shader *shader,
- const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
- const unsigned constants_size[PIPE_MAX_CONSTANT_BUFFERS],
const struct draw_vertex_info *input_verts,
const struct draw_prim_info *input_prim,
const struct tgsi_shader_info *input_info,
struct draw_prim_info *output_prims );
int draw_tess_eval_shader_run(struct draw_tess_eval_shader *shader,
- const void *constants[PIPE_MAX_CONSTANT_BUFFERS],
- const unsigned constants_size[PIPE_MAX_CONSTANT_BUFFERS],
unsigned num_input_vertices_per_patch,
const struct draw_vertex_info *input_verts,
const struct draw_prim_info *input_prim,