Announcement

Collapse
No announcement yet.

LLGL Aims To Be Abstraction Layer For OpenGL, Direct3D 11/12 & Vulkan

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

  • #11
    Originally posted by efikkan View Post
    Such abstractions can't result in efficient usage of the low-level APIs.
    As I said, yes a performance hit but not necessarily a BIG performance hit. You make it look like it is much worse than it is.

    Comment


    • #12
      Originally posted by efikkan View Post
      The purpose of a "low level" API dissipates when using a such abstraction. It can never generate efficient code for each API. So the only reason to use a such API is when performance don't matter, but "ease" of portability does.
      Well, yeah. Because we've been blessed for many years with unbelievable great dx to ogl/win to linux ports, let's better keep this and not try something new.

      BTW Vk is not low level, it is just explicit.

      Comment


      • #13
        Originally posted by juno View Post

        Well, yeah. Because we've been blessed for many years with unbelievable great dx to ogl/win to linux ports, let's better keep this and not try something new.

        BTW Vk is not low level, it is just explicit.
        1.) there are 100 different ways to abstract code, if the performance hit is too big is not because of the abstraction but because it get done horribly wrong, for example EoN but this abstraction is not meant to be performant but fast and cheap to use because they simply don't care enough (low market share) about Linux right now. This is in no way a general example of "abstractions", for example check game engines code where there are abstractions abstracting the abstractions while abstracting the previous 30 layers of abstractions and yet they still are quite efficient.

        2.) Vulkan is low level since it doesn't handle abstraction, memory, allocations, events, etc.etc.etc on its own, but just provide close to hardware instructions constructs that allow developers to implement at will all the previous mentions whereas OpenGL/DX11- do this on its own and you have no better way than accept it and deal with it. in this case Vulkan is akin to C++ while OpenGL/DX11- are akin to JS.

        unless you live in a parallel universe i don't see how vulkan is not low level LOL, btw explicit does not imply level, you can have an idiotically long uber explicit language still be as high level as JS is

        Comment


        • #14
          How can an API abstract both Vulkan and OGL? I don't get it.
          I thought one call in OGL would require many in Vulkan, so how does this work?

          Comment


          • #15
            How does this compare to Bgfx?

            Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. - bkaradzic/bgfx

            Comment


            • #16
              Originally posted by geearf View Post
              How can an API abstract both Vulkan and OGL? I don't get it.
              I thought one call in OGL would require many in Vulkan, so how does this work?
              i guess something like this

              void coolDrawFunction{
              Opengl/DX_seq_drawop(GLVARS):
              Opengl/DX_seq_alloc(GLVARS):
              Opengl/DX_seq_shader(GLVARS):
              Opengl/DX_seq_render(GLVARS):
              Opengl/DX_seq_flip(GLVARS):
              return coolData;
              }

              void CoolDrawFunction{
              cool allocation infrastructure();
              ...... lot of code
              thread1(upload);
              ....... lot of code
              thread2(queue);
              ....... lot of code
              thread3(commandbuffers);
              ..... lot of code
              presentationThread(submit queue);
              return coolData;
              }

              Comment


              • #17
                Originally posted by jrch2k8 View Post

                1.) there are 100 different ways to abstract code, if the performance hit is too big is not because of the abstraction but because it get done horribly wrong, for example EoN but this abstraction is not meant to be performant but fast and cheap to use because they simply don't care enough (low market share) about Linux right now. This is in no way a general example of "abstractions", for example check game engines code where there are abstractions abstracting the abstractions while abstracting the previous 30 layers of abstractions and yet they still are quite efficient.

                2.) Vulkan is low level since it doesn't handle abstraction, memory, allocations, events, etc.etc.etc on its own, but just provide close to hardware instructions constructs that allow developers to implement at will all the previous mentions whereas OpenGL/DX11- do this on its own and you have no better way than accept it and deal with it. in this case Vulkan is akin to C++ while OpenGL/DX11- are akin to JS.

                unless you live in a parallel universe i don't see how vulkan is not low level LOL, btw explicit does not imply level, you can have an idiotically long uber explicit language still be as high level as JS is
                The guys who developed Vulkan are calling it an explicit API: "Vulkan is not “low level” – just a better abstraction of modern hardware." In some areas it looks "low-level" because of the explicit control, in others not so much. A draw call in Vulkan is still a draw call.

                Now regarding this LLGL wrapper. As an AMD dev has put it: "D3D12/Vulkan were not invented to write a legacy API driver on top". You'll have a hard time trying to beat the driver. If you don't need the extra performance stick with D3D11/OpenGL.

                Comment


                • #18
                  Why would you use this? OpenGL is already an abstraction layer for different platforms, with OpenGL and SDL you can easily port your app to Windows, Linux, MacOS and more. Just use OpenGL if you are concerned about portability.

                  Comment


                  • #19
                    Originally posted by Staffan View Post
                    Why would you use this? OpenGL is already an abstraction layer for different platforms, with OpenGL and SDL you can easily port your app to Windows, Linux, MacOS and more. Just use OpenGL if you are concerned about portability.
                    This layer likely gives better performance than OpenGL if you use it to port DX12 programs on Vulkan.

                    Also, this allows programs to target people with hardware supporting better APIs (Vulkan/DX12) so better performance than openGL, while still providing a working fallback for those that don't (OpenGL/DX11).

                    And in case you didn't notice, MacOS would be in "those that don't" and "need a working fallback".

                    It really makes no sense to cripple your software for the sake of portability, if you can avoid it.

                    Comment


                    • #20
                      Originally posted by jrch2k8 View Post

                      i guess something like this

                      void coolDrawFunction{
                      Opengl/DX_seq_drawop(GLVARS):
                      Opengl/DX_seq_alloc(GLVARS):
                      Opengl/DX_seq_shader(GLVARS):
                      Opengl/DX_seq_render(GLVARS):
                      Opengl/DX_seq_flip(GLVARS):
                      return coolData;
                      }

                      void CoolDrawFunction{
                      cool allocation infrastructure();
                      ...... lot of code
                      thread1(upload);
                      ....... lot of code
                      thread2(queue);
                      ....... lot of code
                      thread3(commandbuffers);
                      ..... lot of code
                      presentationThread(submit queue);
                      return coolData;
                      }
                      But you're calling many Vk (or OGL) functions there, that does not seem low level to me.
                      By Low Level I'd assume something close to a 1:1 mapping.

                      Comment

                      Working...
                      X