diff options
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_compute.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_cp_dma.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_pipe.c | 12 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_shaders.c | 41 |
4 files changed, 42 insertions, 23 deletions
diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 88d72c1ea2a..f4efb0df8d3 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -289,8 +289,10 @@ static bool si_setup_compute_scratch_buffer(struct si_context *sctx, r600_resource_reference(&sctx->compute_scratch_buffer, NULL); sctx->compute_scratch_buffer = (struct r600_resource*) - pipe_buffer_create(&sctx->screen->b.b, 0, - PIPE_USAGE_DEFAULT, scratch_needed); + r600_aligned_buffer_create(&sctx->screen->b.b, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + scratch_needed, 256); if (!sctx->compute_scratch_buffer) return false; diff --git a/src/gallium/drivers/radeonsi/si_cp_dma.c b/src/gallium/drivers/radeonsi/si_cp_dma.c index ea999d9f654..1be7586d16b 100644 --- a/src/gallium/drivers/radeonsi/si_cp_dma.c +++ b/src/gallium/drivers/radeonsi/si_cp_dma.c @@ -276,8 +276,10 @@ static void si_cp_dma_realign_engine(struct si_context *sctx, unsigned size, sctx->scratch_buffer->b.b.width0 < scratch_size) { r600_resource_reference(&sctx->scratch_buffer, NULL); sctx->scratch_buffer = (struct r600_resource*) - pipe_buffer_create(&sctx->screen->b.b, 0, - PIPE_USAGE_DEFAULT, scratch_size); + r600_aligned_buffer_create(&sctx->screen->b.b, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + scratch_size, 256); if (!sctx->scratch_buffer) return; diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index a947bad5e42..843c6b349b7 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -204,8 +204,9 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, } sctx->ce_suballocator = - u_suballocator_create(&sctx->b.b, 1024 * 1024, - 0, PIPE_USAGE_DEFAULT, 0, false); + u_suballocator_create(&sctx->b.b, 1024 * 1024, 0, + PIPE_USAGE_DEFAULT, + R600_RESOURCE_FLAG_UNMAPPABLE, false); if (!sctx->ce_suballocator) goto fail; } @@ -257,8 +258,11 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, /* CIK cannot unbind a constant buffer (S_BUFFER_LOAD doesn't skip loads * if NUM_RECORDS == 0). We need to use a dummy buffer instead. */ if (sctx->b.chip_class == CIK) { - sctx->null_const_buf.buffer = pipe_buffer_create(screen, PIPE_BIND_CONSTANT_BUFFER, - PIPE_USAGE_DEFAULT, 16); + sctx->null_const_buf.buffer = + r600_aligned_buffer_create(screen, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, 16, + sctx->screen->b.info.tcc_cache_line_size); if (!sctx->null_const_buf.buffer) goto fail; sctx->null_const_buf.buffer_size = sctx->null_const_buf.buffer->width0; diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 179176c486e..4a81b566dc1 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -2079,18 +2079,22 @@ static bool si_update_gs_ring_buffers(struct si_context *sctx) if (update_esgs) { pipe_resource_reference(&sctx->esgs_ring, NULL); - sctx->esgs_ring = pipe_buffer_create(sctx->b.b.screen, 0, - PIPE_USAGE_DEFAULT, - esgs_ring_size); + sctx->esgs_ring = + r600_aligned_buffer_create(sctx->b.b.screen, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + esgs_ring_size, alignment); if (!sctx->esgs_ring) return false; } if (update_gsvs) { pipe_resource_reference(&sctx->gsvs_ring, NULL); - sctx->gsvs_ring = pipe_buffer_create(sctx->b.b.screen, 0, - PIPE_USAGE_DEFAULT, - gsvs_ring_size); + sctx->gsvs_ring = + r600_aligned_buffer_create(sctx->b.b.screen, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + gsvs_ring_size, alignment); if (!sctx->gsvs_ring) return false; } @@ -2227,8 +2231,10 @@ static bool si_update_spi_tmpring_size(struct si_context *sctx) r600_resource_reference(&sctx->scratch_buffer, NULL); sctx->scratch_buffer = (struct r600_resource*) - pipe_buffer_create(&sctx->screen->b.b, 0, - PIPE_USAGE_DEFAULT, scratch_needed_size); + r600_aligned_buffer_create(&sctx->screen->b.b, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + scratch_needed_size, 256); if (!sctx->scratch_buffer) return false; @@ -2332,18 +2338,23 @@ static void si_init_tess_factor_ring(struct si_context *sctx) } assert(!sctx->tf_ring); - sctx->tf_ring = pipe_buffer_create(sctx->b.b.screen, 0, - PIPE_USAGE_DEFAULT, - 32768 * sctx->screen->b.info.max_se); + sctx->tf_ring = r600_aligned_buffer_create(sctx->b.b.screen, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + 32768 * sctx->screen->b.info.max_se, + 256); if (!sctx->tf_ring) return; assert(((sctx->tf_ring->width0 / 4) & C_030938_SIZE) == 0); - sctx->tess_offchip_ring = pipe_buffer_create(sctx->b.b.screen, 0, - PIPE_USAGE_DEFAULT, - max_offchip_buffers * - sctx->screen->tess_offchip_block_dw_size * 4); + sctx->tess_offchip_ring = + r600_aligned_buffer_create(sctx->b.b.screen, + R600_RESOURCE_FLAG_UNMAPPABLE, + PIPE_USAGE_DEFAULT, + max_offchip_buffers * + sctx->screen->tess_offchip_block_dw_size * 4, + 256); if (!sctx->tess_offchip_ring) return; |