Skip to content

Commit 0f457e4

Browse files
marekolsakairlied
authored andcommitted
drm/radeon/kms: allow "invalid" DB formats as a means to disable DB
Signed-off-by: Marek Olšák <maraeo@gmail.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by: Dave Airlie <airlied@redhat.com>
1 parent 0d7614f commit 0f457e4

File tree

4 files changed

+12
-5
lines changed

4 files changed

+12
-5
lines changed

drivers/gpu/drm/radeon/evergreen_cs.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -961,13 +961,15 @@ static int evergreen_cs_track_check(struct radeon_cs_parser *p)
961961

962962
if (track->db_dirty) {
963963
/* Check stencil buffer */
964-
if (G_028800_STENCIL_ENABLE(track->db_depth_control)) {
964+
if (G_028044_FORMAT(track->db_s_info) != V_028044_STENCIL_INVALID &&
965+
G_028800_STENCIL_ENABLE(track->db_depth_control)) {
965966
r = evergreen_cs_track_validate_stencil(p);
966967
if (r)
967968
return r;
968969
}
969970
/* Check depth buffer */
970-
if (G_028800_Z_ENABLE(track->db_depth_control)) {
971+
if (G_028040_FORMAT(track->db_z_info) != V_028040_Z_INVALID &&
972+
G_028800_Z_ENABLE(track->db_depth_control)) {
971973
r = evergreen_cs_track_validate_depth(p);
972974
if (r)
973975
return r;

drivers/gpu/drm/radeon/evergreend.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,6 +1277,8 @@
12771277
#define S_028044_FORMAT(x) (((x) & 0x1) << 0)
12781278
#define G_028044_FORMAT(x) (((x) >> 0) & 0x1)
12791279
#define C_028044_FORMAT 0xFFFFFFFE
1280+
#define V_028044_STENCIL_INVALID 0
1281+
#define V_028044_STENCIL_8 1
12801282
#define G_028044_TILE_SPLIT(x) (((x) >> 8) & 0x7)
12811283
#define DB_Z_READ_BASE 0x28048
12821284
#define DB_STENCIL_READ_BASE 0x2804c

drivers/gpu/drm/radeon/r600_cs.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -764,8 +764,10 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)
764764
}
765765

766766
/* Check depth buffer */
767-
if (track->db_dirty && (G_028800_STENCIL_ENABLE(track->db_depth_control) ||
768-
G_028800_Z_ENABLE(track->db_depth_control))) {
767+
if (track->db_dirty &&
768+
G_028010_FORMAT(track->db_depth_info) != V_028010_DEPTH_INVALID &&
769+
(G_028800_STENCIL_ENABLE(track->db_depth_control) ||
770+
G_028800_Z_ENABLE(track->db_depth_control))) {
769771
r = r600_cs_track_validate_db(p);
770772
if (r)
771773
return r;

drivers/gpu/drm/radeon/radeon_drv.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@
5959
* 2.15.0 - add max_pipes query
6060
* 2.16.0 - fix evergreen 2D tiled surface calculation
6161
* 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx
62+
* 2.18.0 - r600-eg: allow "invalid" DB formats
6263
*/
6364
#define KMS_DRIVER_MAJOR 2
64-
#define KMS_DRIVER_MINOR 17
65+
#define KMS_DRIVER_MINOR 18
6566
#define KMS_DRIVER_PATCHLEVEL 0
6667
int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
6768
int radeon_driver_unload_kms(struct drm_device *dev);

0 commit comments

Comments
 (0)