draw: add view_mask rendering support
This loops the draws per-view above the instance rendering Reviewed-by: Roland Scheidegger <sroland@vmware.com> Acked-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9399>
This commit is contained in:
parent
b10b55f3d3
commit
03cbb7b104
|
@ -198,6 +198,7 @@ struct draw_context
|
||||||
unsigned min_index;
|
unsigned min_index;
|
||||||
unsigned max_index;
|
unsigned max_index;
|
||||||
unsigned drawid;
|
unsigned drawid;
|
||||||
|
unsigned viewid;
|
||||||
|
|
||||||
/** vertex arrays */
|
/** vertex arrays */
|
||||||
struct draw_vertex_buffer vbuffer[PIPE_MAX_ATTRIBS];
|
struct draw_vertex_buffer vbuffer[PIPE_MAX_ATTRIBS];
|
||||||
|
|
|
@ -540,7 +540,7 @@ draw_vbo(struct draw_context *draw,
|
||||||
draw->pt.user.max_index = info->index_bounds_valid ? info->max_index : ~0;
|
draw->pt.user.max_index = info->index_bounds_valid ? info->max_index : ~0;
|
||||||
draw->pt.user.eltSize = info->index_size ? draw->pt.user.eltSizeIB : 0;
|
draw->pt.user.eltSize = info->index_size ? draw->pt.user.eltSizeIB : 0;
|
||||||
draw->pt.user.drawid = info->drawid;
|
draw->pt.user.drawid = info->drawid;
|
||||||
|
draw->pt.user.viewid = 0;
|
||||||
draw->pt.vertices_per_patch = info->vertices_per_patch;
|
draw->pt.vertices_per_patch = info->vertices_per_patch;
|
||||||
|
|
||||||
if (0)
|
if (0)
|
||||||
|
@ -604,7 +604,13 @@ draw_vbo(struct draw_context *draw,
|
||||||
* the min_index/max_index hints given by gallium frontends.
|
* the min_index/max_index hints given by gallium frontends.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
draw_instances(draw, info, draws, count);
|
if (info->view_mask) {
|
||||||
|
u_foreach_bit(i, info->view_mask) {
|
||||||
|
draw->pt.user.viewid = i;
|
||||||
|
draw_instances(draw, info, draws, count);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
draw_instances(draw, info, draws, count);
|
||||||
|
|
||||||
/* If requested emit the pipeline statistics for this run */
|
/* If requested emit the pipeline statistics for this run */
|
||||||
if (draw->collect_statistics) {
|
if (draw->collect_statistics) {
|
||||||
|
|
Loading…
Reference in New Issue