Home | History | Annotate | Download | only in svga

Lines Matching refs:sq

92                    struct svga_query *sq)
96 sq->hwbuf = svga_winsys_buffer_create(svga, 1,
98 sizeof *sq->queryResult);
99 if (!sq->hwbuf)
102 sq->queryResult = (SVGA3dQueryResult *)
103 sws->buffer_map(sws, sq->hwbuf, PIPE_TRANSFER_WRITE);
104 if (!sq->queryResult) {
105 sws->buffer_destroy(sws, sq->hwbuf);
109 sq->queryResult->totalSize = sizeof *sq->queryResult;
110 sq->queryResult->state = SVGA3D_QUERYSTATE_NEW;
116 sws->buffer_unmap(sws, sq->hwbuf);
122 begin_query_vgpu9(struct svga_context *svga, struct svga_query *sq)
127 if (sq->queryResult->state == SVGA3D_QUERYSTATE_PENDING) {
136 svga_get_query_result(&svga->pipe, &sq->base, TRUE, (void*)&result);
137 assert(sq->queryResult->state != SVGA3D_QUERYSTATE_PENDING);
140 sq->queryResult->state = SVGA3D_QUERYSTATE_NEW;
141 sws->fence_reference(sws, &sq->fence, NULL);
143 ret = SVGA3D_BeginQuery(svga->swc, sq->svga_type);
146 ret = SVGA3D_BeginQuery(svga->swc, sq->svga_type);
152 end_query_vgpu9(struct svga_context *svga, struct svga_query *sq)
157 sq->queryResult->state = SVGA3D_QUERYSTATE_PENDING;
159 ret = SVGA3D_EndQuery(svga->swc, sq->svga_type, sq->hwbuf);
162 ret = SVGA3D_EndQuery(svga->swc, sq->svga_type, sq->hwbuf);
168 get_query_result_vgpu9(struct svga_context *svga, struct svga_query *sq,
175 if (!sq->fence) {
180 ret = SVGA3D_WaitForQuery(svga->swc, sq->svga_type, sq->hwbuf);
183 ret = SVGA3D_WaitForQuery(svga->swc, sq->svga_type, sq->hwbuf);
186 svga_context_flush(svga, &sq->fence);
187 assert(sq->fence);
190 state = sq->queryResult->state;
194 sws->fence_finish(sws, sq->fence, SVGA_FENCE_FLAG_QUERY);
195 state = sq->queryResult->state;
201 *result = (uint64_t)sq->queryResult->result32;
423 struct svga_query *sq)
427 unsigned offset = sq->offset;
429 alloc_entry = svga->gb_query_map[sq->svga_type];
482 struct svga_query *sq, int resultLen)
508 sq->gb_query = svga->gb_query;
511 sq->id = util_bitmask_add(svga->query_id_bm);
512 if (sq->id == UTIL_BITMASK_INVALID_INDEX)
517 sq->offset = allocate_query(svga, sq->svga_type, qlen);
518 if (sq->offset == -1)
522 sq->svga_type, sq->id, sq->offset);
527 ret = SVGA3D_vgpu10_DefineQuery(svga->swc, sq->id, sq->svga_type, sq->flags);
530 ret = SVGA3D_vgpu10_DefineQuery(svga->swc, sq->id, sq->svga_type, sq->flags);
535 ret = SVGA3D_vgpu10_BindQuery(svga->swc, sq->gb_query, sq->id);
538 ret = SVGA3D_vgpu10_BindQuery(svga->swc, sq->gb_query, sq->id);
542 ret = SVGA3D_vgpu10_SetQueryOffset(svga->swc, sq->id, sq->offset);
545 ret = SVGA3D_vgpu10_SetQueryOffset(svga->swc, sq->id, sq->offset);
553 destroy_query_vgpu10(struct svga_context *svga, struct svga_query *sq)
557 ret = SVGA3D_vgpu10_DestroyQuery(svga->swc, sq->id);
560 deallocate_query(svga, sq);
584 begin_query_vgpu10(struct svga_context *svga, struct svga_query *sq)
590 sws->fence_reference(sws, &sq->fence, NULL);
593 status = sws->query_init(sws, sq->gb_query, sq->offset, SVGA3D_QUERYSTATE_NEW);
602 ret = SVGA3D_vgpu10_BeginQuery(svga->swc, sq->id);
605 ret = SVGA3D_vgpu10_BeginQuery(svga->swc, sq->id);
611 end_query_vgpu10(struct svga_context *svga, struct svga_query *sq)
619 ret = SVGA3D_vgpu10_EndQuery(svga->swc, sq->id);
622 ret = SVGA3D_vgpu10_EndQuery(svga->swc, sq->id);
629 get_query_result_vgpu10(struct svga_context *svga, struct svga_query *sq,
639 sws->query_get_result(sws, sq->gb_query, sq->offset, &queryState, result, resultLen);
641 if (queryState != SVGA3D_QUERYSTATE_SUCCEEDED && !sq->fence) {
647 svga_context_flush(svga, &sq->fence);
654 sws->fence_finish(sws, sq->fence, SVGA_FENCE_FLAG_QUERY);
655 sws->query_get_result(sws, sq->gb_query, sq->offset, &queryState, result, resultLen);
670 struct svga_query *sq;
674 sq = CALLOC_STRUCT(svga_query);
675 if (!sq)
679 sq->id = util_bitmask_add(svga->query_id_bm);
680 if (sq->id == UTIL_BITMASK_INVALID_INDEX)
683 SVGA_DBG(DEBUG_QUERY, "%s type=%d sq=0x%x id=%d\n", __FUNCTION__,
684 query_type, sq, sq->id);
688 sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSION;
690 define_query_vgpu10(svga, sq, sizeof(SVGADXOcclusionQueryResult));
701 sq->predicate = svga_create_query(pipe, PIPE_QUERY_OCCLUSION_PREDICATE, index);
704 define_query_vgpu9(svga, sq);
709 sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE;
710 define_query_vgpu10(svga, sq, sizeof(SVGADXOcclusionPredicateQueryResult));
712 sq->svga_type = SVGA3D_QUERYTYPE_OCCLUSION;
713 define_query_vgpu9(svga, sq);
720 sq->svga_type = SVGA3D_QUERYTYPE_STREAMOUTPUTSTATS;
721 define_query_vgpu10(svga, sq,
726 sq->svga_type = SVGA3D_QUERYTYPE_TIMESTAMP;
727 define_query_vgpu10(svga, sq,
760 sq->type = query_type;
762 return &sq->base;
765 FREE(sq);
774 struct svga_query *sq;
781 sq = svga_query(q);
783 SVGA_DBG(DEBUG_QUERY, "%s sq=0x%x id=%d\n", __FUNCTION__,
784 sq, sq->id);
786 switch (sq->type) {
791 if (sq->predicate)
792 svga_destroy_query(pipe, sq->predicate);
793 destroy_query_vgpu10(svga, sq);
795 sws->buffer_destroy(sws, sq->hwbuf);
797 sws->fence_reference(sws, &sq->fence, NULL);
804 destroy_query_vgpu10(svga, sq);
805 sws->fence_reference(sws, &sq->fence, NULL);
836 util_bitmask_clear(svga->query_id_bm, sq->id);
838 FREE(sq);
846 struct svga_query *sq = svga_query(q);
849 assert(sq);
850 assert(sq->type < SVGA_QUERY_MAX);
852 SVGA_DBG(DEBUG_QUERY, "%s sq=0x%x id=%d\n", __FUNCTION__,
853 sq, sq->id);
860 switch (sq->type) {
864 ret = begin_query_vgpu10(svga, sq);
866 if (sq->predicate) {
868 status = begin_query_vgpu10(svga, svga_query(sq->predicate));
873 ret = begin_query_vgpu9(svga, sq);
883 ret = begin_query_vgpu10(svga, sq);
887 sq->begin_count = svga->hud.num_draw_calls;
890 sq->begin_count = svga->hud.num_fallbacks;
893 sq->begin_count = svga->hud.num_flushes;
896 sq->begin_count = svga->hud.num_validations;
899 sq->begin_count = svga->hud.map_buffer_time;
902 sq->begin_count = svga->hud.num_buffers_mapped;
905 sq->begin_count = svga->hud.num_textures_mapped;
908 sq->begin_count = svga->hud.num_bytes_uploaded;
911 sq->begin_count = svga->hud.command_buffer_size;
914 sq->begin_count = svga->hud.flush_time;
917 sq->begin_count = svga->hud.surface_write_flushes;
920 sq->begin_count = svga->hud.num_readbacks;
923 sq->begin_count = svga->hud.num_resource_updates;
926 sq->begin_count = svga->hud.num_buffer_uploads;
929 sq->begin_count = svga->hud.num_const_buf_updates;
932 sq->begin_count = svga->hud.num_const_updates;
946 svga->sq[sq->type] = sq;
956 struct svga_query *sq = svga_query(q);
959 assert(sq);
960 assert(sq->type < SVGA_QUERY_MAX);
962 SVGA_DBG(DEBUG_QUERY, "%s sq=0x%x id=%d\n", __FUNCTION__,
963 sq, sq->id);
965 if (sq->type == PIPE_QUERY_TIMESTAMP && svga->sq[sq->type] != sq)
970 assert(svga->sq[sq->type] == sq);
972 switch (sq->type) {
976 ret = end_query_vgpu10(svga, sq);
978 if (sq->predicate) {
980 status = end_query_vgpu10(svga, svga_query(sq->predicate));
985 ret = end_query_vgpu9(svga, sq);
995 ret = end_query_vgpu10(svga, sq);
999 sq->end_count = svga->hud.num_draw_calls;
1002 sq->end_count = svga->hud.num_fallbacks;
1005 sq->end_count = svga->hud.num_flushes;
1008 sq->end_count = svga->hud.num_validations;
1011 sq->end_count = svga->hud.map_buffer_time;
1014 sq->end_count = svga->hud.num_buffers_mapped;
1017 sq->end_count = svga->hud.num_textures_mapped;
1020 sq->end_count = svga->hud.num_bytes_uploaded;
1023 sq->end_count = svga->hud.command_buffer_size;
1026 sq->end_count = svga->hud.flush_time;
1029 sq->end_count = svga->hud.surface_write_flushes;
1032 sq->end_count = svga->hud.num_readbacks;
1035 sq->end_count = svga->hud.num_resource_updates;
1038 sq->end_count = svga->hud.num_buffer_uploads;
1041 sq->end_count = svga->hud.num_const_buf_updates;
1044 sq->end_count = svga->hud.num_const_updates;
1057 svga->sq[sq->type] = NULL;
1070 struct svga_query *sq = svga_query(q);
1074 assert(sq);
1076 SVGA_DBG(DEBUG_QUERY, "%s sq=0x%x id=%d wait: %d\n",
1077 __FUNCTION__, sq, sq->id, wait);
1079 switch (sq->type) {
1083 ret = get_query_result_vgpu10(svga, sq, wait,
1087 ret = get_query_result_vgpu9(svga, sq, wait, result);
1093 ret = get_query_result_vgpu10(svga, sq, wait,
1098 ret = get_query_result_vgpu9(svga, sq, wait, &count);
1109 ret = get_query_result_vgpu10(svga, sq, wait,
1119 ret = get_query_result_vgpu10(svga, sq, wait,
1128 ret = get_query_result_vgpu10(svga, sq, wait,
1137 ret = get_query_result_vgpu10(svga, sq, wait,
1159 vresult->u64 = sq->end_count - sq->begin_count;
1200 struct svga_query *sq = svga_query(q);
1207 if (sq == NULL) {
1211 assert(sq->svga_type == SVGA3D_QUERYTYPE_OCCLUSION ||
1212 sq->svga_type == SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE);
1214 if (sq->svga_type == SVGA3D_QUERYTYPE_OCCLUSION) {
1215 assert(sq->predicate);
1220 sq = svga_query(sq->predicate);
1222 queryId = sq->id;
1225 mode == PIPE_RENDER_COND_BY_REGION_WAIT) && sq->fence) {
1226 sws->fence_finish(sws, sq->fence, SVGA_FENCE_FLAG_QUERY);
1246 svga->render_condition = (sq != NULL);