mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 16:20:39 +02:00
r300g: support B10G10R10A2 render targets only with DRM 2.8.0 or later versions
This commit is contained in:
parent
4fe78d3e12
commit
2a95542088
5 changed files with 15 additions and 4 deletions
|
|
@ -309,7 +309,9 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
|
|||
unsigned usage,
|
||||
unsigned geom_flags)
|
||||
{
|
||||
struct r300_winsys_screen *rws = r300_screen(screen)->rws;
|
||||
uint32_t retval = 0;
|
||||
boolean drm_2_8_0 = rws->get_value(rws, R300_VID_DRM_2_8_0);
|
||||
boolean is_r500 = r300_screen(screen)->caps.is_r500;
|
||||
boolean is_r400 = r300_screen(screen)->caps.is_r400;
|
||||
boolean is_color2101010 = format == PIPE_FORMAT_R10G10B10A2_UNORM ||
|
||||
|
|
@ -363,7 +365,7 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
|
|||
PIPE_BIND_SCANOUT |
|
||||
PIPE_BIND_SHARED)) &&
|
||||
/* 2101010 cannot be rendered to on non-r5xx. */
|
||||
(is_r500 || !is_color2101010) &&
|
||||
(!is_color2101010 || (is_r500 && drm_2_8_0)) &&
|
||||
r300_is_colorbuffer_format_supported(format)) {
|
||||
retval |= usage &
|
||||
(PIPE_BIND_RENDER_TARGET |
|
||||
|
|
|
|||
|
|
@ -51,8 +51,9 @@ enum r300_value_id {
|
|||
R300_VID_GB_PIPES,
|
||||
R300_VID_Z_PIPES,
|
||||
R300_VID_SQUARE_TILING_SUPPORT,
|
||||
R300_VID_DRM_2_3_0,
|
||||
R300_VID_DRM_2_6_0,
|
||||
R300_VID_DRM_2_3_0, /* R500 VAP regs, MSPOS regs, fixed tex3D size checking */
|
||||
R300_VID_DRM_2_6_0, /* Hyper-Z, GB_Z_PEQ_CONFIG on rv350->r4xx, R500 FG_ALPHA_VALUE */
|
||||
R300_VID_DRM_2_8_0, /* R500 US_FORMAT regs, R500 ARGB2101010 colorbuffer */
|
||||
R300_CAN_HYPERZ,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -122,6 +122,10 @@ static void do_ioctls(struct radeon_drm_winsys *winsys)
|
|||
(version->version_major == 2 &&
|
||||
version->version_minor >= 6);
|
||||
|
||||
winsys->drm_2_8_0 = version->version_major > 2 ||
|
||||
(version->version_major == 2 &&
|
||||
version->version_minor >= 8);
|
||||
|
||||
info.request = RADEON_INFO_DEVICE_ID;
|
||||
retval = drmCommandWriteRead(winsys->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->drm_2_3_0;
|
||||
case R300_VID_DRM_2_6_0:
|
||||
return ws->drm_2_6_0;
|
||||
case R300_VID_DRM_2_8_0:
|
||||
return ws->drm_2_8_0;
|
||||
case R300_CAN_HYPERZ:
|
||||
return ws->hyperz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,8 +49,10 @@ struct radeon_drm_winsys {
|
|||
boolean squaretiling; /* Square tiling support. */
|
||||
/* DRM 2.3.0 (R500 VAP regs, MSPOS regs, fixed tex3D size checking) */
|
||||
boolean drm_2_3_0;
|
||||
/* DRM 2.6.0 (Hyper-Z, GB_Z_PEQ_CONFIG allowed on rv350->r4xx) */
|
||||
/* DRM 2.6.0 (Hyper-Z, GB_Z_PEQ_CONFIG allowed on rv350->r4xx, FG_ALPHA_VALUE) */
|
||||
boolean drm_2_6_0;
|
||||
/* DRM 2.8.0 (US_FORMAT regs, ARGB2101010 colorbuffer) */
|
||||
boolean drm_2_8_0;
|
||||
/* Hyper-Z user */
|
||||
boolean hyperz;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue