From d93d903a3772889cb921377275f9f8c19e55b601 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 26 Aug 2020 11:58:47 +0200 Subject: [PATCH] v3d/compiler: implement nir_intrinsic_get_ubo_size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Alejandro PiƱeiro Reviewed-by: Eric Anholt Part-of: --- src/broadcom/compiler/nir_to_vir.c | 6 ++++++ src/broadcom/compiler/v3d_compiler.h | 3 ++- src/broadcom/compiler/vir_dump.c | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 84338014a7e..e83dc0f38fa 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -2201,6 +2201,12 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) nir_src_as_uint(instr->src[0]))); break; + case nir_intrinsic_get_ubo_size: + ntq_store_dest(c, &instr->dest, 0, + vir_uniform(c, QUNIFORM_GET_UBO_SIZE, + nir_src_comp_as_uint(instr->src[0], 0))); + break; + case nir_intrinsic_load_user_clip_plane: for (int i = 0; i < nir_intrinsic_dest_components(instr); i++) { ntq_store_dest(c, &instr->dest, i, diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index b76aaff499b..f42f161eeff 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -251,8 +251,9 @@ enum quniform_contents { /* Returns the base offset of the SSBO given by the data value. */ QUNIFORM_SSBO_OFFSET, - /* Returns the size of the SSBO given by the data value. */ + /* Returns the size of the SSBO or UBO given by the data value. */ QUNIFORM_GET_BUFFER_SIZE, + QUNIFORM_GET_UBO_SIZE, /* Sizes (in pixels) of a shader image given by the data value. */ QUNIFORM_IMAGE_WIDTH, diff --git a/src/broadcom/compiler/vir_dump.c b/src/broadcom/compiler/vir_dump.c index daf9e37843f..bc450c4e73c 100644 --- a/src/broadcom/compiler/vir_dump.c +++ b/src/broadcom/compiler/vir_dump.c @@ -122,6 +122,10 @@ vir_dump_uniform(enum quniform_contents contents, fprintf(stderr, "ssbo_size[%d]", data); break; + case QUNIFORM_GET_UBO_SIZE: + fprintf(stderr, "ubo_size[%d]", data); + break; + case QUNIFORM_NUM_WORK_GROUPS: fprintf(stderr, "num_wg.%c", data < 3 ? "xyz"[data] : '?'); break;