diff options
author | Nicolai Hähnle <[email protected]> | 2017-09-17 11:59:37 +0200 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-10-11 17:44:36 +0100 |
commit | d0b52003d0adbf38745d07e280934b54d19e8d8c (patch) | |
tree | b27a2f6389697afecf23650b8ba88699d58b63e4 | |
parent | 6e903ae7d51c70fe44cf1a6734bbffee89964696 (diff) |
radeonsi: fix maximum advertised point size / line width
The hardware registers store the half-size/width in 12.4 fixed point
format, so 8192 is the maximum.
Fixes dEQP-GLES3.functional.rasterization.*
Cc: [email protected]
Reviewed-by: Marek Olšák <[email protected]>
(cherry picked from commit 30e37289ea754302f970705f6f94b8c51c952f30)
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state.c | 4 |
2 files changed, 3 insertions, 8 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index a115ac032e1..7212727a7f2 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -903,17 +903,12 @@ static const char* r600_get_name(struct pipe_screen* pscreen) static float r600_get_paramf(struct pipe_screen* pscreen, enum pipe_capf param) { - struct r600_common_screen *rscreen = (struct r600_common_screen *)pscreen; - switch (param) { case PIPE_CAPF_MAX_LINE_WIDTH: case PIPE_CAPF_MAX_LINE_WIDTH_AA: case PIPE_CAPF_MAX_POINT_WIDTH: case PIPE_CAPF_MAX_POINT_WIDTH_AA: - if (rscreen->family >= CHIP_CEDAR) - return 16384.0f; - else - return 8192.0f; + return 8192.0f; case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY: return 16.0f; case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS: diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index c6101030327..9b9cbd941c7 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -831,8 +831,8 @@ static void *si_create_rs_state(struct pipe_context *ctx, S_028A04_MIN_SIZE(si_pack_float_12p4(psize_min/2)) | S_028A04_MAX_SIZE(si_pack_float_12p4(psize_max/2))); - tmp = (unsigned)state->line_width * 8; - si_pm4_set_reg(pm4, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp)); + si_pm4_set_reg(pm4, R_028A08_PA_SU_LINE_CNTL, + S_028A08_WIDTH(si_pack_float_12p4(state->line_width/2))); si_pm4_set_reg(pm4, R_028A48_PA_SC_MODE_CNTL_0, S_028A48_LINE_STIPPLE_ENABLE(state->line_stipple_enable) | S_028A48_MSAA_ENABLE(state->multisample || |