r300g: do not emit GB_Z_PEQ_CONFIG on non-r500 if DRM < 2.6.0
This commit is contained in:
parent
1a3a04d56b
commit
4d10ec4f18
|
@ -171,6 +171,7 @@ static void r300_setup_atoms(struct r300_context* r300)
|
|||
boolean is_r500 = r300->screen->caps.is_r500;
|
||||
boolean has_tcl = r300->screen->caps.has_tcl;
|
||||
boolean drm_2_3_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
|
||||
boolean drm_2_6_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0);
|
||||
boolean has_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ);
|
||||
boolean has_hiz_ram = r300->screen->caps.hiz_ram > 0;
|
||||
|
||||
|
@ -195,7 +196,7 @@ static void r300_setup_atoms(struct r300_context* r300)
|
|||
R300_INIT_ATOM(gpu_flush, 9);
|
||||
R300_INIT_ATOM(aa_state, 4);
|
||||
R300_INIT_ATOM(fb_state, 0);
|
||||
R300_INIT_ATOM(hyperz_state, is_rv350 ? 10 : 8);
|
||||
R300_INIT_ATOM(hyperz_state, is_r500 || (is_rv350 && drm_2_6_0) ? 10 : 8);
|
||||
/* ZB (unpipelined), SC. */
|
||||
R300_INIT_ATOM(ztop_state, 2);
|
||||
/* ZB, FG. */
|
||||
|
@ -373,7 +374,9 @@ static void r300_init_states(struct pipe_context *pipe)
|
|||
OUT_CB_REG(R300_ZB_DEPTHCLEARVALUE, 0);
|
||||
OUT_CB_REG(R300_SC_HYPERZ, R300_SC_HYPERZ_ADJ_2);
|
||||
|
||||
if (r300->screen->caps.is_rv350) {
|
||||
if (r300->screen->caps.is_r500 ||
|
||||
(r300->screen->caps.is_rv350 &&
|
||||
r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0))) {
|
||||
OUT_CB_REG(R300_GB_Z_PEQ_CONFIG, 0);
|
||||
}
|
||||
END_CB;
|
||||
|
|
|
@ -49,6 +49,7 @@ enum r300_value_id {
|
|||
R300_VID_Z_PIPES,
|
||||
R300_VID_SQUARE_TILING_SUPPORT,
|
||||
R300_VID_DRM_2_3_0,
|
||||
R300_VID_DRM_2_6_0,
|
||||
R300_CAN_HYPERZ,
|
||||
};
|
||||
|
||||
|
|
|
@ -103,6 +103,10 @@ static void do_ioctls(int fd, struct radeon_libdrm_winsys* winsys)
|
|||
winsys->drm_2_3_0 = version->version_major > 2 ||
|
||||
version->version_minor >= 3;
|
||||
|
||||
winsys->drm_2_6_0 = version->version_major > 2 ||
|
||||
(version->version_major == 2 &&
|
||||
version->version_minor >= 6);
|
||||
|
||||
info.request = RADEON_INFO_DEVICE_ID;
|
||||
retval = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
|
||||
if (retval) {
|
||||
|
|
|
@ -211,6 +211,8 @@ static uint32_t radeon_get_value(struct r300_winsys_screen *rws,
|
|||
return ws->squaretiling;
|
||||
case R300_VID_DRM_2_3_0:
|
||||
return ws->drm_2_3_0;
|
||||
case R300_VID_DRM_2_6_0:
|
||||
return ws->drm_2_6_0;
|
||||
case R300_CAN_HYPERZ:
|
||||
return ws->hyperz;
|
||||
}
|
||||
|
|
|
@ -65,6 +65,12 @@ struct radeon_libdrm_winsys {
|
|||
*/
|
||||
boolean drm_2_3_0;
|
||||
|
||||
/* DRM 2.6.0
|
||||
* - Hyper-Z
|
||||
* - GB_Z_PEQ_CONFIG allowed on rv350->r4xx, we should initialize it
|
||||
*/
|
||||
boolean drm_2_6_0;
|
||||
|
||||
/* hyperz user */
|
||||
boolean hyperz;
|
||||
|
||||
|
|
Loading…
Reference in New Issue