diff options
author | Samuel Pitoiset <[email protected]> | 2017-10-06 15:39:00 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-10-09 10:05:04 +0200 |
commit | 5848565ee31a10bfe8d941d6f5599a55eb7d8979 (patch) | |
tree | cf469ff1b1a63d80e5636a3b3a6048d10ce392b9 /src/amd/vulkan/si_cmd_buffer.c | |
parent | aab1537568475fefcf2981c87a7b1689f655a4e7 (diff) |
radv: emit PA_SU_POINT_{SIZE,MINMAX} in si_emit_config()
These registers don't change during the lifetime of the
command buffer, there is no need to re-emit them when
binding a new pipeline.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan/si_cmd_buffer.c')
-rw-r--r-- | src/amd/vulkan/si_cmd_buffer.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c index f0b3db76416..b8eb9b4c7e1 100644 --- a/src/amd/vulkan/si_cmd_buffer.c +++ b/src/amd/vulkan/si_cmd_buffer.c @@ -216,6 +216,13 @@ si_init_compute(struct radv_cmd_buffer *cmd_buffer) si_emit_compute(physical_device, cmd_buffer->cs); } +/* 12.4 fixed-point */ +static unsigned radv_pack_float_12p4(float x) +{ + return x <= 0 ? 0 : + x >= 4096 ? 0xffff : x * 16; +} + static void si_emit_config(struct radv_physical_device *physical_device, struct radeon_winsys_cs *cs) @@ -486,6 +493,14 @@ si_emit_config(struct radv_physical_device *physical_device, S_028C4C_NULL_SQUAD_AA_MASK_ENABLE(1)); radeon_set_uconfig_reg(cs, R_030968_VGT_INSTANCE_BASE_ID, 0); } + + unsigned tmp = (unsigned)(1.0 * 8.0); + radeon_set_context_reg_seq(cs, R_028A00_PA_SU_POINT_SIZE, 1); + radeon_emit(cs, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp)); + radeon_set_context_reg_seq(cs, R_028A04_PA_SU_POINT_MINMAX, 1); + radeon_emit(cs, S_028A04_MIN_SIZE(radv_pack_float_12p4(0)) | + S_028A04_MAX_SIZE(radv_pack_float_12p4(8192/2))); + si_emit_compute(physical_device, cs); } |