소스 검색

zink: respect ubo buffer alignment requirement

The driver can report a minimum alignment for UBOs, and that can be
larger than 64, which we've currently been using. Let's play ball, and
use the reported value instead.

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
tags/19.3-branchpoint
Duncan Hopkins 6 년 전
부모
커밋
5cf93985a0
1개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 5
    2
      src/gallium/drivers/zink/zink_context.c

+ 5
- 2
src/gallium/drivers/zink/zink_context.c 파일 보기

@@ -428,9 +428,12 @@ zink_set_constant_buffer(struct pipe_context *pctx,
if (cb) {
struct pipe_resource *buffer = cb->buffer;
unsigned offset = cb->buffer_offset;
if (cb->user_buffer)
u_upload_data(ctx->base.const_uploader, 0, cb->buffer_size, 64,
if (cb->user_buffer) {
struct zink_screen *screen = zink_screen(pctx->screen);
u_upload_data(ctx->base.const_uploader, 0, cb->buffer_size,
screen->props.limits.minUniformBufferOffsetAlignment,
cb->user_buffer, &offset, &buffer);
}

pipe_resource_reference(&ctx->ubos[shader][index].buffer, buffer);
ctx->ubos[shader][index].buffer_offset = offset;

Loading…
취소
저장