[Mesa-dev] Status of radeonsi NIR
Hi all, I did some more test runs with NIR and shader-db. This time they also include piglit shaders. There was only one crash that was explicitly related to NIR but also quite a number of regressions that might be worth looking at. I've put the results up on https://github.com/bendat78/mymesa/tree/mymesa2/testresults look at the most current run* directory. (a) => CRASHED <= while processing these shaders: shaders/piglit/da1588b9fd1ec5009a02ff9ee244f11923d32855_3.shader_test [require] GLSL >= 1.10 [vertex shader] #version 110 #if __VERSION__ >= 130 in vec4 piglit_vertex; #else attribute vec4 piglit_vertex; #endif void main() { gl_Position = piglit_vertex; } [fragment shader] #version 110 uniform float id; void main() { ivec4 test = ivec4(0, 1, 0, 0); vec4 test2 = vec4(0.0, 1.0, 0.0, 0.0); int index = int(id); float col = test2[test[index]]; gl_FragColor = vec4(col); } (b) Might be worth looking at this one as it is related to Alien Isolation and has significant regressions VGPRS: 4 -> 64 (1500.00 %) (in shaders/piglit/51e07b0ac242a7c22d5d519ea8b3e4f7ac8e51f9_2.shader_test) Spilled VGPRs: 0 -> 46 (0.00 %) (in shaders/piglit/51e07b0ac242a7c22d5d519ea8b3e4f7ac8e51f9_2.shader_test) Scratch size: 0 -> 36 (0.00 %) dwords per thread (in shaders/piglit/51e07b0ac242a7c22d5d519ea8b3e4f7ac8e51f9_2.shader_test) Code Size: 108 -> 7148 (6518.52 %) bytes (in shaders/piglit/51e07b0ac242a7c22d5d519ea8b3e4f7ac8e51f9_2.shader_test) # Tests linking a shader with a large workgroup and local data set. # # This is related to: # Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93840 # # There are two important elements to this test: # # 1. local workgroup size of 1024 based on the spec requirements. # # 2. Use a 'large' size of live local data. In the test this is #controlled with the SIZE macro. This is hardware specific, and #the value of 64 was chosen because it was observed to fail on the #Mesa i965 driver. [require] GL >= 3.3 GLSL >= 3.30 GL_ARB_compute_shader [compute shader] #version 330 #extension GL_ARB_compute_shader: enable layout(local_size_x = 1024) in; #define SIZE 64 shared int sa[SIZE]; void main() { int a[SIZE] = sa; a[int(gl_LocalInvocationIndex) % SIZE] += 1; if (a[int(gl_LocalInvocationIndex) % SIZE] == 0) sa[0] = 1; } [test] link success (c) there are a number of shaders that show this kind of behavior (dont know if they do for the same reason): Max Waves: 8 -> 1 (-87.50 %) (in shaders/piglit/31a96d9a82c154da664023713921aab10967ef83_1533.shader_test) from /** @file glsl-max-varyings.c * * Tests whether each varying can be used at all numbers of varyings up to * GL_MAX_VARYING_FLOATS / 4. */ Have fun, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
RX460 4GB Am 04.04.2018 um 15:59 schrieb Timothy Arceri: > On 04/04/18 22:53, Benedikt Schemmer wrote: >> Hi Timothy, >> >> another game that is behaving strangly is Metro 2033 Redux, also crashes >> earlier with apitrace attached. This time TGSI and NIR crash at about >> the same time (press any key to continue screen) >> Without apitrace TGSI works fine, NIR crashes like above. > > Strange. This game works fine for me on NIR, what card did you say you > were testing on? > >> >> ==> metronir <== >> 2059446 glDisableVertexAttribArray(index = 8) >> 2059447 glDisableVertexAttribArray(index = 9) >> 2059448 glDisableVertexAttribArray(index = 10) >> 2059449 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer >> = 3) >> 2059450 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = >> blob(352), usage = GL_DYNAMIC_DRAW) >> 2059451 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 720, type >> = GL_UNSIGNED_SHORT, indices = 0x176a6, basevertex = 15823) >> 2059452 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer >> = 3) >> 2059453 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = >> blob(352), usage = GL_DYNAMIC_DRAW) >> 2059454 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 711, type >> = GL_UNSIGNED_SHORT, indices = 0x17c46, basevertex = 16303) >> 2059455 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer >> = 3) >> >> ==> metrotgsi <== >> 1744537 glEnableVertexAttribArray(index = 4) >> 1744538 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, >> stride = 32, pointer = 0x18) >> 1744539 glVertexAttribDivisor(index = 4, divisor = 0) >> 1744540 glDisableVertexAttribArray(index = 5) >> 1744541 glDisableVertexAttribArray(index = 6) >> 1744542 glDisableVertexAttribArray(index = 7) >> 1744543 glDisableVertexAttribArray(index = 8) >> 1744544 glDisableVertexAttribArray(index = 9) >> 1744545 glDisableVertexAttribArray(index = 10) >> 1744546 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer >> = 3) >> >> ==> metrotgsi2 <== >> 2141178 glVertexAttribDivisor(index = 1, divisor = 0) >> 2141179 glEnableVertexAttribArray(index = 2) >> 2141180 glVertexAttribPointer(index = 2, size = 4, type = >> GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x10) >> 2141181 glVertexAttribDivisor(index = 2, divisor = 0) >> 2141182 glEnableVertexAttribArray(index = 3) >> 2141183 glVertexAttribPointer(index = 3, size = 4, type = >> GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x14) >> 2141184 glVertexAttribDivisor(index = 3, divisor = 0) >> 2141185 glEnableVertexAttribArray(index = 4) >> 2141186 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, >> stride = 32, pointer = 0x18) >> 2141187 glVertexAttribDivisor(index = 4, divisor = 0) // incomplete >> >> >> Am 04.04.2018 um 14:06 schrieb Timothy Arceri: >>> On 04/04/18 21:51, Benedikt Schemmer wrote: Hi Timothy, thanks for looking into this. Dead Island still crashes for me with NIR. >>> >>> Just to make sure, are you building a 32bit version of Mesa? If not you >>> might be running your system Mesa. If you are definitely building Mesa >>> 32bit then I'll take a closer look tomorrow. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
On 04/04/18 22:53, Benedikt Schemmer wrote: Hi Timothy, another game that is behaving strangly is Metro 2033 Redux, also crashes earlier with apitrace attached. This time TGSI and NIR crash at about the same time (press any key to continue screen) Without apitrace TGSI works fine, NIR crashes like above. Strange. This game works fine for me on NIR, what card did you say you were testing on? ==> metronir <== 2059446 glDisableVertexAttribArray(index = 8) 2059447 glDisableVertexAttribArray(index = 9) 2059448 glDisableVertexAttribArray(index = 10) 2059449 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) 2059450 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = blob(352), usage = GL_DYNAMIC_DRAW) 2059451 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 720, type = GL_UNSIGNED_SHORT, indices = 0x176a6, basevertex = 15823) 2059452 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) 2059453 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = blob(352), usage = GL_DYNAMIC_DRAW) 2059454 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 711, type = GL_UNSIGNED_SHORT, indices = 0x17c46, basevertex = 16303) 2059455 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) ==> metrotgsi <== 1744537 glEnableVertexAttribArray(index = 4) 1744538 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, stride = 32, pointer = 0x18) 1744539 glVertexAttribDivisor(index = 4, divisor = 0) 1744540 glDisableVertexAttribArray(index = 5) 1744541 glDisableVertexAttribArray(index = 6) 1744542 glDisableVertexAttribArray(index = 7) 1744543 glDisableVertexAttribArray(index = 8) 1744544 glDisableVertexAttribArray(index = 9) 1744545 glDisableVertexAttribArray(index = 10) 1744546 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) ==> metrotgsi2 <== 2141178 glVertexAttribDivisor(index = 1, divisor = 0) 2141179 glEnableVertexAttribArray(index = 2) 2141180 glVertexAttribPointer(index = 2, size = 4, type = GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x10) 2141181 glVertexAttribDivisor(index = 2, divisor = 0) 2141182 glEnableVertexAttribArray(index = 3) 2141183 glVertexAttribPointer(index = 3, size = 4, type = GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x14) 2141184 glVertexAttribDivisor(index = 3, divisor = 0) 2141185 glEnableVertexAttribArray(index = 4) 2141186 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, stride = 32, pointer = 0x18) 2141187 glVertexAttribDivisor(index = 4, divisor = 0) // incomplete Am 04.04.2018 um 14:06 schrieb Timothy Arceri: On 04/04/18 21:51, Benedikt Schemmer wrote: Hi Timothy, thanks for looking into this. Dead Island still crashes for me with NIR. Just to make sure, are you building a 32bit version of Mesa? If not you might be running your system Mesa. If you are definitely building Mesa 32bit then I'll take a closer look tomorrow. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Just for baseline: I have no problem running and creating apitraces from Bioshock Infinite or TombRaider, I think both 32-bit CAT Interstellar which is 64-bit using this command R600_DEBUG=nir apitrace trace --output=/home/nano/bio2 %command% and building either the 64 or 32 bit version of apitrace Am 04.04.2018 um 14:06 schrieb Timothy Arceri: > On 04/04/18 21:51, Benedikt Schemmer wrote: >> Hi Timothy, >> >> thanks for looking into this. >> >> Dead Island still crashes for me with NIR. > > Just to make sure, are you building a 32bit version of Mesa? If not you > might be running your system Mesa. If you are definitely building Mesa > 32bit then I'll take a closer look tomorrow. R600_DEBUG=nir apitrace trace --output=/home/nano/bio2 %command% ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Hi Timothy, another game that is behaving strangly is Metro 2033 Redux, also crashes earlier with apitrace attached. This time TGSI and NIR crash at about the same time (press any key to continue screen) Without apitrace TGSI works fine, NIR crashes like above. ==> metronir <== 2059446 glDisableVertexAttribArray(index = 8) 2059447 glDisableVertexAttribArray(index = 9) 2059448 glDisableVertexAttribArray(index = 10) 2059449 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) 2059450 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = blob(352), usage = GL_DYNAMIC_DRAW) 2059451 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 720, type = GL_UNSIGNED_SHORT, indices = 0x176a6, basevertex = 15823) 2059452 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) 2059453 glBufferData(target = GL_UNIFORM_BUFFER, size = 352, data = blob(352), usage = GL_DYNAMIC_DRAW) 2059454 glDrawElementsBaseVertex(mode = GL_TRIANGLES, count = 711, type = GL_UNSIGNED_SHORT, indices = 0x17c46, basevertex = 16303) 2059455 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) ==> metrotgsi <== 1744537 glEnableVertexAttribArray(index = 4) 1744538 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, stride = 32, pointer = 0x18) 1744539 glVertexAttribDivisor(index = 4, divisor = 0) 1744540 glDisableVertexAttribArray(index = 5) 1744541 glDisableVertexAttribArray(index = 6) 1744542 glDisableVertexAttribArray(index = 7) 1744543 glDisableVertexAttribArray(index = 8) 1744544 glDisableVertexAttribArray(index = 9) 1744545 glDisableVertexAttribArray(index = 10) 1744546 glBindBufferBase(target = GL_UNIFORM_BUFFER, index = 1, buffer = 3) ==> metrotgsi2 <== 2141178 glVertexAttribDivisor(index = 1, divisor = 0) 2141179 glEnableVertexAttribArray(index = 2) 2141180 glVertexAttribPointer(index = 2, size = 4, type = GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x10) 2141181 glVertexAttribDivisor(index = 2, divisor = 0) 2141182 glEnableVertexAttribArray(index = 3) 2141183 glVertexAttribPointer(index = 3, size = 4, type = GL_UNSIGNED_BYTE, normalized = GL_TRUE, stride = 32, pointer = 0x14) 2141184 glVertexAttribDivisor(index = 3, divisor = 0) 2141185 glEnableVertexAttribArray(index = 4) 2141186 glVertexAttribIPointer(index = 4, size = 4, type = GL_SHORT, stride = 32, pointer = 0x18) 2141187 glVertexAttribDivisor(index = 4, divisor = 0) // incomplete Am 04.04.2018 um 14:06 schrieb Timothy Arceri: > On 04/04/18 21:51, Benedikt Schemmer wrote: >> Hi Timothy, >> >> thanks for looking into this. >> >> Dead Island still crashes for me with NIR. > > Just to make sure, are you building a 32bit version of Mesa? If not you > might be running your system Mesa. If you are definitely building Mesa > 32bit then I'll take a closer look tomorrow. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
No I dont. 32-bit is a problem, because Ubuntu wants to literally deinstall itself before letting me do that (some dependency nonsense). So I only build 64-bit myself. For 32-bit & backup 64-bit I use the oibaf ppa which I updated this morning. I wouldnt spend to much time right now, because mesa git feels a bit broken. If I switch to stable versions like 17.3.8 most problems disappear (but so does NIR I guess ;) Am 04.04.2018 um 14:06 schrieb Timothy Arceri: > On 04/04/18 21:51, Benedikt Schemmer wrote: >> Hi Timothy, >> >> thanks for looking into this. >> >> Dead Island still crashes for me with NIR. > > Just to make sure, are you building a 32bit version of Mesa? If not you > might be running your system Mesa. If you are definitely building Mesa > 32bit then I'll take a closer look tomorrow. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
On 04/04/18 21:51, Benedikt Schemmer wrote: Hi Timothy, thanks for looking into this. Dead Island still crashes for me with NIR. Just to make sure, are you building a 32bit version of Mesa? If not you might be running your system Mesa. If you are definitely building Mesa 32bit then I'll take a closer look tomorrow. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Hi Timothy, thanks for looking into this. Dead Island still crashes for me with NIR. However when I attach apitrace it behaves even more strangely, both TGSI and NIR crash. TGSI gets a little further. Without apitrace I can play the game with TGSI and it reproducibly crashes during shader compilation (Loading Resort screen) with NIR. Dont spend too much time on this though I think it might be related to changes in mesa itself (memory leaks?) not necessarily NIR. I used apitrace trace --output=/home/nano/deadbeaf5 %command% in the launch options of steam, otherwise I dont even get this far or apitrace disattaches itself from the process and no trace is output tails ==> nircrash <== 186658 glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 0, yoffset = 0, width = 1280, height = 720, format = GL_RED, type = GL_UNSIGNED_BYTE, pixels = blob(921600)) 186659 glGenerateMipmap(target = GL_TEXTURE_2D) 186660 glXMakeCurrent(dpy = 0xcb62580, drawable = 0, ctx = NULL) = True 186661 glXMakeCurrent(dpy = 0xcb62580, drawable = 39845908, ctx = 0xce13840) = True 186662 glBindTexture(target = GL_TEXTURE_2D, texture = 129) 186663 glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 0, yoffset = 0, width = 640, height = 360, format = GL_RED, type = GL_UNSIGNED_BYTE, pixels = blob(230400)) 186664 glGenerateMipmap(target = GL_TEXTURE_2D) 186665 glXMakeCurrent(dpy = 0xcb62580, drawable = 0, ctx = NULL) = True 18 glXMakeCurrent(dpy = 0xcb62580, drawable = 39845908, ctx = 0xce13840) = True 186667 glBindTexture(target = GL_TEXTURE_2D, texture = 130) ==> nircrash2 <== 167095 glEnable(cap = GL_FRAMEBUFFER_SRGB) 167096 glClearColor(red = 0, green = 0, blue = 0, alpha = 1) 167097 glClear(mask = GL_COLOR_BUFFER_BIT) 167098 glClearColor(red = 0, green = 0, blue = 0, alpha = 0) 167099 glBindTexture(target = GL_TEXTURE_2D, texture = 128) 167100 glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 0, yoffset = 0, width = 1280, height = 720, format = GL_RED, type = GL_UNSIGNED_BYTE, pixels = blob(921600)) 167101 glGenerateMipmap(target = GL_TEXTURE_2D) 167102 glXMakeCurrent(dpy = 0xcc99820, drawable = 0, ctx = NULL) = True 167103 glXMakeCurrent(dpy = 0xcc99820, drawable = 39845908, ctx = 0xcf4bd50) = True 167104 glBindTexture(target = GL_TEXTURE_2D, texture = 129) ==> nircrash3 <== 156903 glEnable(cap = GL_FRAMEBUFFER_SRGB) 156904 glClearColor(red = 0, green = 0, blue = 0, alpha = 1) 156905 glClear(mask = GL_COLOR_BUFFER_BIT) 156906 glClearColor(red = 0, green = 0, blue = 0, alpha = 0) 156907 glBindTexture(target = GL_TEXTURE_2D, texture = 128) 156908 glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 0, yoffset = 0, width = 1280, height = 720, format = GL_RED, type = GL_UNSIGNED_BYTE, pixels = blob(921600)) 156909 glGenerateMipmap(target = GL_TEXTURE_2D) 156910 glXMakeCurrent(dpy = 0xc97f820, drawable = 0, ctx = NULL) = True 156911 glXMakeCurrent(dpy = 0xc97f820, drawable = 39845908, ctx = 0xcc57650) = True 156912 glBindTexture(target = GL_TEXTURE_2D, texture = 129) ==> tgsicrash <== 256272 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 39845908, ctx = 0xc974890) = True 256273 glEnable(cap = GL_CULL_FACE) 256274 glFrontFace(mode = GL_CW) 256275 glDepthMask(flag = GL_FALSE) 256276 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 0, ctx = NULL) = True 256277 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 39845908, ctx = 0xc974890) = True 256278 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 0, ctx = NULL) = True 256279 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 39845908, ctx = 0xc974890) = True 256280 glXSwapIntervalMESA(interval = 0) = 0 256281 glXMakeCurrent(dpy = 0xc6d26d0, drawable = 0, ctx = NULL) = True ==> tgsicrash2 <== 294167 glXMakeCurrent(dpy = 0xcbbc820, drawable = 39845908, ctx = 0xce69b30) = True 294168 glEnable(cap = GL_CULL_FACE) 294169 glFrontFace(mode = GL_CW) 294170 glDepthMask(flag = GL_FALSE) 294171 glXMakeCurrent(dpy = 0xcbbc820, drawable = 0, ctx = NULL) = True 294172 glXMakeCurrent(dpy = 0xcbbc820, drawable = 39845908, ctx = 0xce69b30) = True 294173 glXMakeCurrent(dpy = 0xcbbc820, drawable = 0, ctx = NULL) = True 294174 glXMakeCurrent(dpy = 0xcbbc820, drawable = 39845908, ctx = 0xce69b30) = True 294175 glXSwapIntervalMESA(interval = 0) = 0 294176 glXMakeCurrent(dpy = 0xcbbc820, drawable = 0, ctx = NULL) = True Am 04.04.2018 um 06:05 schrieb Timothy Arceri: > On 31/03/18 02:44, Benedikt Schemmer wrote: >> Hi all, >> >> I did some more testing with NIR and wanted to share the results. >> https://github.com/bendat78/mymesa/tree/mymesa2/testresults >> >> Overall it seems nir could be better than tgsi, but there are some >> shaders with significant regressions and I think that introduces >> framerate drops that are quite noticable in some games (Total War: >> WARHAMMER benchmark for example). > > I ran the benchmark for this game and there was no real difference > between the two backends. Can you try again with current master. > >> >> See the run* directory for comparisons of tgsi vs ni
Re: [Mesa-dev] Status of radeonsi NIR
On 31/03/18 02:44, Benedikt Schemmer wrote: Hi all, I did some more testing with NIR and wanted to share the results. https://github.com/bendat78/mymesa/tree/mymesa2/testresults Overall it seems nir could be better than tgsi, but there are some shaders with significant regressions and I think that introduces framerate drops that are quite noticable in some games (Total War: WARHAMMER benchmark for example). I ran the benchmark for this game and there was no real difference between the two backends. Can you try again with current master. See the run* directory for comparisons of tgsi vs nir for different versions of llvm and tgsi or nir vs different llvm backends (also includes complete shader db output (around 50k shaders)). NIR gets better with every version increase of llvm, which optimizes for code size (why not speed ?). I found no serious regressions so far, however I think that NIR is responsible for some crashes that happen in Metro 2033 Redux (beginning before actual game) and Dead Island classic (ingame) so probably related to compilation issues. I also could not reproduce either of these. If you are still having these problems can you create and apitrace [1]? Thanks for testing. [1] https://github.com/apitrace/apitrace/wiki/Steam Cheers, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] Status of radeonsi NIR
Hi Timothy, I put up another run for you with llvm 7 and mesa git of this morning. Also I pruned duplicate shaders (especially Metro Redux had significant amounts of those) so we're down to ~24k unique shaders. I'm going to use release builds for testing because there is no difference to the debug build and it is significantly faster. Shader-db run times with NIR are about 35% slower though. 540s vs 398s Max Increase: SGPRS: 32 -> 104 (225.00 %) (in shaders/deadisland_definitive/1833.shader_test) VGPRS: 48 -> 216 (350.00 %) (in shaders/dirtrallye/732.shader_test) Spilled SGPRs: 8 -> 78 (875.00 %) (in shaders/f1_2015/1574.shader_test) Spilled VGPRs: 71 -> 76 (7.04 %) (in shaders/dirtrallye/1264.shader_test) Private memory VGPRs: 0 -> 0 (0.00 %) Scratch size: 48 -> 56 (16.67 %) dwords per thread (in shaders/dirtrallye/1264.shader_test) Code Size: 2952 -> 12668 (329.13 %) bytes (in shaders/alien_isolation/5324.shader_test) LDS: 0 -> 0 (0.00 %) blocks Max Waves: 4 -> 8 (100.00 %) (in shaders/borderlands2/2608.shader_test) Wait states: 0 -> 0 (0.00 %) Max Decrease: SGPRS: 104 -> 40 (-61.54 %) (in shaders/csgo/1558.shader_test) VGPRS: 188 -> 136 (-27.66 %) (in shaders/cat/2031.shader_test) Spilled SGPRs: 24 -> 0 (-100.00 %) (in shaders/total_war_shogun_2/1108.shader_test) Spilled VGPRs: 0 -> 0 (0.00 %) Private memory VGPRs: 48 -> 0 (-100.00 %) (in shaders/soma/98.shader_test) Scratch size: 52 -> 0 (-100.00 %) dwords per thread (in shaders/soma/98.shader_test) Code Size: 17060 -> 7404 (-56.60 %) bytes (in shaders/dolphin/ubershaders/228.shader_test) LDS: 0 -> 0 (0.00 %) blocks Max Waves: 8 -> 3 (-62.50 %) (in shaders/f1_2015/1196.shader_test) Wait states: 0 -> 0 (0.00 %) ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Hi all, I did some more testing with NIR and wanted to share the results. https://github.com/bendat78/mymesa/tree/mymesa2/testresults Overall it seems nir could be better than tgsi, but there are some shaders with significant regressions and I think that introduces framerate drops that are quite noticable in some games (Total War: WARHAMMER benchmark for example). See the run* directory for comparisons of tgsi vs nir for different versions of llvm and tgsi or nir vs different llvm backends (also includes complete shader db output (around 50k shaders)). NIR gets better with every version increase of llvm, which optimizes for code size (why not speed ?). I found no serious regressions so far, however I think that NIR is responsible for some crashes that happen in Metro 2033 Redux (beginning before actual game) and Dead Island classic (ingame) so probably related to compilation issues. Cheers, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Hi Timothy, actually I am a subscriber to the list, dont know why this happens from time to time Benchmarkwise: NIR is now on par with TGSI, I put up some new HUD screenshots and benchmarks You might actually be too conservative: TGSI shows 2 spills, NIR 0 For now only two things stand out: some crashes during shader generation in Deus Ex, Dying Light and Dead Island (Original) (see nir test) and TressFX not working correctly in Tomb Raider. Am 07.03.2018 um 05:16 schrieb Timothy Arceri: > On 06/03/18 23:49, Benedikt Schemmer wrote: >> Hi Timothy, >> >> I put some additional benchmark results and data on github for you: > > Thanks! > >> >> https://github.com/bendat78/mymesa/tree/mymesa2/testresults >> >> I use a resolution of 1920x1080 for bioshock but also custom settings >> with all options enabled > > Ok I'll try some different combos and see if I can find any > performance regressions with nir. > >> >> I also wrote another email for the list, but it hasnt appeared yet. > > If you are not subscribed to the list you will need to wait until > someone approves it (which doesn't always happen as people are busy), > it's usually just easier to subscribe to the list and filter the > emails into a folder. > >> >> A log of my testing can be found in the "nir test" file >> >> >> >> Am 06.03.2018 um 07:38 schrieb Timothy Arceri: >>> On 05/03/18 03:43, Benedikt Schemmer wrote: Hi all, I thought I'd do some testing on my machine to see if there are any problems with nir (enabled with R600_DEBUG=nir) Tested on Ubuntu 17.10 with mesa git of today (oibaf for 32 bit, mine with LLVM5.0 on 64 bit because I cant figure out how to build 32bit drivers on ubuntu :( ) Xeon 1260l and 8GB DDR3-10600 with RX460 4GB works means no obvious visual artifacts etc. I didn't have time to do detailed benchmarking. --- Alien Isolation - works Bioshock Infinite - works, nonir Overall avg 45.58, min 9.81, max 104.49; nir avg 31.47 min 8.35 max 94.19 >>> >>> Hi, >>> >>> Do you recall what resolution / settings you used? >>> >>> With a quick test I'm seeing pretty good results on Ultra. >>> >>> 3840 x 2160 - Ultra on RX 580: (tgsi) 90.89, (nir) 107.22 >>> >>> CAT Interstellar (UE4) - works Dead Island Definitive - works Dead Island Riptide Definitive - works Deus Ex: Mankind Divided - works, nonir low 8.3 avg 24.2 high 37.6; nir low 1 avg 22.8 high 35.8 but shader generation crashes two times: once around half the loader bar with complete system freeze and then again around the end but only exiting the applicationand this is reproducible by deleting the shader cache Mad Max[vulcan beta] - works benchmark 1 nonir 43/45/47 nir 10/46/50 benchmark 2 nonir 14/37/41 nir 24/36/40 benchmark 3 nonir 8/43/61 nir 5/41/61 benchmark 4 nonir 9/49/78 nir 4/47/74 Tomb Raider - TressFX doesn't work: hair flickering and is riddled with small green block artifacts, smoothing is missing; speed is the same 28.6 ish Hitman GO (Unity) - works Unity of Command (PyGame, SDL) - works Talos Principle Benchmark nir 64.7 nonir 67 I have more games if there are any usual suspects that are likely to cause problems. Cheers, Benedikt >> ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
On 05/03/18 03:43, Benedikt Schemmer wrote: Hi all, I thought I'd do some testing on my machine to see if there are any problems with nir (enabled with R600_DEBUG=nir) Tested on Ubuntu 17.10 with mesa git of today (oibaf for 32 bit, mine with LLVM5.0 on 64 bit because I cant figure out how to build 32bit drivers on ubuntu :( ) Xeon 1260l and 8GB DDR3-10600 with RX460 4GB works means no obvious visual artifacts etc. I didn't have time to do detailed benchmarking. --- Alien Isolation - works Bioshock Infinite - works, nonir Overall avg 45.58, min 9.81, max 104.49; nir avg 31.47 min 8.35 max 94.19 Hi, Do you recall what resolution / settings you used? With a quick test I'm seeing pretty good results on Ultra. 3840 x 2160 - Ultra on RX 580: (tgsi) 90.89, (nir) 107.22 CAT Interstellar (UE4) - works Dead Island Definitive - works Dead Island Riptide Definitive - works Deus Ex: Mankind Divided - works, nonir low 8.3 avg 24.2 high 37.6; nir low 1 avg 22.8 high 35.8 but shader generation crashes two times: once around half the loader bar with complete system freeze and then again around the end but only exiting the applicationand this is reproducible by deleting the shader cache Mad Max[vulcan beta] - works benchmark 1 nonir 43/45/47 nir 10/46/50 benchmark 2 nonir 14/37/41 nir 24/36/40 benchmark 3 nonir 8/43/61 nir 5/41/61 benchmark 4 nonir 9/49/78 nir 4/47/74 Tomb Raider - TressFX doesn't work: hair flickering and is riddled with small green block artifacts, smoothing is missing; speed is the same 28.6 ish Hitman GO (Unity) - works Unity of Command (PyGame, SDL) - works Talos Principle Benchmark nir 64.7 nonir 67 I have more games if there are any usual suspects that are likely to cause problems. Cheers, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
On 05/03/18 03:43, Benedikt Schemmer wrote: Hi all, I thought I'd do some testing on my machine to see if there are any problems with nir (enabled with R600_DEBUG=nir) Hi Benedikt, Thanks for the results. Everything looks pretty much around where I expected it to be performance wise and seems like regressions aren't too bad which is good. Bioshock Infinite has the most noticeable perf regression in your results and this seems to match the shader-db results. From what I can tell NIR loop enrolling is a little more relaxed than GLSL IR loop unrolling was and we end up doing a bunch of spilling in this games shaders, it will be interesting to see if we can improve spilling or if we need to be a little more conservative with loop unrolling. Anyway thanks again for doing some testing, Tim Tested on Ubuntu 17.10 with mesa git of today (oibaf for 32 bit, mine with LLVM5.0 on 64 bit because I cant figure out how to build 32bit drivers on ubuntu :( ) Xeon 1260l and 8GB DDR3-10600 with RX460 4GB works means no obvious visual artifacts etc. I didn't have time to do detailed benchmarking. --- Alien Isolation - works Bioshock Infinite - works, nonir Overall avg 45.58, min 9.81, max 104.49; nir avg 31.47 min 8.35 max 94.19 CAT Interstellar (UE4) - works Dead Island Definitive - works Dead Island Riptide Definitive - works Deus Ex: Mankind Divided - works, nonir low 8.3 avg 24.2 high 37.6; nir low 1 avg 22.8 high 35.8 but shader generation crashes two times: once around half the loader bar with complete system freeze and then again around the end but only exiting the applicationand this is reproducible by deleting the shader cache Mad Max[vulcan beta] - works benchmark 1 nonir 43/45/47 nir 10/46/50 benchmark 2 nonir 14/37/41 nir 24/36/40 benchmark 3 nonir 8/43/61 nir 5/41/61 benchmark 4 nonir 9/49/78 nir 4/47/74 Tomb Raider - TressFX doesn't work: hair flickering and is riddled with small green block artifacts, smoothing is missing; speed is the same 28.6 ish Hitman GO (Unity) - works Unity of Command (PyGame, SDL) - works Talos Principle Benchmark nir 64.7 nonir 67 I have more games if there are any usual suspects that are likely to cause problems. Cheers, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
Hi all, I thought I'd do some testing on my machine to see if there are any problems with nir (enabled with R600_DEBUG=nir) Tested on Ubuntu 17.10 with mesa git of today (oibaf for 32 bit, mine with LLVM5.0 on 64 bit because I cant figure out how to build 32bit drivers on ubuntu :( ) Xeon 1260l and 8GB DDR3-10600 with RX460 4GB works means no obvious visual artifacts etc. I didn't have time to do detailed benchmarking. --- Alien Isolation - works Bioshock Infinite - works, nonir Overall avg 45.58, min 9.81, max 104.49; nir avg 31.47 min 8.35 max 94.19 CAT Interstellar (UE4) - works Dead Island Definitive - works Dead Island Riptide Definitive - works Deus Ex: Mankind Divided - works, nonir low 8.3 avg 24.2 high 37.6; nir low 1 avg 22.8 high 35.8 but shader generation crashes two times: once around half the loader bar with complete system freeze and then again around the end but only exiting the applicationand this is reproducible by deleting the shader cache Mad Max[vulcan beta] - works benchmark 1 nonir 43/45/47 nir 10/46/50 benchmark 2 nonir 14/37/41 nir 24/36/40 benchmark 3 nonir 8/43/61 nir 5/41/61 benchmark 4 nonir 9/49/78 nir 4/47/74 Tomb Raider - TressFX doesn't work: hair flickering and is riddled with small green block artifacts, smoothing is missing; speed is the same 28.6 ish Hitman GO (Unity) - works Unity of Command (PyGame, SDL) - works Talos Principle Benchmark nir 64.7 nonir 67 I have more games if there are any usual suspects that are likely to cause problems. Cheers, Benedikt ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] Status of radeonsi NIR
On Wed, Feb 28, 2018 at 2:53 AM, Timothy Arceri wrote: > Hi all, > > I thought I'd provide a quick status overview of the radeonsi NIR backend. > I'll attempt to list all outstanding tasks (that I'm aware of) so if you > are interested in working on one of those just give me a heads up so we > don't overlap. > > Also feel free to reply with any feedback on performance and regression > results for games (see below). Although try to avoid games like DoW3 that > make use of bindless textures until the missing support lands. > > -- > Test Suites / Conformance: > -- > > We are starting to look really good here. I don't have recent CTS results > bug it was similar low number of regressions. > > Piglit results for TGSI on Polaris: > >skip: 1555, pass: 24313, warn: 13, fail: 167, crash: 1 > > Piglit results for NIR on Polaris: > >skip: 1555, pass: 24252, warn: 15, fail: 215, crash: 12 > > Summary of these 61 regressions: > > arb_texture_multisample texelfetch bug(s)? >Number of failures: 39 >Cause of failures: Unknown. Probably all the same bug, thus > far I have been unable to spot the issue. Feel free to > debug this :P >Status: Not started >Tests: > arb_texture_multisample > > Missing bindless texture support >Number of failures: 7 >Cause of failures: Mostly known >Status: In progress >Tests: > arb_bindless_texture > > Bug in sampler lowering >Number of failures: 1 >Cause of failures: > nir_lower_samplers_as_deref() only works when > a struct only contains samplers and is therefor no longer used > after lowering. If however the struct also contains ordinary > variables then we need to update its glsl_type after lowering > to remove the sampler members. >Status: Not started >Tests: > ./bin/shader_runner tests/spec/arb_arrays_of_array > s/execution/sampler/vs-struct-nonconst-non-opaque-members.shader_test > -auto -fbo > > arb_enhanced_layouts component offsets bugs >Number of failures: 6 >Cause of failures: Incorrect component offsets >Status: Not started >Tests: arb_enhanced_layouts/execution/component-layout > > Missing NIR/NIR->LLVM support for frexp opcode >Number of failures: 1 >Cause of failures: missing frexp opcode >Status: Not started >Tests: > ./bin/shader_runner tests/spec/arb_gpu_shader_fp64 > /execution/built-in-functions/fs-frexp-dvec4.shader_test -auto -fbo > > arb_tessellation_shader doubles bugs: >Number of failures: 3 >Cause of failures: possibly dual slot varying related. >Status: Not started >Tests: > arb_tessellation_shader > > Bug with explicit location for doubles >Number of failures: 1 >Cause of failures: incorrect location offset? >Status: Not started >Tests: > ./bin/shader_runner tests/spec/arb_gpu_shader_fp64 > /execution/explicit-location-gs-fs-vs.shader_test -auto -fbo > > Shared atomics bug >Number of failures: 1 >Cause of failures: Unknown >Status: Not started >Tests: > ./bin/shader_runner tests/spec/arb_compute_shader/ > execution/shared-atomics.shader_test -auto -fbo > > Non optimal variable indexing: >Number of failures: 1 >Cause of failures: Excessive spilling. Optimisations to the > nir -> llvm path should resolve the issue (see the missing > optimisations section below). >Status: Not started >Tests: > ./bin/shader_runner tests/spec/glsl-1.50/execution > /variable-indexing/gs-input-array-vec3-index-rd.shader_test -auto -fbo > > gs max input components bug > Number of failures: 1 >Cause of failures: Possibly related to the issue above. >Status: Not started >Tests: > ./bin/shader_runner tests/spec/glsl-1.50/execution > /geometry/max-input-components.shader_test -auto -fbo > > > -- > Missing optimisations: > -- > > - There are a number of TODOS in si_shader_nir.c that need to be > finished off. > > - Optimal variable indexing (see Non optimal variable indexing in > the piglit failures above). Need to implement something in nir -> llvm > like si_llvm_emit_fetch() does for TGSI. This will benefit both > radeonsi and radv. > > - Fast path when user data SGPRs point to constant buffer 0 directly. > See si_shader.c:fetch_constant() > > - Need to double check NIR is not lowering anything we can handle > natively. > > - There are likely more improvements we can do for the NIR shader cache. > For one we should probably create a driver function so that we can > call all NIR opts/lowering from the st at link time to avoid variants > having to call these for a second time. > I'm not sure how familiar you are with the current Intel compiler structure (you're far more familiar than most radeonsi developers!), but I've been very happy with our approach. It goes something like this: glsl_to_nir() or s
[Mesa-dev] Status of radeonsi NIR
Hi all, I thought I'd provide a quick status overview of the radeonsi NIR backend. I'll attempt to list all outstanding tasks (that I'm aware of) so if you are interested in working on one of those just give me a heads up so we don't overlap. Also feel free to reply with any feedback on performance and regression results for games (see below). Although try to avoid games like DoW3 that make use of bindless textures until the missing support lands. -- Test Suites / Conformance: -- We are starting to look really good here. I don't have recent CTS results bug it was similar low number of regressions. Piglit results for TGSI on Polaris: skip: 1555, pass: 24313, warn: 13, fail: 167, crash: 1 Piglit results for NIR on Polaris: skip: 1555, pass: 24252, warn: 15, fail: 215, crash: 12 Summary of these 61 regressions: arb_texture_multisample texelfetch bug(s)? Number of failures: 39 Cause of failures: Unknown. Probably all the same bug, thus far I have been unable to spot the issue. Feel free to debug this :P Status: Not started Tests: arb_texture_multisample Missing bindless texture support Number of failures: 7 Cause of failures: Mostly known Status: In progress Tests: arb_bindless_texture Bug in sampler lowering Number of failures: 1 Cause of failures: nir_lower_samplers_as_deref() only works when a struct only contains samplers and is therefor no longer used after lowering. If however the struct also contains ordinary variables then we need to update its glsl_type after lowering to remove the sampler members. Status: Not started Tests: ./bin/shader_runner tests/spec/arb_arrays_of_arrays/execution/sampler/vs-struct-nonconst-non-opaque-members.shader_test -auto -fbo arb_enhanced_layouts component offsets bugs Number of failures: 6 Cause of failures: Incorrect component offsets Status: Not started Tests: arb_enhanced_layouts/execution/component-layout Missing NIR/NIR->LLVM support for frexp opcode Number of failures: 1 Cause of failures: missing frexp opcode Status: Not started Tests: ./bin/shader_runner tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/fs-frexp-dvec4.shader_test -auto -fbo arb_tessellation_shader doubles bugs: Number of failures: 3 Cause of failures: possibly dual slot varying related. Status: Not started Tests: arb_tessellation_shader Bug with explicit location for doubles Number of failures: 1 Cause of failures: incorrect location offset? Status: Not started Tests: ./bin/shader_runner tests/spec/arb_gpu_shader_fp64/execution/explicit-location-gs-fs-vs.shader_test -auto -fbo Shared atomics bug Number of failures: 1 Cause of failures: Unknown Status: Not started Tests: ./bin/shader_runner tests/spec/arb_compute_shader/execution/shared-atomics.shader_test -auto -fbo Non optimal variable indexing: Number of failures: 1 Cause of failures: Excessive spilling. Optimisations to the nir -> llvm path should resolve the issue (see the missing optimisations section below). Status: Not started Tests: ./bin/shader_runner tests/spec/glsl-1.50/execution/variable-indexing/gs-input-array-vec3-index-rd.shader_test -auto -fbo gs max input components bug Number of failures: 1 Cause of failures: Possibly related to the issue above. Status: Not started Tests: ./bin/shader_runner tests/spec/glsl-1.50/execution/geometry/max-input-components.shader_test -auto -fbo -- Missing optimisations: -- - There are a number of TODOS in si_shader_nir.c that need to be finished off. - Optimal variable indexing (see Non optimal variable indexing in the piglit failures above). Need to implement something in nir -> llvm like si_llvm_emit_fetch() does for TGSI. This will benefit both radeonsi and radv. - Fast path when user data SGPRs point to constant buffer 0 directly. See si_shader.c:fetch_constant() - Need to double check NIR is not lowering anything we can handle natively. - There are likely more improvements we can do for the NIR shader cache. For one we should probably create a driver function so that we can call all NIR opts/lowering from the st at link time to avoid variants having to call these for a second time. - Likely a bunch more I've forgotten or missed. - Performance: - More testing is needed. I haven't done much testing here yet, there were some phoronix tests a while back that showed a few regressions in performance. However at that stage we didn't yet have any shader cache and the large MadMax regression was actually causes by an llvm bug (which has been fixed in master 7.0). I'm hopeful any regressions won't be too bad at this stage. -