qbuf = list_first_entry(&sctx->shader_query_buffers, struct gfx10_sh_query_buffer, list);
if (!qbuf->refcount &&
- !si_rings_is_buffer_referenced(sctx, qbuf->buf->buf, RADEON_USAGE_READWRITE) &&
+ !si_cs_is_buffer_referenced(sctx, qbuf->buf->buf, RADEON_USAGE_READWRITE) &&
sctx->ws->buffer_wait(qbuf->buf->buf, 0, RADEON_USAGE_READWRITE)) {
/* Can immediately re-use the oldest buffer */
list_del(&qbuf->list);
if (rquery->b.flushed)
map = sctx->ws->buffer_map(qbuf->buf->buf, NULL, usage);
else
- map = si_buffer_map_sync_with_rings(sctx, qbuf->buf, usage);
+ map = si_buffer_map(sctx, qbuf->buf, usage);
if (!map)
return false;
#include <inttypes.h>
#include <stdio.h>
-bool si_rings_is_buffer_referenced(struct si_context *sctx, struct pb_buffer *buf,
- enum radeon_bo_usage usage)
+bool si_cs_is_buffer_referenced(struct si_context *sctx, struct pb_buffer *buf,
+ enum radeon_bo_usage usage)
{
if (sctx->ws->cs_is_buffer_referenced(&sctx->gfx_cs, buf, usage)) {
return true;
return false;
}
-void *si_buffer_map_sync_with_rings(struct si_context *sctx, struct si_resource *resource,
- unsigned usage)
+void *si_buffer_map(struct si_context *sctx, struct si_resource *resource,
+ unsigned usage)
{
enum radeon_bo_usage rusage = RADEON_USAGE_READWRITE;
bool busy = false;
return false;
/* Check if mapping this buffer would cause waiting for the GPU. */
- if (si_rings_is_buffer_referenced(sctx, buf->buf, RADEON_USAGE_READWRITE) ||
+ if (si_cs_is_buffer_referenced(sctx, buf->buf, RADEON_USAGE_READWRITE) ||
!sctx->ws->buffer_wait(buf->buf, 0, RADEON_USAGE_READWRITE)) {
/* Reallocate the buffer in the same pipe_resource. */
si_alloc_resource(sctx->screen, buf);
/* Check if mapping this buffer would cause waiting for the GPU.
*/
if (buf->flags & RADEON_FLAG_SPARSE || force_discard_range ||
- si_rings_is_buffer_referenced(sctx, buf->buf, RADEON_USAGE_READWRITE) ||
+ si_cs_is_buffer_referenced(sctx, buf->buf, RADEON_USAGE_READWRITE) ||
!sctx->ws->buffer_wait(buf->buf, 0, RADEON_USAGE_READWRITE)) {
/* Do a wait-free write-only transfer using a temporary buffer. */
struct u_upload_mgr *uploader;
si_sdma_copy_buffer(sctx, &staging->b.b, resource, box->x % SI_MAP_BUFFER_ALIGNMENT,
box->x, box->width);
- data = si_buffer_map_sync_with_rings(sctx, staging, usage & ~PIPE_MAP_UNSYNCHRONIZED);
+ data = si_buffer_map(sctx, staging, usage & ~PIPE_MAP_UNSYNCHRONIZED);
if (!data) {
si_resource_reference(&staging, NULL);
return NULL;
}
}
- data = si_buffer_map_sync_with_rings(sctx, buf, usage);
+ data = si_buffer_map(sctx, buf, usage);
if (!data) {
return NULL;
}
if (squery->b.flushed)
map = sctx->ws->buffer_map(qbuf->buf->buf, NULL, usage);
else
- map = si_buffer_map_sync_with_rings(sctx, qbuf->buf, usage);
+ map = si_buffer_map(sctx, qbuf->buf, usage);
if (!map)
return false;
void si_flush_implicit_resources(struct si_context *sctx);
/* si_buffer.c */
-bool si_rings_is_buffer_referenced(struct si_context *sctx, struct pb_buffer *buf,
- enum radeon_bo_usage usage);
-void *si_buffer_map_sync_with_rings(struct si_context *sctx, struct si_resource *resource,
- unsigned usage);
+bool si_cs_is_buffer_referenced(struct si_context *sctx, struct pb_buffer *buf,
+ enum radeon_bo_usage usage);
+void *si_buffer_map(struct si_context *sctx, struct si_resource *resource,
+ unsigned usage);
void si_init_resource_fields(struct si_screen *sscreen, struct si_resource *res, uint64_t size,
unsigned alignment);
bool si_alloc_resource(struct si_screen *sscreen, struct si_resource *res);
return;
/* Discard even the oldest buffer if it can't be mapped without a stall. */
- if (si_rings_is_buffer_referenced(sctx, buffer->buf->buf, RADEON_USAGE_READWRITE) ||
+ if (si_cs_is_buffer_referenced(sctx, buffer->buf->buf, RADEON_USAGE_READWRITE) ||
!sctx->ws->buffer_wait(buffer->buf->buf, 0, RADEON_USAGE_READWRITE)) {
si_resource_reference(&buffer->buf, NULL);
} else {
if (squery->b.flushed)
map = sctx->ws->buffer_map(qbuf->buf->buf, NULL, usage);
else
- map = si_buffer_map_sync_with_rings(sctx, qbuf->buf, usage);
+ map = si_buffer_map(sctx, qbuf->buf, usage);
if (!map)
return false;
use_staging_texture =
tex->buffer.domains & RADEON_DOMAIN_VRAM || tex->buffer.flags & RADEON_FLAG_GTT_WC;
/* Write & linear only: */
- else if (si_rings_is_buffer_referenced(sctx, tex->buffer.buf, RADEON_USAGE_READWRITE) ||
+ else if (si_cs_is_buffer_referenced(sctx, tex->buffer.buf, RADEON_USAGE_READWRITE) ||
!sctx->ws->buffer_wait(tex->buffer.buf, 0, RADEON_USAGE_READWRITE)) {
/* It's busy. */
if (si_can_invalidate_texture(sctx->screen, tex, usage, box))
if (sizeof(void *) == 4)
usage |= RADEON_MAP_TEMPORARY;
- if (!(map = si_buffer_map_sync_with_rings(sctx, buf, usage)))
+ if (!(map = si_buffer_map(sctx, buf, usage)))
goto fail_trans;
*ptransfer = &trans->b.b;