diff options
author | Philipp Sieweck <[email protected]> | 2019-10-15 21:45:39 +0200 |
---|---|---|
committer | Dylan Baker <[email protected]> | 2019-11-05 16:23:39 +0000 |
commit | 38e706656d0ea99a893dcf469e8658ca78c5ffd8 (patch) | |
tree | 21121885e7532d25bf189b02469c9cad20ed9b94 | |
parent | 427d0c4b6a17d16751e0b6ad1237abc3d546fe4a (diff) |
svga: check return value of define_query_vgpu{9,10}
Reviewed-by: Charmaine Lee <[email protected]>
-rw-r--r-- | src/gallium/drivers/svga/svga_pipe_query.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c index 8922ef56e59..1b9b17e2a8e 100644 --- a/src/gallium/drivers/svga/svga_pipe_query.c +++ b/src/gallium/drivers/svga/svga_pipe_query.c @@ -670,6 +670,7 @@ svga_create_query(struct pipe_context *pipe, { struct svga_context *svga = svga_context(pipe); struct svga_query *sq; + enum pipe_error ret; assert(query_type < SVGA_QUERY_MAX); @@ -689,7 +690,10 @@ svga_create_query(struct pipe_context *pipe, case PIPE_QUERY_OCCLUSION_COUNTER: sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSION; if (svga_have_vgpu10(svga)) { - define_query_vgpu10(svga, sq, sizeof(SVGADXOcclusionQueryResult)); + ret = define_query_vgpu10(svga, sq, + sizeof(SVGADXOcclusionQueryResult)); + if (ret != PIPE_OK) + goto fail; /** * In OpenGL, occlusion counter query can be used in conditional @@ -703,17 +707,24 @@ svga_create_query(struct pipe_context *pipe, sq->predicate = svga_create_query(pipe, PIPE_QUERY_OCCLUSION_PREDICATE, index); } else { - define_query_vgpu9(svga, sq); + ret = define_query_vgpu9(svga, sq); + if (ret != PIPE_OK) + goto fail; } break; case PIPE_QUERY_OCCLUSION_PREDICATE: case PIPE_QUERY_OCCLUSION_PREDICATE_CONSERVATIVE: if (svga_have_vgpu10(svga)) { sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE; - define_query_vgpu10(svga, sq, sizeof(SVGADXOcclusionPredicateQueryResult)); + ret = define_query_vgpu10(svga, sq, + sizeof(SVGADXOcclusionPredicateQueryResult)); + if (ret != PIPE_OK) + goto fail; } else { sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSION; - define_query_vgpu9(svga, sq); + ret = define_query_vgpu9(svga, sq); + if (ret != PIPE_OK) + goto fail; } break; case PIPE_QUERY_PRIMITIVES_GENERATED: @@ -721,14 +732,18 @@ svga_create_query(struct pipe_context *pipe, case PIPE_QUERY_SO_STATISTICS: assert(svga_have_vgpu10(svga)); sq->svga_type = SVGA3D_QUERYTYPE_STREAMOUTPUTSTATS; - define_query_vgpu10(svga, sq, - sizeof(SVGADXStreamOutStatisticsQueryResult)); + ret = define_query_vgpu10(svga, sq, + sizeof(SVGADXStreamOutStatisticsQueryResult)); + if (ret != PIPE_OK) + goto fail; break; case PIPE_QUERY_TIMESTAMP: assert(svga_have_vgpu10(svga)); sq->svga_type = SVGA3D_QUERYTYPE_TIMESTAMP; - define_query_vgpu10(svga, sq, - sizeof(SVGADXTimestampQueryResult)); + ret = define_query_vgpu10(svga, sq, + sizeof(SVGADXTimestampQueryResult)); + if (ret != PIPE_OK) + goto fail; break; case SVGA_QUERY_NUM_DRAW_CALLS: case SVGA_QUERY_NUM_FALLBACKS: |