r300g: random hyperz cleanups
This commit is contained in:
parent
4d6faf5175
commit
3f584c211a
|
@ -237,7 +237,7 @@ static void r300_clear(struct pipe_context* pipe,
|
||||||
uint32_t height = fb->height;
|
uint32_t height = fb->height;
|
||||||
uint32_t hyperz_dcv = hyperz->zb_depthclearvalue;
|
uint32_t hyperz_dcv = hyperz->zb_depthclearvalue;
|
||||||
|
|
||||||
/* Enable fast Z clear.
|
/* Use fast Z clear.
|
||||||
* The zbuffer must be in micro-tiled mode, otherwise it locks up. */
|
* The zbuffer must be in micro-tiled mode, otherwise it locks up. */
|
||||||
if (buffers & PIPE_CLEAR_DEPTHSTENCIL) {
|
if (buffers & PIPE_CLEAR_DEPTHSTENCIL) {
|
||||||
boolean zmask_clear, hiz_clear;
|
boolean zmask_clear, hiz_clear;
|
||||||
|
|
|
@ -200,9 +200,8 @@ static boolean r300_setup_atoms(struct r300_context* r300)
|
||||||
/* TX. */
|
/* TX. */
|
||||||
R300_INIT_ATOM(texture_cache_inval, 2);
|
R300_INIT_ATOM(texture_cache_inval, 2);
|
||||||
R300_INIT_ATOM(textures_state, 0);
|
R300_INIT_ATOM(textures_state, 0);
|
||||||
/* HiZ Clear */
|
/* Clear commands */
|
||||||
R300_INIT_ATOM(hiz_clear, r300->screen->caps.hiz_ram > 0 ? 6 : 0);
|
R300_INIT_ATOM(hiz_clear, r300->screen->caps.hiz_ram > 0 ? 6 : 0);
|
||||||
/* zmask clear */
|
|
||||||
R300_INIT_ATOM(zmask_clear, r300->screen->caps.zmask_ram > 0 ? 6 : 0);
|
R300_INIT_ATOM(zmask_clear, r300->screen->caps.zmask_ram > 0 ? 6 : 0);
|
||||||
/* ZB (unpipelined), SU. */
|
/* ZB (unpipelined), SU. */
|
||||||
R300_INIT_ATOM(query_start, 4);
|
R300_INIT_ATOM(query_start, 4);
|
||||||
|
|
|
@ -101,7 +101,8 @@ static struct util_hash_table *fd_tab = NULL;
|
||||||
static boolean radeon_set_fd_access(struct radeon_drm_cs *applier,
|
static boolean radeon_set_fd_access(struct radeon_drm_cs *applier,
|
||||||
struct radeon_drm_cs **owner,
|
struct radeon_drm_cs **owner,
|
||||||
pipe_mutex *mutex,
|
pipe_mutex *mutex,
|
||||||
unsigned request, boolean enable)
|
unsigned request, const char *request_name,
|
||||||
|
boolean enable)
|
||||||
{
|
{
|
||||||
struct drm_radeon_info info;
|
struct drm_radeon_info info;
|
||||||
unsigned value = enable ? 1 : 0;
|
unsigned value = enable ? 1 : 0;
|
||||||
|
@ -136,17 +137,13 @@ static boolean radeon_set_fd_access(struct radeon_drm_cs *applier,
|
||||||
if (enable) {
|
if (enable) {
|
||||||
if (value) {
|
if (value) {
|
||||||
*owner = applier;
|
*owner = applier;
|
||||||
if (request == RADEON_INFO_WANT_HYPERZ) {
|
printf("radeon: Acquired access to %s.\n", request_name);
|
||||||
printf("radeon: Acquired Hyper-Z.\n");
|
|
||||||
}
|
|
||||||
pipe_mutex_unlock(*mutex);
|
pipe_mutex_unlock(*mutex);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*owner = NULL;
|
*owner = NULL;
|
||||||
if (request == RADEON_INFO_WANT_HYPERZ) {
|
printf("radeon: Released access to %s.\n", request_name);
|
||||||
printf("radeon: Released Hyper-Z.\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pipe_mutex_unlock(*mutex);
|
pipe_mutex_unlock(*mutex);
|
||||||
|
@ -426,16 +423,14 @@ static boolean radeon_cs_request_feature(struct radeon_winsys_cs *rcs,
|
||||||
case RADEON_FID_R300_HYPERZ_ACCESS:
|
case RADEON_FID_R300_HYPERZ_ACCESS:
|
||||||
return radeon_set_fd_access(cs, &cs->ws->hyperz_owner,
|
return radeon_set_fd_access(cs, &cs->ws->hyperz_owner,
|
||||||
&cs->ws->hyperz_owner_mutex,
|
&cs->ws->hyperz_owner_mutex,
|
||||||
RADEON_INFO_WANT_HYPERZ, enable);
|
RADEON_INFO_WANT_HYPERZ, "Hyper-Z",
|
||||||
|
enable);
|
||||||
|
|
||||||
case RADEON_FID_R300_CMASK_ACCESS:
|
case RADEON_FID_R300_CMASK_ACCESS:
|
||||||
if (debug_get_bool_option("RADEON_CMASK", FALSE)) {
|
return radeon_set_fd_access(cs, &cs->ws->cmask_owner,
|
||||||
return radeon_set_fd_access(cs, &cs->ws->cmask_owner,
|
&cs->ws->cmask_owner_mutex,
|
||||||
&cs->ws->cmask_owner_mutex,
|
RADEON_INFO_WANT_CMASK, "AA optimizations",
|
||||||
RADEON_INFO_WANT_CMASK, enable);
|
enable);
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue