[Mesa-dev] [PATCH 1/3] ilo: add PIPE_QUERY_OCCLUSION_PREDICATE support
Chia-I Wu
olvaffe at gmail.com
Fri Feb 5 05:15:15 UTC 2016
On Fri, Feb 5, 2016 at 2:36 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> [+Chia-I Wu]
>
> I'd appreciate it if you could have a look and see if this looks
> reasonable. Not sure if you're still maintaining the driver or not.
> The story is that I want to use this query type for GL_ANY_SAMPLES*
> queries.
The change looks good, thanks.
I do still have interests in the driver, but I recently changed to a
full time job and could not find much time between job and family :(
>
> Cheers,
>
> -ilia
>
> On Thu, Feb 4, 2016 at 12:52 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>> src/gallium/drivers/ilo/ilo_draw.c | 2 ++
>> src/gallium/drivers/ilo/ilo_query.c | 9 ++++++++-
>> src/gallium/drivers/ilo/ilo_render.c | 2 ++
>> 3 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/gallium/drivers/ilo/ilo_draw.c b/src/gallium/drivers/ilo/ilo_draw.c
>> index 69f36ae..6831d2c 100644
>> --- a/src/gallium/drivers/ilo/ilo_draw.c
>> +++ b/src/gallium/drivers/ilo/ilo_draw.c
>> @@ -71,6 +71,7 @@ query_process_bo(const struct ilo_context *ilo, struct ilo_query *q)
>>
>> switch (q->type) {
>> case PIPE_QUERY_OCCLUSION_COUNTER:
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> case PIPE_QUERY_TIME_ELAPSED:
>> case PIPE_QUERY_PRIMITIVES_GENERATED:
>> case PIPE_QUERY_PRIMITIVES_EMITTED:
>> @@ -157,6 +158,7 @@ ilo_init_draw_query(struct ilo_context *ilo, struct ilo_query *q)
>>
>> switch (q->type) {
>> case PIPE_QUERY_OCCLUSION_COUNTER:
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> case PIPE_QUERY_TIME_ELAPSED:
>> case PIPE_QUERY_PRIMITIVES_GENERATED:
>> case PIPE_QUERY_PRIMITIVES_EMITTED:
>> diff --git a/src/gallium/drivers/ilo/ilo_query.c b/src/gallium/drivers/ilo/ilo_query.c
>> index 27d0812..106bd42 100644
>> --- a/src/gallium/drivers/ilo/ilo_query.c
>> +++ b/src/gallium/drivers/ilo/ilo_query.c
>> @@ -47,7 +47,7 @@ static const struct {
>> #define INFOX(prefix) { NULL, NULL, NULL, NULL, }
>>
>> [PIPE_QUERY_OCCLUSION_COUNTER] = INFO(draw),
>> - [PIPE_QUERY_OCCLUSION_PREDICATE] = INFOX(draw),
>> + [PIPE_QUERY_OCCLUSION_PREDICATE] = INFO(draw),
>> [PIPE_QUERY_TIMESTAMP] = INFO(draw),
>> [PIPE_QUERY_TIMESTAMP_DISJOINT] = INFOX(draw),
>> [PIPE_QUERY_TIME_ELAPSED] = INFO(draw),
>> @@ -75,6 +75,7 @@ ilo_create_query(struct pipe_context *pipe, unsigned query_type, unsigned index)
>>
>> switch (query_type) {
>> case PIPE_QUERY_OCCLUSION_COUNTER:
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> case PIPE_QUERY_TIMESTAMP:
>> case PIPE_QUERY_TIME_ELAPSED:
>> case PIPE_QUERY_PRIMITIVES_GENERATED:
>> @@ -163,6 +164,12 @@ query_serialize(const struct ilo_query *q, void *buf)
>> dst[0] = q->result.u64;
>> }
>> break;
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> + {
>> + uint64_t *dst = buf;
>> + dst[0] = !!q->result.u64;
>> + }
>> + break;
>> case PIPE_QUERY_PIPELINE_STATISTICS:
>> {
>> const struct pipe_query_data_pipeline_statistics *stats =
>> diff --git a/src/gallium/drivers/ilo/ilo_render.c b/src/gallium/drivers/ilo/ilo_render.c
>> index 8bc04df..9a47ca8 100644
>> --- a/src/gallium/drivers/ilo/ilo_render.c
>> +++ b/src/gallium/drivers/ilo/ilo_render.c
>> @@ -202,6 +202,7 @@ ilo_render_get_query_len(const struct ilo_render *render,
>>
>> switch (query_type) {
>> case PIPE_QUERY_OCCLUSION_COUNTER:
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> case PIPE_QUERY_TIMESTAMP:
>> case PIPE_QUERY_TIME_ELAPSED:
>> /* no reg */
>> @@ -268,6 +269,7 @@ ilo_render_emit_query(struct ilo_render *render,
>>
>> switch (q->type) {
>> case PIPE_QUERY_OCCLUSION_COUNTER:
>> + case PIPE_QUERY_OCCLUSION_PREDICATE:
>> pipe_control_dw1 = GEN6_PIPE_CONTROL_DEPTH_STALL |
>> GEN6_PIPE_CONTROL_WRITE_PS_DEPTH_COUNT;
>> break;
>> --
>> 2.4.10
>>
More information about the mesa-dev
mailing list