iris: Implement ARB_indirect_parameters
authorIllia Iorin <illia.iorin@globallogic.com>
Thu, 9 May 2019 21:44:39 +0000 (00:44 +0300)
committerKenneth Graunke <kenneth@whitecape.org>
Sun, 12 May 2019 06:56:52 +0000 (23:56 -0700)
commita35269cf446bfad2261dc1e7945cd779fb42208d
tree240c6920af187e94f6a2202990211e0b04f4fbe3
parent21a0be4a797e39117d507b970abfa1243fef99b0
iris: Implement ARB_indirect_parameters

iris_draw_vbo is divided into two functions to remove unnecessary
operations from the loop. This implementation of ARB_indirect_parameters
takes into account NV_conditional_render by saving MI_PREDICATE_RESULT
at the start of a draw call and restoring it at the end also the result
of NV_conditional_render is taken into account when computing predicates
that limit draw calls for ARB_indirect_parameters in a similar way
to 1952fd8d in ANV.

v2: Optimize indirect draws (suggested by Kenneth Graunke)
v3: (by Kenneth Graunke)
 - Fix an issue where indirect draws wouldn't set patch information
   before updating the compiled TCS.
 - Move some code back to iris_draw_vbo to avoid duplicating it.
 - Fix minor indentation issues.

Signed-off-by: Illia Iorin <illia.iorin@globallogic.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/drivers/iris/iris_defines.h
src/gallium/drivers/iris/iris_draw.c
src/gallium/drivers/iris/iris_query.c
src/gallium/drivers/iris/iris_screen.c
src/gallium/drivers/iris/iris_state.c