[Mesa-dev] [PATCH 05/15] gallium: make pipe_context::begin_query return a boolean

2015-03-09 Thread Samuel Pitoiset
GL_AMD_performance_monitor must return an error when a monitoring
session cannot be started.

Signed-off-by: Samuel Pitoiset 
---
 src/gallium/drivers/freedreno/freedreno_query.c|  4 ++--
 src/gallium/drivers/freedreno/freedreno_query.h|  2 +-
 src/gallium/drivers/freedreno/freedreno_query_hw.c |  3 ++-
 src/gallium/drivers/freedreno/freedreno_query_sw.c |  3 ++-
 src/gallium/drivers/galahad/glhd_context.c |  6 +++---
 src/gallium/drivers/i915/i915_query.c  |  3 ++-
 src/gallium/drivers/ilo/ilo_query.c|  3 ++-
 src/gallium/drivers/llvmpipe/lp_query.c|  3 ++-
 src/gallium/drivers/noop/noop_pipe.c   |  3 ++-
 src/gallium/drivers/nouveau/nv30/nv30_query.c  |  5 +++--
 src/gallium/drivers/nouveau/nv50/nv50_query.c  |  3 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_query.c  |  3 ++-
 src/gallium/drivers/r300/r300_query.c  |  9 +
 src/gallium/drivers/radeon/r600_query.c| 16 +---
 src/gallium/drivers/rbug/rbug_context.c|  8 +---
 src/gallium/drivers/softpipe/sp_query.c|  3 ++-
 src/gallium/drivers/svga/svga_pipe_query.c |  3 ++-
 src/gallium/drivers/trace/tr_context.c |  6 --
 src/gallium/include/pipe/p_context.h   |  2 +-
 19 files changed, 53 insertions(+), 35 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_query.c 
b/src/gallium/drivers/freedreno/freedreno_query.c
index 6f01e03..db2683c 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.c
+++ b/src/gallium/drivers/freedreno/freedreno_query.c
@@ -59,11 +59,11 @@ fd_destroy_query(struct pipe_context *pctx, struct 
pipe_query *pq)
q->funcs->destroy_query(fd_context(pctx), q);
 }
 
-static void
+static boolean
 fd_begin_query(struct pipe_context *pctx, struct pipe_query *pq)
 {
struct fd_query *q = fd_query(pq);
-   q->funcs->begin_query(fd_context(pctx), q);
+   return q->funcs->begin_query(fd_context(pctx), q);
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query.h 
b/src/gallium/drivers/freedreno/freedreno_query.h
index bc9a7a2..c2c71da 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.h
+++ b/src/gallium/drivers/freedreno/freedreno_query.h
@@ -37,7 +37,7 @@ struct fd_query;
 struct fd_query_funcs {
void (*destroy_query)(struct fd_context *ctx,
struct fd_query *q);
-   void (*begin_query)(struct fd_context *ctx, struct fd_query *q);
+   boolean (*begin_query)(struct fd_context *ctx, struct fd_query *q);
void (*end_query)(struct fd_context *ctx, struct fd_query *q);
boolean (*get_query_result)(struct fd_context *ctx,
struct fd_query *q, boolean wait,
diff --git a/src/gallium/drivers/freedreno/freedreno_query_hw.c 
b/src/gallium/drivers/freedreno/freedreno_query_hw.c
index b29f9d4..a587178 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_hw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_hw.c
@@ -136,7 +136,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
 {
struct fd_hw_query *hq = fd_hw_query(q);
if (q->active)
-   return;
+   return true;
 
/* begin_query() should clear previous results: */
destroy_periods(ctx, &hq->periods);
@@ -149,6 +149,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
/* add to active list: */
list_del(&hq->list);
list_addtail(&hq->list, &ctx->active_queries);
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query_sw.c 
b/src/gallium/drivers/freedreno/freedreno_query_sw.c
index 8d81698..514df14 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_sw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_sw.c
@@ -85,7 +85,7 @@ is_rate_query(struct fd_query *q)
}
 }
 
-static void
+static boolean
 fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
 {
struct fd_sw_query *sq = fd_sw_query(q);
@@ -93,6 +93,7 @@ fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
sq->begin_value = read_counter(ctx, q->type);
if (is_rate_query(q))
sq->begin_time = os_time_get();
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/galahad/glhd_context.c 
b/src/gallium/drivers/galahad/glhd_context.c
index 37ea170..4908df5 100644
--- a/src/gallium/drivers/galahad/glhd_context.c
+++ b/src/gallium/drivers/galahad/glhd_context.c
@@ -102,15 +102,15 @@ galahad_context_destroy_query(struct pipe_context *_pipe,
query);
 }
 
-static void
+static boolean
 galahad_context_begin_query(struct pipe_context *_pipe,
  struct pipe_query *query)
 {
struct galahad_context *glhd_pipe = galahad_context(_pipe);
struct pipe_context *pipe = glhd_pipe->pipe;
 
-   pipe->begin_query(pipe,
- query);
+   return pipe->beg

[Mesa-dev] [PATCH 05/15] gallium: make pipe_context::begin_query return a boolean

2014-07-11 Thread Samuel Pitoiset
This can be used to check if a query is unable to start.

Signed-off-by: Samuel Pitoiset 
---
 src/gallium/drivers/freedreno/freedreno_query.c|  4 ++--
 src/gallium/drivers/freedreno/freedreno_query.h|  2 +-
 src/gallium/drivers/freedreno/freedreno_query_hw.c |  3 ++-
 src/gallium/drivers/freedreno/freedreno_query_sw.c |  3 ++-
 src/gallium/drivers/galahad/glhd_context.c |  6 +++---
 src/gallium/drivers/i915/i915_query.c  |  3 ++-
 src/gallium/drivers/identity/id_context.c  |  6 +++---
 src/gallium/drivers/ilo/ilo_query.c|  3 ++-
 src/gallium/drivers/llvmpipe/lp_query.c|  3 ++-
 src/gallium/drivers/noop/noop_pipe.c   |  3 ++-
 src/gallium/drivers/nouveau/nv30/nv30_query.c  |  5 +++--
 src/gallium/drivers/nouveau/nv50/nv50_query.c  |  3 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_query.c  |  3 ++-
 src/gallium/drivers/r300/r300_query.c  |  9 +
 src/gallium/drivers/radeon/r600_query.c| 16 +---
 src/gallium/drivers/rbug/rbug_context.c|  8 +---
 src/gallium/drivers/softpipe/sp_query.c|  3 ++-
 src/gallium/drivers/svga/svga_pipe_query.c |  3 ++-
 src/gallium/drivers/trace/tr_context.c |  6 --
 src/gallium/include/pipe/p_context.h   |  2 +-
 20 files changed, 56 insertions(+), 38 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_query.c 
b/src/gallium/drivers/freedreno/freedreno_query.c
index 6f01e03..db2683c 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.c
+++ b/src/gallium/drivers/freedreno/freedreno_query.c
@@ -59,11 +59,11 @@ fd_destroy_query(struct pipe_context *pctx, struct 
pipe_query *pq)
q->funcs->destroy_query(fd_context(pctx), q);
 }
 
-static void
+static boolean
 fd_begin_query(struct pipe_context *pctx, struct pipe_query *pq)
 {
struct fd_query *q = fd_query(pq);
-   q->funcs->begin_query(fd_context(pctx), q);
+   return q->funcs->begin_query(fd_context(pctx), q);
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query.h 
b/src/gallium/drivers/freedreno/freedreno_query.h
index bc9a7a2..c2c71da 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.h
+++ b/src/gallium/drivers/freedreno/freedreno_query.h
@@ -37,7 +37,7 @@ struct fd_query;
 struct fd_query_funcs {
void (*destroy_query)(struct fd_context *ctx,
struct fd_query *q);
-   void (*begin_query)(struct fd_context *ctx, struct fd_query *q);
+   boolean (*begin_query)(struct fd_context *ctx, struct fd_query *q);
void (*end_query)(struct fd_context *ctx, struct fd_query *q);
boolean (*get_query_result)(struct fd_context *ctx,
struct fd_query *q, boolean wait,
diff --git a/src/gallium/drivers/freedreno/freedreno_query_hw.c 
b/src/gallium/drivers/freedreno/freedreno_query_hw.c
index 38bd3de..d0df719 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_hw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_hw.c
@@ -136,7 +136,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
 {
struct fd_hw_query *hq = fd_hw_query(q);
if (q->active)
-   return;
+   return true;
 
/* begin_query() should clear previous results: */
destroy_periods(ctx, &hq->periods);
@@ -149,6 +149,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
/* add to active list: */
list_del(&hq->list);
list_addtail(&hq->list, &ctx->active_queries);
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query_sw.c 
b/src/gallium/drivers/freedreno/freedreno_query_sw.c
index 8d81698..514df14 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_sw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_sw.c
@@ -85,7 +85,7 @@ is_rate_query(struct fd_query *q)
}
 }
 
-static void
+static boolean
 fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
 {
struct fd_sw_query *sq = fd_sw_query(q);
@@ -93,6 +93,7 @@ fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
sq->begin_value = read_counter(ctx, q->type);
if (is_rate_query(q))
sq->begin_time = os_time_get();
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/galahad/glhd_context.c 
b/src/gallium/drivers/galahad/glhd_context.c
index 79d5495..d02f13a 100644
--- a/src/gallium/drivers/galahad/glhd_context.c
+++ b/src/gallium/drivers/galahad/glhd_context.c
@@ -95,15 +95,15 @@ galahad_context_destroy_query(struct pipe_context *_pipe,
query);
 }
 
-static void
+static boolean
 galahad_context_begin_query(struct pipe_context *_pipe,
  struct pipe_query *query)
 {
struct galahad_context *glhd_pipe = galahad_context(_pipe);
struct pipe_context *pipe = glhd_pipe->pipe;
 
-   pipe->begin_query(pipe,
- qu

[Mesa-dev] [PATCH 05/15] gallium: make pipe_context::begin_query return a boolean

2014-07-09 Thread Samuel Pitoiset
This can be used to check if a query is unable to start.

Signed-off-by: Samuel Pitoiset 
---
 src/gallium/drivers/freedreno/freedreno_query.c|  4 ++--
 src/gallium/drivers/freedreno/freedreno_query.h|  2 +-
 src/gallium/drivers/freedreno/freedreno_query_hw.c |  3 ++-
 src/gallium/drivers/freedreno/freedreno_query_sw.c |  3 ++-
 src/gallium/drivers/galahad/glhd_context.c |  6 +++---
 src/gallium/drivers/i915/i915_query.c  |  3 ++-
 src/gallium/drivers/identity/id_context.c  |  6 +++---
 src/gallium/drivers/ilo/ilo_query.c|  3 ++-
 src/gallium/drivers/llvmpipe/lp_query.c|  3 ++-
 src/gallium/drivers/noop/noop_pipe.c   |  3 ++-
 src/gallium/drivers/nouveau/nv30/nv30_query.c  |  5 +++--
 src/gallium/drivers/nouveau/nv50/nv50_query.c  |  3 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_query.c  |  3 ++-
 src/gallium/drivers/r300/r300_query.c  |  9 +
 src/gallium/drivers/radeon/r600_query.c| 16 +---
 src/gallium/drivers/rbug/rbug_context.c|  8 +---
 src/gallium/drivers/softpipe/sp_query.c|  3 ++-
 src/gallium/drivers/svga/svga_pipe_query.c |  3 ++-
 src/gallium/drivers/trace/tr_context.c |  6 --
 src/gallium/include/pipe/p_context.h   |  2 +-
 20 files changed, 56 insertions(+), 38 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_query.c 
b/src/gallium/drivers/freedreno/freedreno_query.c
index 6f01e03..db2683c 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.c
+++ b/src/gallium/drivers/freedreno/freedreno_query.c
@@ -59,11 +59,11 @@ fd_destroy_query(struct pipe_context *pctx, struct 
pipe_query *pq)
q->funcs->destroy_query(fd_context(pctx), q);
 }
 
-static void
+static boolean
 fd_begin_query(struct pipe_context *pctx, struct pipe_query *pq)
 {
struct fd_query *q = fd_query(pq);
-   q->funcs->begin_query(fd_context(pctx), q);
+   return q->funcs->begin_query(fd_context(pctx), q);
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query.h 
b/src/gallium/drivers/freedreno/freedreno_query.h
index bc9a7a2..c2c71da 100644
--- a/src/gallium/drivers/freedreno/freedreno_query.h
+++ b/src/gallium/drivers/freedreno/freedreno_query.h
@@ -37,7 +37,7 @@ struct fd_query;
 struct fd_query_funcs {
void (*destroy_query)(struct fd_context *ctx,
struct fd_query *q);
-   void (*begin_query)(struct fd_context *ctx, struct fd_query *q);
+   boolean (*begin_query)(struct fd_context *ctx, struct fd_query *q);
void (*end_query)(struct fd_context *ctx, struct fd_query *q);
boolean (*get_query_result)(struct fd_context *ctx,
struct fd_query *q, boolean wait,
diff --git a/src/gallium/drivers/freedreno/freedreno_query_hw.c 
b/src/gallium/drivers/freedreno/freedreno_query_hw.c
index 38bd3de..d0df719 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_hw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_hw.c
@@ -136,7 +136,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
 {
struct fd_hw_query *hq = fd_hw_query(q);
if (q->active)
-   return;
+   return true;
 
/* begin_query() should clear previous results: */
destroy_periods(ctx, &hq->periods);
@@ -149,6 +149,7 @@ fd_hw_begin_query(struct fd_context *ctx, struct fd_query 
*q)
/* add to active list: */
list_del(&hq->list);
list_addtail(&hq->list, &ctx->active_queries);
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/freedreno/freedreno_query_sw.c 
b/src/gallium/drivers/freedreno/freedreno_query_sw.c
index 8d81698..514df14 100644
--- a/src/gallium/drivers/freedreno/freedreno_query_sw.c
+++ b/src/gallium/drivers/freedreno/freedreno_query_sw.c
@@ -85,7 +85,7 @@ is_rate_query(struct fd_query *q)
}
 }
 
-static void
+static boolean
 fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
 {
struct fd_sw_query *sq = fd_sw_query(q);
@@ -93,6 +93,7 @@ fd_sw_begin_query(struct fd_context *ctx, struct fd_query *q)
sq->begin_value = read_counter(ctx, q->type);
if (is_rate_query(q))
sq->begin_time = os_time_get();
+   return true;
 }
 
 static void
diff --git a/src/gallium/drivers/galahad/glhd_context.c 
b/src/gallium/drivers/galahad/glhd_context.c
index 79d5495..d02f13a 100644
--- a/src/gallium/drivers/galahad/glhd_context.c
+++ b/src/gallium/drivers/galahad/glhd_context.c
@@ -95,15 +95,15 @@ galahad_context_destroy_query(struct pipe_context *_pipe,
query);
 }
 
-static void
+static boolean
 galahad_context_begin_query(struct pipe_context *_pipe,
  struct pipe_query *query)
 {
struct galahad_context *glhd_pipe = galahad_context(_pipe);
struct pipe_context *pipe = glhd_pipe->pipe;
 
-   pipe->begin_query(pipe,
- qu