gallium: add a cond rendering hook for vulkan.

The vulkan cond rendering hook is quite different than the
traditional gallium one so add a new interface for it.

This just conditionalises rendering on the memory location.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8182>
This commit is contained in:
Dave Airlie 2020-12-04 17:27:16 +10:00
parent a57361ae02
commit 86328fc7b7
2 changed files with 13 additions and 0 deletions

View File

@ -563,6 +563,9 @@ Normally, if the occlusion query returned a non-zero result subsequent
drawing happens normally so fragments may be generated, shaded and drawing happens normally so fragments may be generated, shaded and
processed even where they're known to be obscured. processed even where they're known to be obscured.
The ''render_condition_mem'' function specifies the drawing is dependant
on a value in memory. A buffer resource and offset denote which 32-bit
value to use for the query. This is used for Vulkan API.
Flushing Flushing
^^^^^^^^ ^^^^^^^^

View File

@ -153,6 +153,16 @@ struct pipe_context {
bool condition, bool condition,
enum pipe_render_cond_flag mode ); enum pipe_render_cond_flag mode );
/**
* Predicate subsequent rendering on a value in a buffer
* \param buffer The buffer to query for the value
* \param offset Offset in the buffer to query 32-bit
* \param condition whether to skip on FALSE or TRUE query results
*/
void (*render_condition_mem)( struct pipe_context *pipe,
struct pipe_resource *buffer,
uint32_t offset,
bool condition );
/** /**
* Query objects * Query objects
*/ */