On Wed, Feb 3, 2016 at 4:59 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Wed, Feb 3, 2016 at 5:07 AM, Marek Olšák <mar...@gmail.com> wrote: >> On Sun, Jan 31, 2016 at 9:32 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: >>> Signed-off-by: Ilia Mirkin <imir...@alum.mit.edu> >>> --- >>> src/gallium/docs/source/context.rst | 5 +++++ >>> src/gallium/include/pipe/p_context.h | 22 ++++++++++++++++++++++ >>> src/gallium/include/pipe/p_defines.h | 10 ++++++++++ >>> 3 files changed, 37 insertions(+) >>> >>> diff --git a/src/gallium/docs/source/context.rst >>> b/src/gallium/docs/source/context.rst >>> index 4c03e00..904e1ff 100644 >>> --- a/src/gallium/docs/source/context.rst >>> +++ b/src/gallium/docs/source/context.rst >>> @@ -325,6 +325,11 @@ returned). Otherwise, if the ``wait`` parameter is >>> FALSE, the call >>> will not block and the return value will be TRUE if the query has >>> completed or FALSE otherwise. >>> >>> +``get_query_result_resource`` is used to store the result of a query into >>> +a resource without synchronizing with the CPU. This write will optionally >>> +wait for the query to complete, and will optionally write whether the value >>> +is available instead of the value itself. >>> + >>> The interface currently includes the following types of queries: >>> >>> ``PIPE_QUERY_OCCLUSION_COUNTER`` counts the number of fragments which >>> diff --git a/src/gallium/include/pipe/p_context.h >>> b/src/gallium/include/pipe/p_context.h >>> index f69a75b..6c95b7b 100644 >>> --- a/src/gallium/include/pipe/p_context.h >>> +++ b/src/gallium/include/pipe/p_context.h >>> @@ -150,6 +150,28 @@ struct pipe_context { >>> struct pipe_query *q, >>> boolean wait, >>> union pipe_query_result *result); >>> + >>> + /** >>> + * Get results of a query, storing into resource. Note that this may not >>> + * be used with batch queries. >>> + * >>> + * \param wait if true, this query will block until the result is ready >>> + * \param result_type the type of the value being stored: >>> + * \param index for queries that return multiple pieces of data, which >>> + * item of that data to store (e.g. for >>> + * PIPE_QUERY_PIPELINE_STATISTICS). >>> + * When the index is -1, instead of the value of the query >>> + * the driver should instead write a 1/0 to the >>> appropriate >>> + * location with 1 meaning that the query result is >>> available. >>> + */ >>> + void (*get_query_result_resource)(struct pipe_context *pipe, >>> + struct pipe_query *q, >>> + boolean wait, >>> + enum pipe_query_value_type >>> result_type, >>> + int index, >>> + struct pipe_resource *resource, >>> + unsigned offset); >>> + >>> /*@}*/ >>> >>> /** >>> diff --git a/src/gallium/include/pipe/p_defines.h >>> b/src/gallium/include/pipe/p_defines.h >>> index 335f4e6..6cdb099 100644 >>> --- a/src/gallium/include/pipe/p_defines.h >>> +++ b/src/gallium/include/pipe/p_defines.h >>> @@ -353,6 +353,7 @@ enum pipe_flush_flags >>> */ >>> #define PIPE_BARRIER_MAPPED_BUFFER (1 << 0) >>> #define PIPE_BARRIER_SHADER_BUFFER (1 << 1) >>> +#define PIPE_BARRIER_QUERY_BUFFER (1 << 2) >>> >>> /** >>> * Resource binding flags -- state tracker must specify in advance all >>> @@ -376,6 +377,7 @@ enum pipe_flush_flags >>> #define PIPE_BIND_SHADER_IMAGE (1 << 15) /* set_shader_images */ >>> #define PIPE_BIND_COMPUTE_RESOURCE (1 << 16) /* set_compute_resources >>> */ >>> #define PIPE_BIND_COMMAND_ARGS_BUFFER (1 << 17) /* >>> pipe_draw_info.indirect */ >>> +#define PIPE_BIND_QUERY_BUFFER (1 << 18) /* >>> get_query_result_resource */ >>> >>> /** >>> * The first two flags above were previously part of the amorphous >>> @@ -838,6 +840,14 @@ union pipe_query_result >>> union pipe_numeric_type_union batch[1]; >>> }; >>> >>> +enum pipe_query_value_type >>> +{ >>> + QUERY_I32, >>> + QUERY_U32, >>> + QUERY_I64, >>> + QUERY_U64, >>> +}; >> >> This should have a PIPE_ prefix, e.g. PIPE_QUERY_TYPE_... > > So like PIPE_QUERY_TYPE_I32 and such? That sounds good to me. > >> >> Other than that, patches 1-8, 10-11: >> >> Reviewed-by: Marek Olšák <marek.ol...@amd.com> > > Thanks! > > You also pointed out a minor issue with format security on another > patch which I'll also fix. Did you actually mean to include the nvc0 > patch (#11 in the series) in your R-b? If you actually looked at it, > then great :)
Oh sorry, I didn't want to include it. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev