Coder Social home page Coder Social logo

vulkancompositor's People

Contributors

ilia-glushchenko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

toryder

vulkancompositor's Issues

Modular fbcon support.

I've started working on a rewrite that focuses on implementing support for multiple builds.

  1. GLFW build that uses imgui to draw window decorations. This is the main focus currently.
  2. GLFW build that uses a theme-able lua language to draw window decorations, manage window switching, ect. This will likely not work for some time... if at all.
  3. Linux fbcon, with imgui.
  4. Linux fbcon, with lua.

Not only is surface creation/management different but input handling also needs to be modular. The API for input should be a message queue containing libinput biased messages. GLFW input handlers should post messages after converting then to a format that more closely resembles libinput events.

https://github.com/cheako/vkwayland
This is my first time using cpp and my first time using cmake. I actively use free software and don't have access to windows or binary video drivers.

Updated git repo 10/26 9PM CST.

Vulkan lacks functionality to support Wayland shm pools.

Source: https://bitbucket.org/cheako/vkwayland/src/e1591d47825afe5be4e63091839855bff87e5350/

I've got vkwayland to the point where it's receiving image data from my test client weston-terminal. The data comes across as part of a shm pool FD, called a buffer. From what I can tell Vulkan is only able to work with an entier FD, exported from Vulkan... It needs the FD to represent a VkMemory object, not collection"s" of raw image data.

I've asked on IRC about extending Linux to support shm FDs as sources of image buffers from the drm/mesa team, but I doubt it'll be implemented unless there is significant proof that this is a bottleneck. I wonder if anyone saw it, I'll post something on the mailing list if I don't get a reply.

I'll look to see if I can find an ogl/vulkan wayland client to test with, where dmabuf would be used.

Here is a trace from the client.

[3179091.146]  -> [email protected]_registry(new id wl_registry@2)
[3179091.204]  -> [email protected](new id wl_callback@3)
[3179091.329] [email protected]_id(3)
[3179091.346] [email protected](1, "wl_shm", 1)
[3179091.375]  -> [email protected](1, "wl_shm", 1, new id [unknown]@4)
[3179091.408] [email protected](2, "wl_compositor", 4)
[3179091.429]  -> [email protected](2, "wl_compositor", 3, new id [unknown]@5)
[3179091.458] [email protected](3, "wl_output", 2)
[3179091.485]  -> [email protected](3, "wl_output", 2, new id [unknown]@6)
[3179091.526] [email protected](4, "wl_data_device_manager", 1)
[3179091.556]  -> [email protected](4, "wl_data_device_manager", 1, new id [unknown]@7)
[3179091.583] [email protected](5, "wl_subcompositor", 1)
[3179091.623]  -> [email protected](5, "wl_subcompositor", 1, new id [unknown]@8)
[3179091.650] [email protected](6, "zxdg_shell_v6", 1)
[3179091.665]  -> [email protected](6, "zxdg_shell_v6", 1, new id [unknown]@9)
[3179091.689] [email protected](7, "wl_seat", 1)
[3179091.712]  -> [email protected](7, "wl_seat", 1, new id [unknown]@10)
[3179091.742]  -> [email protected]_data_device(new id wl_data_device@11, wl_seat@10)
[3179091.762]  -> [email protected]_surface(new id wl_surface@12)
[3179091.790] [email protected](8, "wl_shell", 1)
[3179091.802] [email protected](0)
[3179091.884]  -> [email protected]_pool(new id wl_shm_pool@3, fd 8, 4096)
[3179092.276]  -> [email protected](12288)
[3179092.431]  -> [email protected](28672)
[3179092.687]  -> [email protected](61440)
[3179093.248]  -> [email protected](126976)
[3179096.003]  -> [email protected](258048)
[3179096.160]  -> [email protected](520192)
[3179100.877]  -> [email protected](1044480)
[3179104.900]  -> [email protected](2093056)
[3179127.730]  -> [email protected]_surface(new id wl_surface@13)
[3179127.754]  -> [email protected]_xdg_surface(new id zxdg_surface_v6@14, wl_surface@13)
[3179127.764]  -> [email protected]_toplevel(new id zxdg_toplevel_v6@15)
[3179127.773]  -> [email protected]()
[3179127.910]  -> [email protected]_title("Wayland Terminal")
[3179137.806] [email protected](0)
[3179137.836] [email protected](1)
[3179137.852] [email protected](0, 0, 0, 0, 0, "Vulkan", "", 0)
[3179137.914] [email protected](3, 1920, 1080, 60027)
[3179137.956] [email protected](1)
[3179137.965] [email protected]()
[3179137.976] [email protected](3)
[3179137.991]  -> [email protected]_pointer(new id wl_pointer@16)
[3179138.001]  -> [email protected]_keyboard(new id wl_keyboard@17)
[3179138.016] [email protected]("seat12")
[3179138.024] [email protected](6)
[3179138.046]  -> [email protected]_configure(6)
[3179138.072]  -> [email protected]_title("Wayland Terminal")
[3179138.093] [email protected](0, 0, array)
[3179138.104]  -> [email protected]_region(new id wl_region@18)
[3179138.360]  -> [email protected]_title("Wayland Terminal")
[3179138.374]  -> [email protected]_region(new id wl_region@19)
[3179138.384]  -> [email protected](32, 32, 742, 427)
[3179138.412]  -> [email protected](35, 35, 736, 421)
[3179138.647]  -> [email protected]_pool(new id wl_shm_pool@20, fd 9, 1582984)
[3179138.669]  -> [email protected]_buffer(new id wl_buffer@21, 0, 806, 491, 3224, 0)
[3179138.683]  -> [email protected](new id wl_callback@22)
[3179142.352]  -> [email protected]_window_geometry(32, 32, 742, 427)
[3179142.399]  -> [email protected]_opaque_region(wl_region@18)
[3179142.405]  -> [email protected]()
[3179142.412]  -> [email protected]_input_region(wl_region@19)
[3179142.417]  -> [email protected]()
[3179142.427]  -> [email protected](wl_buffer@21, 0, 0)
[3179142.449]  -> [email protected](0, 0, 806, 491)
[3179142.484]  -> [email protected]()
^C
cheako@nysa:~/src/github/vkwayland/build$ 

The drawing bits are everything from [email protected]_region(new id wl_region@18) to the end, surface.commit() is the command the dispatches the drawing of the surface.attack(buffer).
Create buffer means: at offset 0 bytes, width 806, height 491, each row is 3224 bytes, format 0(ARGB8888).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.