Commit 0f457e48 authored by Marek Olšák's avatar Marek Olšák Committed by Dave Airlie

drm/radeon/kms: allow "invalid" DB formats as a means to disable DB

Signed-off-by: default avatarMarek Olšák <maraeo@gmail.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 0d7614f0
...@@ -961,13 +961,15 @@ static int evergreen_cs_track_check(struct radeon_cs_parser *p) ...@@ -961,13 +961,15 @@ static int evergreen_cs_track_check(struct radeon_cs_parser *p)
if (track->db_dirty) { if (track->db_dirty) {
/* Check stencil buffer */ /* Check stencil buffer */
if (G_028800_STENCIL_ENABLE(track->db_depth_control)) { if (G_028044_FORMAT(track->db_s_info) != V_028044_STENCIL_INVALID &&
G_028800_STENCIL_ENABLE(track->db_depth_control)) {
r = evergreen_cs_track_validate_stencil(p); r = evergreen_cs_track_validate_stencil(p);
if (r) if (r)
return r; return r;
} }
/* Check depth buffer */ /* Check depth buffer */
if (G_028800_Z_ENABLE(track->db_depth_control)) { if (G_028040_FORMAT(track->db_z_info) != V_028040_Z_INVALID &&
G_028800_Z_ENABLE(track->db_depth_control)) {
r = evergreen_cs_track_validate_depth(p); r = evergreen_cs_track_validate_depth(p);
if (r) if (r)
return r; return r;
......
...@@ -1277,6 +1277,8 @@ ...@@ -1277,6 +1277,8 @@
#define S_028044_FORMAT(x) (((x) & 0x1) << 0) #define S_028044_FORMAT(x) (((x) & 0x1) << 0)
#define G_028044_FORMAT(x) (((x) >> 0) & 0x1) #define G_028044_FORMAT(x) (((x) >> 0) & 0x1)
#define C_028044_FORMAT 0xFFFFFFFE #define C_028044_FORMAT 0xFFFFFFFE
#define V_028044_STENCIL_INVALID 0
#define V_028044_STENCIL_8 1
#define G_028044_TILE_SPLIT(x) (((x) >> 8) & 0x7) #define G_028044_TILE_SPLIT(x) (((x) >> 8) & 0x7)
#define DB_Z_READ_BASE 0x28048 #define DB_Z_READ_BASE 0x28048
#define DB_STENCIL_READ_BASE 0x2804c #define DB_STENCIL_READ_BASE 0x2804c
......
...@@ -764,8 +764,10 @@ static int r600_cs_track_check(struct radeon_cs_parser *p) ...@@ -764,8 +764,10 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)
} }
/* Check depth buffer */ /* Check depth buffer */
if (track->db_dirty && (G_028800_STENCIL_ENABLE(track->db_depth_control) || if (track->db_dirty &&
G_028800_Z_ENABLE(track->db_depth_control))) { G_028010_FORMAT(track->db_depth_info) != V_028010_DEPTH_INVALID &&
(G_028800_STENCIL_ENABLE(track->db_depth_control) ||
G_028800_Z_ENABLE(track->db_depth_control))) {
r = r600_cs_track_validate_db(p); r = r600_cs_track_validate_db(p);
if (r) if (r)
return r; return r;
......
...@@ -59,9 +59,10 @@ ...@@ -59,9 +59,10 @@
* 2.15.0 - add max_pipes query * 2.15.0 - add max_pipes query
* 2.16.0 - fix evergreen 2D tiled surface calculation * 2.16.0 - fix evergreen 2D tiled surface calculation
* 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx * 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx
* 2.18.0 - r600-eg: allow "invalid" DB formats
*/ */
#define KMS_DRIVER_MAJOR 2 #define KMS_DRIVER_MAJOR 2
#define KMS_DRIVER_MINOR 17 #define KMS_DRIVER_MINOR 18
#define KMS_DRIVER_PATCHLEVEL 0 #define KMS_DRIVER_PATCHLEVEL 0
int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
int radeon_driver_unload_kms(struct drm_device *dev); int radeon_driver_unload_kms(struct drm_device *dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment