Lines Matching defs:buffer
43 /* Queries without buffer handling or suspend/resume. */
486 struct r600_query_buffer *prev = query->buffer.previous;
496 r600_resource_reference(&query->buffer.buf, NULL);
526 struct r600_resource *buffer)
528 /* Callers ensure that the buffer is currently unused by the GPU. */
529 uint32_t *results = rscreen->ws->buffer_map(rscreen->ws, buffer->buf, NULL,
535 memset(results, 0, buffer->b.b.width0);
546 num_results = buffer->b.b.width0 / query->result_size;
579 struct r600_resource *buffer,
583 struct r600_resource *buffer,
586 struct r600_query_hw *, void *buffer,
602 query->buffer.buf = r600_new_query_buffer(rscreen, query);
603 if (!query->buffer.buf)
728 struct r600_resource *buffer,
769 r600_emit_reloc(ctx, &ctx->gfx, query->buffer.buf, RADEON_USAGE_WRITE |
778 if (!query->buffer.buf)
779 return; // previous buffer allocation failure
787 /* Get a new query buffer if needed. */
788 if (query->buffer.results_end + query->result_size > query->buffer.buf->b.b.width0) {
790 *qbuf = query->buffer;
791 query->buffer.results_end = 0;
792 query->buffer.previous = qbuf;
793 query->buffer.buf = r600_new_query_buffer(ctx->screen, query);
794 if (!query->buffer.buf)
799 va = query->buffer.buf->gpu_address + query->buffer.results_end;
801 query->ops->emit_start(ctx, query, query->buffer.buf, va);
808 struct r600_resource *buffer,
862 r600_emit_reloc(ctx, &ctx->gfx, query->buffer.buf, RADEON_USAGE_WRITE |
868 query->buffer.buf, fence_va, 0x80000000,
877 if (!query->buffer.buf)
878 return; // previous buffer allocation failure
886 va = query->buffer.buf->gpu_address + query->buffer.results_end;
888 query->ops->emit_stop(ctx, query, query->buffer.buf, va);
890 query->buffer.results_end += query->result_size;
952 for (qbuf = &query->buffer; qbuf; qbuf = qbuf->previous) {
1009 struct r600_query_buffer *prev = query->buffer.previous;
1019 query->buffer.results_end = 0;
1020 query->buffer.previous = NULL;
1022 /* Obtain a new buffer if the current one can't be mapped without a stall. */
1023 if (r600_rings_is_buffer_referenced(rctx, query->buffer.buf->buf, RADEON_USAGE_READWRITE) ||
1024 !rctx->ws->buffer_wait(rctx->ws, query->buffer.buf->buf, 0, RADEON_USAGE_READWRITE)) {
1025 r600_resource_reference(&query->buffer.buf, NULL);
1026 query->buffer.buf = r600_new_query_buffer(rctx->screen, query);
1028 if (!query->ops->prepare_buffer(rctx->screen, query, query->buffer.buf))
1029 r600_resource_reference(&query->buffer.buf, NULL);
1047 if (!query->buffer.buf)
1075 if (!query->buffer.buf)
1173 void *buffer,
1183 r600_query_read_result(buffer + results_base, 0, 2, true);
1192 r600_query_read_result(buffer + results_base, 0, 2, true) != 0;
1197 result->u64 += r600_query_read_result(buffer, 0, 2, false);
1200 result->u64 = *(uint64_t*)buffer;
1209 result->u64 += r600_query_read_result(buffer, 2, 6, true);
1213 result->u64 += r600_query_read_result(buffer, 0, 4, true);
1217 r600_query_read_result(buffer, 2, 6, true);
1219 r600_query_read_result(buffer, 0, 4, true);
1223 r600_query_read_result(buffer, 2, 6, true) !=
1224 r600_query_read_result(buffer, 0, 4, true);
1229 r600_query_read_result(buffer, 2, 6, true) !=
1230 r600_query_read_result(buffer, 0, 4, true);
1231 buffer = (char *)buffer + 32;
1237 r600_query_read_result(buffer, 0, 22, false);
1239 r600_query_read_result(buffer, 2, 24, false);
1241 r600_query_read_result(buffer, 4, 26, false);
1243 r600_query_read_result(buffer, 6, 28, false);
1245 r600_query_read_result(buffer, 8, 30, false);
1247 r600_query_read_result(buffer, 10, 32, false);
1249 r600_query_read_result(buffer, 12, 34, false);
1251 r600_query_read_result(buffer, 14, 36, false);
1253 r600_query_read_result(buffer, 16, 38, false);
1255 r600_query_read_result(buffer, 18, 40, false);
1257 r600_query_read_result(buffer, 20, 42, false);
1260 r600_query_read_result(buffer, 0, 16, false);
1262 r600_query_read_result(buffer, 2, 18, false);
1264 r600_query_read_result(buffer, 4, 20, false);
1266 r600_query_read_result(buffer, 6, 22, false);
1268 r600_query_read_result(buffer, 8, 24, false);
1270 r600_query_read_result(buffer, 10, 26, false);
1272 r600_query_read_result(buffer, 12, 28, false);
1274 r600_query_read_result(buffer, 14, 30, false);
1339 for (qbuf = &query->buffer; qbuf; qbuf = qbuf->previous) {
1371 * buffer. The thread (optionally) reads a previous summary buffer, then
1372 * accumulates data from the query result buffer, and writes the result either
1373 * to a summary buffer to be consumed by the next grid invocation or to the
1374 * user-supplied buffer.
1398 * BUFFER[0] = query result buffer
1399 * BUFFER[1] = previous summary buffer
1400 * BUFFER[2] = next summary buffer or user-supplied buffer
1597 pipe_resource_reference(&st->saved_ssbo[i].buffer, NULL);
1636 if (query->buffer.previous) {
1655 ssbo[1].buffer = tmp_buffer;
1697 for (qbuf = &query->buffer; qbuf; qbuf = qbuf_prev) {
1702 if (qbuf != &query->buffer)
1714 ssbo[0].buffer = &qbuf->buf->b.b;
1720 ssbo[2].buffer = resource;
1731 if ((flags & PIPE_QUERY_WAIT) && qbuf == &query->buffer) {
1765 for (qbuf = &rquery->buffer; qbuf; qbuf = qbuf->previous)
1835 struct r600_resource *buffer;
1888 /* create buffer for event data */
1889 buffer = (struct r600_resource*)
1892 if (!buffer)
1895 /* initialize buffer with zeroes */
1896 results = r600_buffer_map_sync_with_rings(ctx, buffer, PIPE_MAP_WRITE);
1903 radeon_emit(cs, buffer->gpu_address);
1904 radeon_emit(cs, buffer->gpu_address >> 32);
1906 r600_emit_reloc(ctx, &ctx->gfx, buffer,
1910 results = r600_buffer_map_sync_with_rings(ctx, buffer, PIPE_MAP_READ);
1920 r600_resource_reference(&buffer, NULL);
1974 X("buffer-wait-time", BUFFER_WAIT_TIME, MICROSECONDS, CUMULATIVE),