r600g: set minimum point size to 1.0 for non-sprite non-aa points
This commit is contained in:
parent
ac3a765589
commit
f183cc9ce3
|
@ -889,6 +889,7 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx,
|
|||
unsigned tmp;
|
||||
unsigned prov_vtx = 1, polygon_dual_mode;
|
||||
unsigned clip_rule;
|
||||
float psize_min, psize_max;
|
||||
|
||||
if (rs == NULL) {
|
||||
return NULL;
|
||||
|
@ -942,7 +943,14 @@ static void *evergreen_create_rs_state(struct pipe_context *ctx,
|
|||
/* point size 12.4 fixed point */
|
||||
tmp = (unsigned)(state->point_size * 8.0);
|
||||
r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL, 0);
|
||||
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL, 0);
|
||||
|
||||
psize_min = util_get_min_point_size(state);
|
||||
psize_max = 8192;
|
||||
/* Divide by two, because 0.5 = 1 pixel. */
|
||||
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX,
|
||||
S_028A04_MIN_SIZE(r600_pack_float_12p4(psize_min/2)) |
|
||||
S_028A04_MAX_SIZE(r600_pack_float_12p4(psize_max/2)),
|
||||
0xFFFFFFFF, NULL, 0);
|
||||
|
||||
tmp = (unsigned)state->line_width * 8;
|
||||
r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL, 0);
|
||||
|
|
|
@ -1729,6 +1729,12 @@
|
|||
#define R_028980_ALU_CONST_CACHE_VS_0 0x00028980
|
||||
#define R_028984_ALU_CONST_CACHE_VS_1 0x00028984
|
||||
#define R_028A04_PA_SU_POINT_MINMAX 0x00028A04
|
||||
#define S_028A04_MIN_SIZE(x) (((x) & 0xFFFF) << 0)
|
||||
#define G_028A04_MIN_SIZE(x) (((x) >> 0) & 0xFFFF)
|
||||
#define C_028A04_MIN_SIZE 0xFFFF0000
|
||||
#define S_028A04_MAX_SIZE(x) (((x) & 0xFFFF) << 16)
|
||||
#define G_028A04_MAX_SIZE(x) (((x) >> 16) & 0xFFFF)
|
||||
#define C_028A04_MAX_SIZE 0x0000FFFF
|
||||
#define R_028A08_PA_SU_LINE_CNTL 0x00028A08
|
||||
#define S_028A08_WIDTH(x) (((x) & 0xFFFF) << 0)
|
||||
#define G_028A08_WIDTH(x) (((x) >> 0) & 0xFFFF)
|
||||
|
|
|
@ -385,4 +385,11 @@ static inline unsigned r600_tex_aniso_filter(unsigned filter)
|
|||
/* else */ return 4;
|
||||
}
|
||||
|
||||
/* 12.4 fixed-point */
|
||||
static INLINE unsigned r600_pack_float_12p4(float x)
|
||||
{
|
||||
return x <= 0 ? 0 :
|
||||
x >= 4096 ? 0xffff : x * 16;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -948,6 +948,7 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
|
|||
unsigned prov_vtx = 1, polygon_dual_mode;
|
||||
unsigned clip_rule;
|
||||
unsigned sc_mode_cntl;
|
||||
float psize_min, psize_max;
|
||||
|
||||
if (rs == NULL) {
|
||||
return NULL;
|
||||
|
@ -1000,7 +1001,14 @@ static void *r600_create_rs_state(struct pipe_context *ctx,
|
|||
/* point size 12.4 fixed point */
|
||||
tmp = (unsigned)(state->point_size * 8.0);
|
||||
r600_pipe_state_add_reg(rstate, R_028A00_PA_SU_POINT_SIZE, S_028A00_HEIGHT(tmp) | S_028A00_WIDTH(tmp), 0xFFFFFFFF, NULL, 0);
|
||||
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX, 0x80000000, 0xFFFFFFFF, NULL, 0);
|
||||
|
||||
psize_min = util_get_min_point_size(state);
|
||||
psize_max = 8192;
|
||||
/* Divide by two, because 0.5 = 1 pixel. */
|
||||
r600_pipe_state_add_reg(rstate, R_028A04_PA_SU_POINT_MINMAX,
|
||||
S_028A04_MIN_SIZE(r600_pack_float_12p4(psize_min/2)) |
|
||||
S_028A04_MAX_SIZE(r600_pack_float_12p4(psize_max/2)),
|
||||
0xFFFFFFFF, NULL, 0);
|
||||
|
||||
tmp = (unsigned)state->line_width * 8;
|
||||
r600_pipe_state_add_reg(rstate, R_028A08_PA_SU_LINE_CNTL, S_028A08_WIDTH(tmp), 0xFFFFFFFF, NULL, 0);
|
||||
|
|
Loading…
Reference in New Issue