diff --git a/src/gallium/drivers/r600/ci/r600-rv770-fails.txt b/src/gallium/drivers/r600/ci/r600-rv770-fails.txt index 22249de873a..87997c0d1a0 100644 --- a/src/gallium/drivers/r600/ci/r600-rv770-fails.txt +++ b/src/gallium/drivers/r600/ci/r600-rv770-fails.txt @@ -825,10 +825,6 @@ spec@ext_framebuffer_multisample@no-color 8 depth-computed combined,Fail spec@ext_framebuffer_multisample@no-color 8 depth-computed single,Fail spec@ext_framebuffer_multisample@no-color 8 stencil combined,Fail spec@ext_framebuffer_multisample@no-color 8 stencil single,Fail -spec@ext_framebuffer_multisample@turn-on-off 2,Fail -spec@ext_framebuffer_multisample@turn-on-off 4,Fail -spec@ext_framebuffer_multisample@turn-on-off 6,Fail -spec@ext_framebuffer_multisample@turn-on-off 8,Fail spec@ext_framebuffer_object@fbo-blending-formats,Fail spec@ext_framebuffer_object@fbo-blending-formats@3,Fail diff --git a/src/gallium/drivers/r600/ci/r600-turks-fails.txt b/src/gallium/drivers/r600/ci/r600-turks-fails.txt index 8a12133f03d..9fd3c9149e2 100644 --- a/src/gallium/drivers/r600/ci/r600-turks-fails.txt +++ b/src/gallium/drivers/r600/ci/r600-turks-fails.txt @@ -1255,14 +1255,6 @@ spec@ext_framebuffer_multisample@accuracy all_samples stencil_resolve small dept spec@ext_framebuffer_multisample@blit-mismatched-formats,Fail -spec@ext_framebuffer_multisample@interpolation 6 centroid-edges,Fail -spec@ext_framebuffer_multisample@interpolation 8 centroid-edges,Fail - -spec@ext_framebuffer_multisample@turn-on-off 2,Fail -spec@ext_framebuffer_multisample@turn-on-off 4,Fail -spec@ext_framebuffer_multisample@turn-on-off 6,Fail -spec@ext_framebuffer_multisample@turn-on-off 8,Fail - spec@ext_framebuffer_object@fbo-blending-formats,Fail spec@ext_framebuffer_object@fbo-blending-formats@3,Fail spec@ext_framebuffer_object@fbo-blending-formats@GL_RGB,Fail diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index b20e9a861d3..af5c0dd71d1 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -555,10 +555,12 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx, if (rctx->b.gfx_level == CAYMAN) { r600_store_context_reg(&rs->buffer, CM_R_028BE4_PA_SU_VTX_CNTL, S_028C08_PIX_CENTER_HALF(state->half_pixel_center) | + S_028C08_ROUND_MODE(V_028C08_X_ROUND_TO_EVEN) | S_028C08_QUANT_MODE(V_028C08_X_1_256TH)); } else { r600_store_context_reg(&rs->buffer, R_028C08_PA_SU_VTX_CNTL, S_028C08_PIX_CENTER_HALF(state->half_pixel_center) | + S_028C08_ROUND_MODE(V_028C08_X_ROUND_TO_EVEN) | S_028C08_QUANT_MODE(V_028C08_X_1_256TH)); } diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index e222697e968..02456c51a75 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -2402,6 +2402,12 @@ #define S_028C08_PIX_CENTER_HALF(x) (((unsigned)(x) & 0x1) << 0) #define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1) #define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE +#define S_028C08_ROUND_MODE(x) (((unsigned)(x) & 0x03) << 1) +#define G_028C08_ROUND_MODE(x) (((x) >> 1) & 0x03) +#define V_028C08_X_TRUNCATE 0x00 +#define V_028C08_X_ROUND 0x01 +#define V_028C08_X_ROUND_TO_EVEN 0x02 +#define V_028C08_X_ROUND_TO_ODD 0x03 #define S_028C08_QUANT_MODE(x) (((unsigned)(x) & 0x7) << 3) #define G_028C08_QUANT_MODE(x) (((x) >> 3) & 0x7) #define C_028C08_QUANT_MODE 0xFFFFFFC7 diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 5a6f69e9828..ba95c66352f 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -539,6 +539,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx, r600_store_context_reg(&rs->buffer, R_028A4C_PA_SC_MODE_CNTL, sc_mode_cntl); r600_store_context_reg(&rs->buffer, R_028C08_PA_SU_VTX_CNTL, S_028C08_PIX_CENTER_HALF(state->half_pixel_center) | + S_028C08_ROUND_MODE(V_028C08_X_ROUND_TO_EVEN) | S_028C08_QUANT_MODE(V_028C08_X_1_256TH)); r600_store_context_reg(&rs->buffer, R_028DFC_PA_SU_POLY_OFFSET_CLAMP, fui(state->offset_clamp)); diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index 0cb92cb2e26..e4f14217dbb 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -2279,6 +2279,12 @@ #define S_028C08_PIX_CENTER_HALF(x) (((unsigned)(x) & 0x1) << 0) #define G_028C08_PIX_CENTER_HALF(x) (((x) >> 0) & 0x1) #define C_028C08_PIX_CENTER_HALF 0xFFFFFFFE +#define S_028C08_ROUND_MODE(x) (((unsigned)(x) & 0x03) << 1) +#define G_028C08_ROUND_MODE(x) (((x) >> 1) & 0x03) +#define V_028C08_X_TRUNCATE 0x00 +#define V_028C08_X_ROUND 0x01 +#define V_028C08_X_ROUND_TO_EVEN 0x02 +#define V_028C08_X_ROUND_TO_ODD 0x03 #define S_028C08_QUANT_MODE(x) (((unsigned)(x) & 0x7) << 3) #define G_028C08_QUANT_MODE(x) (((x) >> 3) & 0x7) #define C_028C08_QUANT_MODE 0xFFFFFFC7