Mesa (master): gallium/radeon: Only loop up to last_level for drm<-> winsys conversion

Michel Dänzer daenzer at kemper.freedesktop.org
Fri Nov 4 07:55:54 UTC 2016


Module: Mesa
Branch: master
Commit: 38fb9aa1aa8a25443196a6fdbe21d538ba91a347
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=38fb9aa1aa8a25443196a6fdbe21d538ba91a347

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Nov  2 18:43:37 2016 +0900

gallium/radeon: Only loop up to last_level for drm<->winsys conversion

Fixes spurious assertion failure in surf_level_drm_to_winsys when
starting X, due to processing a miplevel which was never initialized.

Fixes: e9c76eeeaa67 ("gallium/radeon: remove radeon_surf_level::pitch_bytes")
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/winsys/radeon/drm/radeon_drm_surface.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_surface.c b/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
index c6fa475..e3eea59 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
@@ -157,7 +157,7 @@ static void surf_winsys_to_drm(struct radeon_surface *surf_drm,
     surf_drm->tile_split = surf_ws->tile_split;
     surf_drm->stencil_tile_split = surf_ws->stencil_tile_split;
 
-    for (i = 0; i < RADEON_SURF_MAX_LEVELS; i++) {
+    for (i = 0; i <= surf_drm->last_level; i++) {
         surf_level_winsys_to_drm(&surf_drm->level[i], &surf_ws->level[i], bpe);
         surf_level_winsys_to_drm(&surf_drm->stencil_level[i],
                                  &surf_ws->stencil_level[i], bpe);
@@ -192,7 +192,7 @@ static void surf_drm_to_winsys(struct radeon_drm_winsys *ws,
 
     surf_ws->macro_tile_index = cik_get_macro_tile_index(surf_ws);
 
-    for (i = 0; i < RADEON_SURF_MAX_LEVELS; i++) {
+    for (i = 0; i <= surf_drm->last_level; i++) {
         surf_level_drm_to_winsys(&surf_ws->level[i], &surf_drm->level[i],
                                  surf_drm->bpe * surf_drm->nsamples);
         surf_level_drm_to_winsys(&surf_ws->stencil_level[i],




More information about the mesa-commit mailing list