Announcement

Collapse
No announcement yet.

Direct3D 10/11 Is Now Natively Implemented On Linux!

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

  • #31
    astonishing news but "[this state tracker] goal is to provide a superior alternative to OpenGL for graphics programming on non-Windows systems" sounds like
    "mono goal is to provide a superior alternative to Qt and GTK for GUI programming on non-Windows systems"...
    i reeeeally would not want to depend (as a user) on MS tech even if it has some real advances and not only marketing bullshit and shitty-code-writing-habit-instigating qualities.
    but if devs like it so much, they will be implementing it with some love. that is good.

    besides, if there are some "patent problems" in implementing opengl 3 and 4, would not there be some really big problems with MS ? they are have all rights on Direct* thingies, don't they ?
    but it doesn't quite matter as long as there are people willing to develop its support and US exto^Wpatenting bullshit is not propagated.

    and most importantly - no one uses direct3d 10 and 11 in wide scale as no one uses opengl 3 and 4 in wide scale. it's even possible that opengl 3 and 4 are more widely used :\
    latest game i saw with direct3d 10 support was Call of Juares and there were no difference in graphics in comparison to dx9 version (and they ditched dx10 for sequel).
    Unreal Engine 3 supports dx10 but it explicitly disabled in most newest games and they fail if it forced.
    so, it's good only in theory, if it's good.

    but anyway, i really would want to see opengl >=2.1 and direct3d >=9 being developed alongside. good, bad or in-between - it's must-have.

    PS: doesn't build with:
    Code:
    gmake[5]: Entering directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src/gallium/state_trackers/d3d1x/d3d1xshader'
    x86_64-pc-linux-gnu-g++ -m32 -c -I. -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers -Iinclude -I../w32api -I../d3dapi -march=k8-sse3 -O2 -mfpmath=sse,387 -frename-registers -ftree-vectorize -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -floop-parallelize-all -Wno-error -pipe -ffast-math -Wall -fvisibility=hidden -fno-strict-aliasing -m32  -fPIC -m32 -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_USE_TLS -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS -DHAVE_XCB_DRI2 -DHAVE_LIBUDEV -DHAVE_XEXTPROTO_71  src/dxbc_dump.cpp -o src/dxbc_dump.o
    x86_64-pc-linux-gnu-g++ -m32 -c -I. -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers -Iinclude -I../w32api -I../d3dapi -march=k8-sse3 -O2 -mfpmath=sse,387 -frename-registers -ftree-vectorize -floop-interchange -floop-strip-mine -floop-block -ftree-loop-distribution -floop-parallelize-all -Wno-error -pipe -ffast-math -Wall -fvisibility=hidden -fno-strict-aliasing -m32  -fPIC -m32 -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_USE_TLS -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS -DHAVE_XCB_DRI2 -DHAVE_LIBUDEV -DHAVE_XEXTPROTO_71  src/dxbc_parse.cpp -o src/dxbc_parse.o
    In file included from ../w32api/objbase.h:20:0,
                     from ../w32api/ole2.h:25,
                     from ../w32api/windows.h:80,
                     from ../w32api/rpc.h:29,
                     from ../w32api/d3dcommon.h:3,
                     from ../w32api/d3d11shader.h:22,
                     from src/dxbc_parse.cpp:29:
    ../w32api/rpcndr.h:174:1: warning: ‘_MIDL_STUB_MESSAGE’ has a field ‘_MIDL_STUB_MESSAGE::SavedContextHandles’ whose type uses the anonymous namespace
    ../w32api/rpcndr.h:470:32: warning: ‘_SCONTEXT_QUEUE’ has a field ‘_SCONTEXT_QUEUE::ArrayOfObjects’ whose type uses the anonymous namespace
    src/dxbc_parse.cpp: In function ‘int dxbc_parse_signature(dxbc_chunk_signature*, D3D11_SIGNATURE_PARAMETER_DESC**)’:
    src/dxbc_parse.cpp:79:89: error: invalid application of ‘sizeof’ to incomplete type ‘D3D11_SIGNATURE_PARAMETER_DESC’ 
    src/dxbc_parse.cpp:83:54: error: invalid use of incomplete type ‘struct _D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct _D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:84:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:85:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:86:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:86:28: error: ‘D3D_NAME’ was not declared in this scope
    src/dxbc_parse.cpp:86:37: error: expected ‘;’ before ‘bswap_le32’
    src/dxbc_parse.cpp:87:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:87:26: error: ‘D3D_REGISTER_COMPONENT_TYPE’ was not declared in this scope
    src/dxbc_parse.cpp:87:54: error: expected ‘;’ before ‘bswap_le32’
    src/dxbc_parse.cpp:88:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:89:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    src/dxbc_parse.cpp:90:8: error: invalid use of incomplete type ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    include/dxbc.h:97:8: error: forward declaration of ‘struct D3D11_SIGNATURE_PARAMETER_DESC’
    gmake[5]: *** [src/dxbc_parse.o] Error 1
    gmake[5]: Leaving directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src/gallium/state_trackers/d3d1x/d3d1xshader'
    gmake[4]: *** [all] Error 2
    gmake[4]: Leaving directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src/gallium/state_trackers/d3d1x'
    gmake[3]: *** [subdirs] Error 1
    gmake[3]: Leaving directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src/gallium/state_trackers'
    gmake[2]: *** [default] Error 1
    gmake[2]: Leaving directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src/gallium'
    make[1]: *** [subdirs] Error 1
    make[1]: Leaving directory `/var/tmp/portage/media-libs/mesa-9999-r2/work/32/Mesa-9999/src'
    make: *** [default] Error 1
    tried with FEATURES="-distcc" MAKEOPTS="-j1" LDFLAGS="" CFLAGS="-march=k8-sse3 -O2 -pipe" CXXFLAGS="$CFLAGS" also.
    configure options are:
    Code:
    --prefix=/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib32 --with-x --with-x-libraries=/usr/lib32 --enable-32-bit --disable-64-bit --disable-debug --enable-glx-tls --disable-gles1 --disable-gles2 --with-driver=dri --enable-egl --enable-glu --enable-glw --with-egl-platforms=x11,drm --enable-motif --with-x --enable-xcb --with-dri-drivers=,swrast,radeon,r200,r300,r600 --enable-gallium-swrast --with-state-trackers=glx,egl,d3d1x,dri,vega,xorg --disable-gallium-svga --disable-gallium-i915 --disable-gallium-i965 --enable-gallium-radeon --enable-gallium-r600 --disable-gallium-nouveau --enable-gallium-llvm --without-demos --disable-glut --disable-gallium-llvm
    PPS: phoronix really would benefit from a "spoiler"-tag... and removal of edit time limit.

    Comment


    • #32
      Originally posted by BlackStar View Post
      Besides, (a) D3D is superior to OpenGL in every conceivable way and (b) you cannot sue someone for implementing an API, much less a public one.
      This is not really true - OpenGL 4.1 has absolute feature parity with Direct3D 11, it's just that D3D's API is a little cleaner...

      Comment


      • #33
        Originally posted by KellyClowers View Post
        The praises being heaped upon D3D10 may be true, but even if they are, I can't get behind them, or D3D, as long as it is not a Free and Open standard.
        OpenGL is a free but not Free standard, as it's built behind closed doors by a consortium of heavy-weight corporations, such as Nvidia, AMD and Intel - you and I have no input in that process.

        The difference with D3D is that the latter is an API built behind closed doors by an *unofficial* consortium of heavy-weight corporations such as Nvidia, AMD and Microsoft - you and I have no input in that process.

        Both OpenGL and D3D have a validation process that costs lost of $$$. Both have patent-covered areas. This is why Mesa cannot claim to support OpenGL[1] and why it cannot implement features such as texture compression.

        Honestly, I fail to see the difference.

        [1] http://mesa3d.org/license.html

        Comment


        • #34
          Gallium3D is layman's terms:

          You have an API, like OpenGL or in this case; Direct3D.

          If you create a game for example, it needs to talk to a library that exposes an API. Let's call all these libraries in the Gallium3D architecture State Trackers.

          So what do these State Trackers do? They recieve some requests from the game, in this case, and what it does is that it translates this to a (assembly) language called TGSI.

          TGSI is a language that is not GPU specific, but resembles functions that all modern architecture GPU's have.

          Because graphics cards can't run TGSI, you need a compiler for every GPU out there to convert the TGSI into what, for example, your Radeon HD3300 can run. That's where the drivers come in; they can only run TGSI.

          But the cool thing is that you can make a sorts of API State Trackers that can convert to TGSI. So the graphics card 'only' needs a working 'TGSI driver' and every State Tracker API that's made will run on it.

          It's all a little more complex then that, but that's how Direct3D can run on all fully cards that have a working Gallium3D driver

          Comment


          • #35
            Originally posted by srg_13 View Post
            This is not really true - OpenGL 4.1 has absolute feature parity with Direct3D 11, it's just that D3D's API is a little cleaner...
            Feature parity it may have but you cannot use those features in OpenGL because Nvidia's and Ati's drivers are too unstable. Or I should say, you can try to use those features but you'll end up hitting bugs in every step of the way.

            Comment


            • #36
              Originally posted by Drago View Post
              As stated in the commit message of this little(not so) peace of software jewelery, D3D9 is much more complex to add. It differs too much from Gallium3D, and is not considered a clean API.
              Okay it makes sence. Well either way its good to have the development of state_trackers keep coming. It attracts new developers to the platform I think.

              Comment


              • #37
                Originally posted by pingufunkybeat View Post
                Originally posted by BlackStar
                Besides, (a) D3D is superior to OpenGL in every conceivable way
                Especially in the monopolistic way that kills alternative platforms.
                I'd say lack of games is a much better way to kill an alternative platform, so how about "the monopolistic way that makes alternative platforms viable for the non-geek"?

                Comment


                • #38
                  The lack of games is not a problem of not supporting Direct3d, it's a problem of publishers not giving crap about Linux.

                  And since MS has a long history of trying to kill Linux with its proprietary technologies, I'd say that abandoning OpenGL for a MS-exclusive technology just so you can get some games is akin to suicide.

                  Comment


                  • #39
                    Originally posted by tball View Post
                    To answer you shortly. AFAIK the state_tracker uses different states of a graphic pipeline and the TGSI shader language to implement different things in e.g. a OpenGL or another state_tracker.

                    Every g3d hardware drivers should be able to handle TGSI shader language and different states common in a graphic pipeline.

                    So when you use a state_tracker, it just hooks itself to a hardware-driver able to use TGSI and different states. This will able different state_trackers work on different g3d hardware drivers.

                    Developers, please correct me if I am wrong.
                    Thanks a lot, that explained a lot to me!

                    Comment


                    • #40
                      Any demos out there to see this driver stack in action?

                      Comment


                      • #41
                        Originally posted by pingufunkybeat View Post
                        The lack of games is not a problem of not supporting Direct3d, it's a problem of publishers not giving crap about Linux.

                        And since MS has a long history of trying to kill Linux with its proprietary technologies, I'd say that abandoning OpenGL for a MS-exclusive technology just so you can get some games is akin to suicide.
                        (a) OpenGL has been abandoned technology since 2005 or so. What's the last AAA OpenGL title you saw?
                        (b) Who said anything about abandoning OpenGL anyway? Having both available does not mean abandoning.
                        (c) D3D won't be MS-exclusive once Linux supports it, will it?

                        Comment


                        • #42
                          This would really only be of use to wine. So nothing incredibly exciting beyond that.
                          As for any API debate, remember folks that d3d is aimed at gaming, opengl is far more generic.

                          Comment


                          • #43
                            Originally posted by mirv View Post
                            This would really only be of use to wine. So nothing incredibly exciting beyond that.
                            Also to people who want to port Windows software that uses D3D more easily. Not only commercial software of course, there's lots of free software for Windows too.

                            Comment


                            • #44
                              If things could not get any better, "Fglrx and nvidia drivers can also be supported by writing a Gallium driver that talks to them using OpenGL, which is a relatively easy task. Thanks to the great design of Direct3D 10/11 and closeness to Gallium, this approach should not result in detectable overhead, and is the most maintainable way to do it, providing a path to switch to the open Gallium drivers once they are on par with the proprietary ones."
                              How does this work? You run a Gallium driver on top of the proprietary driver? You make an "fglrx" state tracker? This sounds awesome in theory, though.

                              Comment


                              • #45
                                So we can make D3D10/11 Linux apps now?
                                Which DirectX SDK do we use?

                                Comment

                                Working...
                                X