radeonsi: clamp point size to the limit
authorMarek Olšák <marek.olsak@amd.com>
Wed, 17 Oct 2018 16:26:54 +0000 (12:26 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 18 Oct 2018 20:08:56 +0000 (16:08 -0400)
This fixes dEQP-GLES2.functional.rasterization.limits.points.
Broken by: ea039f789d9b54e1bd1d644b6a29863ca3500314

Tested-by: Jakob Bornecrantz <jakob@collabora.com>
src/gallium/drivers/radeonsi/si_get.c
src/gallium/drivers/radeonsi/si_pipe.h
src/gallium/drivers/radeonsi/si_state.c

index ac302b8a946b3b7e1ef9fa03ef90e0c78d5a9ed1..804276b3eda4a5afdd8a651ed03f55c3f6f45c40 100644 (file)
@@ -333,11 +333,12 @@ static float si_get_paramf(struct pipe_screen* pscreen, enum pipe_capf param)
        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:
                /* This depends on the quant mode, though the precise interactions
                 * are unknown. */
                return 2048;
+       case PIPE_CAPF_MAX_POINT_WIDTH:
+       case PIPE_CAPF_MAX_POINT_WIDTH_AA:
+               return SI_MAX_POINT_SIZE;
        case PIPE_CAPF_MAX_TEXTURE_ANISOTROPY:
                return 16.0f;
        case PIPE_CAPF_MAX_TEXTURE_LOD_BIAS:
index 6edc06cece7f169be95f07378fd2f16a97fa2b71..dc95afb7421079d0c1818aa90c52148bf11b594d 100644 (file)
@@ -48,6 +48,7 @@
 #define SI_BASE_VERTEX_UNKNOWN         INT_MIN
 #define SI_RESTART_INDEX_UNKNOWN       INT_MIN
 #define SI_NUM_SMOOTH_AA_SAMPLES       8
+#define SI_MAX_POINT_SIZE              2048
 #define SI_GS_PER_ES                   128
 /* Alignment for optimal CP DMA performance. */
 #define SI_CPDMA_ALIGNMENT             32
index 8b2e6e57f4536881b1d24635bd01b8184ebd8b63..176ec74914835632c3556c877cbe1da1d93b9a0c 100644 (file)
@@ -898,7 +898,7 @@ static void *si_create_rs_state(struct pipe_context *ctx,
 
        if (state->point_size_per_vertex) {
                psize_min = util_get_min_point_size(state);
-               psize_max = 8192;
+               psize_max = SI_MAX_POINT_SIZE;
        } else {
                /* Force the point size to be as if the vertex output was disabled. */
                psize_min = state->point_size;