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

Author: Marek Olšák <[email protected]>
Date:   Tue Jul 25 00:08:55 2017 +0200

ac/surface: fix hybrid graphics where APU=GFX9, dGPU=older

v2: don't do it for compressed textures (bpp = 0)

Cc: 17.2 <[email protected]>
Reviewed-by: Alex Deucher <[email protected]> (v1)
Reviewed-by: Nicolai Hähnle <[email protected]> (v1)

---

 src/amd/common/ac_surface.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c
index cd3d7b715c..26f3729adf 100644
--- a/src/amd/common/ac_surface.c
+++ b/src/amd/common/ac_surface.c
@@ -257,6 +257,18 @@ static int gfx6_compute_level(ADDR_HANDLE addrlib,
        AddrSurfInfoIn->width = u_minify(config->info.width, level);
        AddrSurfInfoIn->height = u_minify(config->info.height, level);
 
+       /* Make GFX6 linear surfaces compatible with GFX9 for hybrid graphics,
+        * because GFX9 needs linear alignment of 256 bytes.
+        */
+       if (config->info.levels == 1 &&
+           AddrSurfInfoIn->tileMode == ADDR_TM_LINEAR_ALIGNED &&
+           AddrSurfInfoIn->bpp) {
+               unsigned alignment = 256 / (AddrSurfInfoIn->bpp / 8);
+
+               assert(util_is_power_of_two(AddrSurfInfoIn->bpp));
+               AddrSurfInfoIn->width = align(AddrSurfInfoIn->width, alignment);
+       }
+
        if (config->is_3d)
                AddrSurfInfoIn->numSlices = u_minify(config->info.depth, level);
        else if (config->is_cube)

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to