Announcement

Collapse
No announcement yet.

radeonsi - help me to undesrtand opengl supported version

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • radeonsi - help me to undesrtand opengl supported version

    Code:
    lspci | grep -i vga
    02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290]
    Code:
    glxinfo | grep -i opengl
    OpenGL vendor string: X.Org
    OpenGL renderer string: Gallium 0.4 on AMD HAWAII
    OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.7.0-devel (git-ff0a41b 2015-07-04 vivid-oibaf-ppa)
    OpenGL core profile shading language version string: 3.30
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    OpenGL core profile extensions:
    OpenGL version string: 3.0 Mesa 10.7.0-devel (git-ff0a41b 2015-07-04 vivid-oibaf-ppa)
    OpenGL shading language version string: 1.30
    OpenGL context flags: (none)
    OpenGL extensions:
    OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.7.0-devel (git-ff0a41b 2015-07-04 vivid-oibaf-ppa)
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
    OpenGL ES profile extensions
    As you can see i'm using the latest oibaf driver with a R9 290, what i doesn't understand is why i have only the 3.0 OpenGL support and 1.3 GLSL.
    Regarding mesamatrix.net i should have 3.3 for both, what i'm missing?

    Thanks
    Last edited by andoride; 07-05-2015, 09:07 AM.

  • #2
    Code:
    [...]
    OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.7.0-devel (git-ff0a41b 2015-07-04 vivid-oibaf-ppa)
    OpenGL core profile shading language version string: 3.30
    [...]
    That's the important part. New opengl versions (>3.0) are only going to be implemented in the core profile version.

    Comment


    • #3
      Thanks for the info.

      So steam use the wrong path for detect opengl version?

      Code:
      Video Card:
          Driver:  X.Org Gallium 0.4 on AMD HAWAII
      
          Driver Version:  3.0 Mesa 10.7.0-devel (git-ff0a41b 2015-07-04 vivid-oibaf-ppa)
          OpenGL Version: 3.0
          Desktop Color Depth: 24 bits per pixel
          Monitor Refresh Rate: 60 Hz
          VendorID:  0x1002
          DeviceID:  0x67b1
          Number of Monitors:  1
          Number of Logical Video Cards:  1
          Primary Display Resolution:  1920 x 1080
          Desktop Resolution: 1920 x 1080
          Primary Display Size: 20,08" x 11,30"  (23,03" diag)
                                                  51,0cm x 28,7cm  (58,5cm diag)
          Primary VRAM Not Detected

      Comment


      • #4
        Yes and no.

        They are correct to report 3.0, because both core and compatibility profile (which didn't exist in <=3.0) are only available up to 3.0.
        But what steam detects doesn't really matter and is probably only used for your info and their survey.

        The important part is what the games are doing. If they want to use opengl >3.0 they have to request a core context, otherwise you'll only get 3.0.
        I haven't had any problems with this but there aren't many games out there for linux using opengl 3.0.

        I you have a problem with a specific game and want to see if it uses only a core context or only needs newer glsl, but fails to request this properly there are env variables to make mesa report different (even unsupported) version of opengl or glsl:

        http://www.mesa3d.org/envvars.html
        Code:
        MESA_GL_VERSION_OVERRIDE - changes the value returned by glGetString(GL_VERSION) and possibly the GL API type.
        The format should be MAJOR.MINOR[FC]
                    FC is an optional suffix that indicates a forward compatible context. This is only valid for versions >= 3.0.
                    GL versions < 3.0 are set to a compatibility (non-Core) profile
                    GL versions = 3.0, see below
                    GL versions > 3.0 are set to a Core profile
                    Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
                    2.1 - select a compatibility (non-Core) profile with GL version 2.1
                    3.0 - select a compatibility (non-Core) profile with GL version 3.0
                    3.0FC - select a Core+Forward Compatible profile with GL version 3.0
                    3.1 - select a Core profile with GL version 3.1
                    3.1FC - select a Core+Forward Compatible profile with GL version 3.1
                    Mesa may not really implement all the features of the given version. (for developers only)
        
        MESA_GLSL_VERSION_OVERRIDE - changes the value returned by glGetString(GL_SHADING_LANGUAGE_VERSION). Valid values are integers, such as "130". Mesa will not really implement all the features of the given language version if it's higher than what's normally reported. (for developers only)
        If this work you can enforce this also by setting special rules for a specific binary with ~/.drirc so you don't have to provide the env variables all the time.

        Something like this:
        Code:
        <driconf>
            <device>
                <application name="Unigine Heaven (64-bit)" executable="heaven_x64">
                    <option name="force_glsl_extensions_warn" value="true" />
                    <option name="disable_blend_func_extended" value="true" />
                    <option name="force_glsl_version" value="130" />
                    <option name="disable_shader_bit_encoding" value="true" />
                    <option name="allow_glsl_extension_directive_midshader" value="true" />
                </application>
            </device>
        </driconf>

        Comment


        • #5
          Thanks for the useful info.
          The funny thing is that steam refuse to start if i force the env variables like this :

          Code:
          export MESA_GL_VERSION_OVERRIDE=3.3
          export MESA_GLSL_VERSION_OVERRIDE=330
          strace steam
          execve("/usr/games/steam", ["steam"], [/* 76 vars */]) = 0
          brk(0)                                  = 0x7fed48105000
          access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
          mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fed46ff3000
          access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
          open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
          fstat(3, {st_mode=S_IFREG|0644, st_size=144549, ...}) = 0
          mmap(NULL, 144549, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fed46fcf000
          close(3)                                = 0
          access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
          open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
          read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\v\2\0\0\0\0\0"..., 832) = 832
          fstat(3, {st_mode=S_IFREG|0755, st_size=1869392, ...}) = 0
          mmap(NULL, 3972864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fed467ea000
          mprotect(0x7fed469aa000, 2097152, PROT_NONE) = 0
          mmap(0x7fed46baa000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c0000) = 0x7fed46baa000
          mmap(0x7fed46bb0000, 16128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fed46bb0000
          close(3)                                = 0
          mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fed46fce000
          mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fed46fcd000
          mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fed46fcc000
          arch_prctl(ARCH_SET_FS, 0x7fed46fcd700) = 0
          mprotect(0x7fed46baa000, 16384, PROT_READ) = 0
          mprotect(0x7fed46ff5000, 8192, PROT_READ) = 0
          mprotect(0x7fed46dd7000, 4096, PROT_READ) = 0
          munmap(0x7fed46fcf000, 144549)          = 0
          getpid()                                = 11465
          rt_sigaction(SIGCHLD, {0x7fed46dec460, ~[RTMIN RT_1], SA_RESTORER, 0x7fed4681f2f0}, NULL, 8) = 0
          geteuid()                               = 1000
          brk(0)                                  = 0x7fed48105000
          brk(0x7fed48126000)                     = 0x7fed48126000
          getppid()                               = 11462
          stat("/home/user/.steam/steamapps/common/Dying Light", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
          stat(".", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
          open("/usr/games/steam", O_RDONLY)      = 3
          fcntl(3, F_DUPFD, 10)                   = 10
          close(3)                                = 0
          fcntl(10, F_SETFD, FD_CLOEXEC)          = 0
          rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
          rt_sigaction(SIGINT, {0x7fed46dec460, ~[RTMIN RT_1], SA_RESTORER, 0x7fed4681f2f0}, NULL, 8) = 0
          rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
          rt_sigaction(SIGQUIT, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7fed4681f2f0}, NULL, 8) = 0
          rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
          rt_sigaction(SIGTERM, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7fed4681f2f0}, NULL, 8) = 0
          read(10, "#!/bin/sh\n# Copyright (C) 2013-2"..., 8192) = 613
          stat("/home/user/.steam", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
          geteuid()                               = 1000
          faccessat(AT_FDCWD, "/home/user/.steam/steam.sh", X_OK) = 0
          stat("/home/user/.steam/ubuntu12_32", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
          geteuid()                               = 1000
          faccessat(AT_FDCWD, "/home/user/.steam/ubuntu12_32/steam", X_OK) = 0
          geteuid()                               = 1000
          faccessat(AT_FDCWD, "/home/user/.steam/steam.sh", X_OK) = 0
          open("/home/user/.steam/error.log", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
          fcntl(2, F_DUPFD, 10)                   = 11
          close(2)                                = 0
          fcntl(11, F_SETFD, FD_CLOEXEC)          = 0
          dup2(3, 2)                              = 2
          close(3)                                = 0
          clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fed46fcd9d0) = 11466
          wait4(-1, Running Steam on ubuntu 15.04 64-bit
          STEAM_RUNTIME is enabled automatically
          [2015-07-05 17:11:27] Startup - updater built Jun  4 2015 10:35:42
          [2015-07-05 17:11:27] Verifying installation...
          [2015-07-05 17:11:27] Verification complete
          [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 11466
          --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=11466, si_status=1, si_utime=0, si_stime=0} ---
          rt_sigreturn()                          = 11466
          dup2(11, 2)                             = 2
          close(11)                               = 0
          exit_group(1)                           = ?
          +++ exited with 1 +++
          And i don't know a simple way to start the game without steam, it complain about missing steam api.
          Last edited by andoride; 07-05-2015, 11:49 AM.

          Comment


          • #6
            Probably not a good idea to start steam like that.
            Start the specific game with issues with that command. And there's of course a chance that this will not work, because you're advertising stuff that's not implemented.

            You can set the env variable in the "Set launch options" of the game like this:
            Code:
            MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330 %command%
            But of course only try this if it doesn't work without these! If everything works as expected don't touch anything

            Comment

            Working...
            X