From 86328fc7b700f6e93d2f569fbfffc992954f855f Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 4 Dec 2020 17:27:16 +1000 Subject: [PATCH] gallium: add a cond rendering hook for vulkan. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Roland Scheidegger Part-of: --- docs/gallium/context.rst | 3 +++ src/gallium/include/pipe/p_context.h | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/docs/gallium/context.rst b/docs/gallium/context.rst index 3503f02c8d5..6c0752b57cd 100644 --- a/docs/gallium/context.rst +++ b/docs/gallium/context.rst @@ -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 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 ^^^^^^^^ diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index 7707eb6f2b6..99aeea21d7e 100644 --- a/src/gallium/include/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h @@ -153,6 +153,16 @@ struct pipe_context { bool condition, 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 */