mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 16:10:09 +01:00
i965: Generalize computation of VUE map in preparation for GS.
This patch modifies the arguments to brw_compute_vue_map() so that they no longer bake in the assumption that we are generating a VUE map for vertex shader outputs. It also makes the function non-static so that we can re-use it for geometry shader outputs. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
b29613371c
commit
deffbbed4e
2 changed files with 9 additions and 6 deletions
|
|
@ -400,6 +400,9 @@ static inline GLuint brw_varying_to_offset(struct brw_vue_map *vue_map,
|
|||
return brw_vue_slot_to_offset(vue_map->varying_to_slot[varying]);
|
||||
}
|
||||
|
||||
void brw_compute_vue_map(struct brw_context *brw, struct brw_vue_map *vue_map,
|
||||
GLbitfield64 slots_valid, bool userclip_active);
|
||||
|
||||
|
||||
struct brw_sf_prog_data {
|
||||
GLuint urb_read_length;
|
||||
|
|
|
|||
|
|
@ -57,12 +57,11 @@ static inline void assign_vue_slot(struct brw_vue_map *vue_map,
|
|||
* prog_data->userclip and prog_data->outputs_written in their key
|
||||
* (generated by CACHE_NEW_VS_PROG).
|
||||
*/
|
||||
static void
|
||||
brw_compute_vue_map(struct brw_context *brw, struct brw_vs_compile *c,
|
||||
GLbitfield64 slots_valid)
|
||||
void
|
||||
brw_compute_vue_map(struct brw_context *brw, struct brw_vue_map *vue_map,
|
||||
GLbitfield64 slots_valid, bool userclip_active)
|
||||
{
|
||||
const struct intel_context *intel = &brw->intel;
|
||||
struct brw_vue_map *vue_map = &c->prog_data.vue_map;
|
||||
|
||||
/* Prior to Gen6, don't assign a slot for VARYING_SLOT_CLIP_VERTEX, since
|
||||
* it is unsupported.
|
||||
|
|
@ -133,7 +132,7 @@ brw_compute_vue_map(struct brw_context *brw, struct brw_vs_compile *c,
|
|||
*/
|
||||
assign_vue_slot(vue_map, VARYING_SLOT_PSIZ);
|
||||
assign_vue_slot(vue_map, VARYING_SLOT_POS);
|
||||
if (c->key.userclip_active) {
|
||||
if (userclip_active) {
|
||||
assign_vue_slot(vue_map, VARYING_SLOT_CLIP_DIST0);
|
||||
assign_vue_slot(vue_map, VARYING_SLOT_CLIP_DIST1);
|
||||
}
|
||||
|
|
@ -284,7 +283,8 @@ do_vs_prog(struct brw_context *brw,
|
|||
}
|
||||
}
|
||||
|
||||
brw_compute_vue_map(brw, &c, outputs_written);
|
||||
brw_compute_vue_map(brw, &c.prog_data.vue_map, outputs_written,
|
||||
c.key.userclip_active);
|
||||
|
||||
if (0) {
|
||||
_mesa_fprint_program_opt(stdout, &c.vp->program.Base, PROG_PRINT_DEBUG,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue