Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vulkan #328

Merged
merged 114 commits into from
Aug 17, 2022
Merged

Vulkan #328

merged 114 commits into from
Aug 17, 2022

Conversation

wh1t3lord
Copy link
Contributor

@wh1t3lord wh1t3lord commented Jun 22, 2022

We are really close to finish this GAPI implementation!

Current state is:

  • General implementation (rendering, initialization, destroying, etc);
  • Implement static resources for GPU side;
  • Implement dynamic resources for CPU side;
  • Implement releasing textures method;
  • Improve performance, because current implementation of RenderCompiledGeometry works slower than OpenGL versions;
  • Fixed texture syncronization issue;
  • Fix stencil rendering;
  • New feature about resizing for RmlUi;
  • All examples work well.

Continuation of #236.

@mikke89 mikke89 added samples backends Platforms and renderers labels Jun 22, 2022
@mikke89 mikke89 changed the base branch from master to vulkan June 22, 2022 21:15
@mikke89
Copy link
Owner

mikke89 commented Jun 22, 2022

Thanks for continuing this work!

I think we also need to figure out what to do with textures. Currently they are not released until shutdown really. This causes trouble with e.g. the lottie sample which crashes after a few seconds since that one keeps generating new textures in a loop. This could in principle also be a problem when using a lot of different font styles, as that would also generate a lot of textures.

@wh1t3lord
Copy link
Contributor Author

"Implemented" static resources.

But there is a one thing... Still we have new and delete operations that will cause by containers. I minimized and used all things in fixed-size manner (like we developed for emdedded devices, IMO it is just a good approach for developing things on C++), but std doesn't provide a good solution for creating std::queue with fixed-size.

As possible solution is to use boost::circular_buffer for replacing std::deque, but still it is not a sane variant, because we don't need to use boost for library.

To sum up, all things like buffer handling, handling on cpu side data (like Rml::Containers) all goes with fixed-size manner and it is really good, because we removed all explicit new and delete operations at all. But still it is reasonable to achieve full pre-allocated behavior for all system (renderer at least, so what I did now).

I don't call for implement that for internal stuff, like how you manage your resources for UI elements and how it calculates, but still it would be a great achievement in UI development for C++. The library just uses only static, pre-allocated resources for everything, looks like 90s where you have only fixed, limited memory and you need to survive somehow and for user it is great to specify how many real memory he needs for executing his application.

Anyway, there's one thing to deal with it is to understand why invaders don't work, and why the transform example has strange execution of animation (?), because when I use fast move slider animation plays, but if I stop the picture freezing.

I don't understand why, but RenderDoc probably will say to me what's wrong. I hope there's no GL code or something else in animation implementation, because it can interrupt Vulkan execution.

Hope to finish this until next weekends.

@mikke89
Copy link
Owner

mikke89 commented Jun 25, 2022

I see that animations are working now too, good job!

In my view it is more important in a sample renderer like this that the code is easily understandable, rather than trying to come up with clever (CPU-side) memory allocation techniques. Users that care a lot about memory allocation will mostly likely have their own memory pools they want to integrate the renderer into in this case. As you say there are no great standard libraries for these things, so I'd prefer we just used std::vector, or new/delete when you need pointer stability. At least until profiling shows significant performance overhead.

Furthermore, rather than having a fixed upper limit on resources I think we should rather allocate new resources as required. I believe a sample renderer should be general enough to work in all situations. If users want to cap resources for their situation that is fine and they can do that with their own modifications.

Keep up the good work :)

@wh1t3lord
Copy link
Contributor Author

@mikke89

It's actually good to have two implementations. One "naive" one that shows extremely simple resource management logic (using your OpenGL as an example) and on the other side to have an implementation that is not simple. And this is important, because most users will expect a "perfect" implementation that will immediately be both super-optimized and generally that everything will work well, but in most cases, no one of course obliges us to make examples of integrations at a very high level. Because everything is learned by comparison, for us, if we really develop as if we were doing it for embedded devices, then it's just a plus for us, nothing more.

I wanted to show the users how you could develop your Vulcan renderer in the best way, and give the basic ideas, which are laid down in the implementation, though the standard library does not allow to achieve what I wanted from the CPU, and it's a pity.

@mikke89
Copy link
Owner

mikke89 commented Aug 17, 2022

Great work, thanks again! Appreciate all the effort that went into this.

I'm merging it into the vulkan branch to polish it up a bit before eventually merging it to master.

@mikke89 mikke89 merged commit 0ef5902 into mikke89:vulkan Aug 17, 2022
mikke89 added a commit that referenced this pull request Aug 19, 2022
* FIX: in order to prevent the error with setting negative data in scissors

* FIX: possibly fixed scissor offset calculation, because OpenGL has a different coordinate system

* FIX: warnings

* ADD: commentary what you need to implement

* FIX: appropriate flag for messaging in log

* ADD: something

* ADD: todo

* ADD: tracy scopes for gl3 and vk

* ADD: releasing texture method

* ADD: re-using pre-allocated resources

* FIX: checking status for initialized

* ADD: stuff :/

* FIX: fast searching free element in texture

* ADD: commentary

* FIX: stuff

* FIX: animation works

* ADD: somethnig

* ADD: Found bug of invaders crushing

* FIX: working example invaders

* ADD: minimize the memory requirements

* ADD: restored original size

* ADD: dynamic allocation for resources (CPU), fixed warnings

* FIX: texture deletion

* FIX: we don't need for deep reporting

* FIX: deleted unused stuff

* FIX: clipping space and we don't need to set negative value to viewport

* FIX: removed todo

* FIX: minor improvemnets

* ADD: stencil, but some bug with scissors??

* ADD: not final, but really close

* FIX: correction matrix

* FIX: removed queues

* ADD: deletion

* FIX: replaced vector on array in some places

* ADD: assert

* ADD: preprocessor guard

* FIX: deletion

* Load Vulkan dynamically, Vulkan SDK no longer required

* CMake: Only include SDL image on required backends

* Add Windows and Vulkan to the GitHub Actions workflow

* FIX: CI compilation

* FIX: project pre calculates before SetTransform

* FIX: deletion prolem

* FIX: sync moment for textures

* ADD: removed unused elemnts

* FIX: without vkDeviceWaitIdle

* FIX: invaders, deleting texture from Game.

* FIX: now works, texture deletion

* FIX: wrong argument was

* FIX: validation, resource deletion

* FIX: rational naming

* ADD: restored scissor operation for GL3, added depthstencil, but better to fix subpass dependencies

* FIX: style

* ADD: in order to resolve the mergening trouble

* ADD: implemented stencil

* FIX: subpass dependencies are specified, best performance

* ADD: cleanup

* ADD: implemented

* ADD: resizing API

* FIX: compiler warnings from CI

* FIX: compiler warnings from CI

* FIX: compiler warnings from CI

* FIX: compiler warnings from CI

* FIX: CI for GL2 build

* FIX: ignore warnings of external headers

* FIX: ignore warnings of external headers

* FIX: warning, for windows at least

* FIX: warning, for windows at least

* FIX: gl3

* FIX: tests

* FIX: gcc supress

* FIX: macos

* FIX: lul

* FIX: lul

* FIX: lul

* FIX: lul

* FIX: lul

* FIX: lul

* FIX: lul

* FIX: macos

* FIX: possibly final fix of CI

* FIX: probably dl files

* GitHub actions: Compile the Vulkan backend with clang

* Add GCC debug build

* Fix alignas attribute

* FIX: spirv_reflect

* FIX: formatting

* FIX: formatting and clang

* FIX: clang

* FIX: possible fix for clang, but gcc works fine with assert

* FIX: possible fix for clang

* FIX: clang and debug

* FIX: deleted unused variables

* FIX: GCC

* FIX: restored Config.h

* FIX: deleted virtual methods

* FIX: for Emscripten

* ADD: preprocessor for hidding the compilers implementation

* FIX: compilation fix, probably clang-format bug

* FIX: move out from Platform and re-write implementation file

* FIX: checkouted Game.cpp and Game.h

* FIX: Mike wanted to see this fix

* FIX: important fix in core library, because without it we will get UB

* ADD: new way for handling minimized state for window, all samples are updated

* ADD: revert files

* ADD: final feature about resizing without touching core files

* ADD: all events are handling

* FIX: removed from class vectors for keeping extension and layers

* FIX: removed device_extension_properties from class

* FIX: removed device_extension_properties from class

* FIX: removed instance_extension_properties from class

* FIX: removed instance_layer_properties from class

* FIX: deleted unused classes

* FIX: removed unused implementation

Co-authored-by: Michael Ragazzon <[email protected]>
mikke89 added a commit that referenced this pull request Sep 8, 2022
Adds a new RmlUi renderer for rendering with Vulkan. The new renderer comes with two backends so that it can be used together with one of the SDL or Win32 platforms.

To use one of these backends when compiling and running the samples, set the CMake configuration to either `SAMPLES_BACKEND=SDL_VK` or `SAMPLES_BACKEND=Win32_VK`.

Development commits:

@wh1t3lord
- Started Vulkan implementation
- Keep codebase simple, but easy to use.
- ADD: instance creation
- ADD: physical device and device properties
- ADD: The commentaries about ShellRenderInterfaceVulkan and trying to create Surface
- ADD: Destroying functions but get HWND from RMLUI
- ADD: obtaining HWND
- FIX: compilation
- ADD: standard way to initialize and shutdown
- ADD: Queues and Queues Indecies
- ADD: device creation
- ADD: swapchain
- ADD: OnResize method
- ADD: correct swapchain creation
- ADD: sync primitives
- ADD: presenting, but without resources
- ADD: start implementing resource management, creating descriptor set layout
- You must compile shaders by your own. So engine operates with SPV format only, not raw strings, not compiling files.
- ADD: creating shaders, but I need to implement that
- ADD: creating VkShaderModule
- ADD: remove not capable method in that arch
- ADD: Physical device wrapper, pipeline layout creation
- ADD: continue creating VkFramebuffer for swapchain
- FIX: compilation thing and waiting before destroying everything
- ADD: continue work
- FIX: swapchain creation
- FIX: formatting for commentary
- ADD: something new
- ADD: command list ring
- ADD: implemented command list ring
- ADD: added explanation commentary about using multiple logical frames for rendering
- ADD: added allocator for another allocator, but I need to implement it first
- ADD: added final allocator for dynamic buffer
- ADD: ring buffer pool implementation
- FIX: compilation fixes
- FIX: vma uses implementation in cpp
- ADD: successful creation and deletion
- ADD: started rendering begin and end scopes
- ADD: stable rendering
- ADD: correct rendering body
- ADD: clearing back buffer is working well
- ADD: something new
- ADD: texture data wrapper
- ADD: writing thing for uploading
- ADD: need to create separate queue for uploading resources
- ADD: continue work, added upload manager
- ADD: many stuff
- ADD: uploading textures is fine, but think about better memory handling, now it is just simple and trivial
- ADD: successful init/destroy state for app
- ADD: shaders for Vulkan, they are compiled with SPIR-V otherwise you can't load your shaders...
- ADD: successful init/destroy
- FIX: inserting data into descriptor set layout bindings
- FIX: shaders, binding must unique!
- ADD: continue at home
- ADD: Descriptors
- ADD: continue
- ADD: continue
- FIX: obtaining texture from handle
- ADD: continue work about pipeline creation, use VkDescriptorSetLayoutBinding info from CreateDescriptorSetLayout method.
- ADD: creating pipelines, continue testing later
- ADD: successful creation pipelines
- ADD: continue work, because for every compile geometry you need to have own descriptor set, so we cache all vkCmds after all CompileGeometry->RenderCompiledGeometry
- ADD: allocated more than one descriptor set, but still I need to test my thing
- ADD: well it seems drawing functions are recorded, but nothing to show on screen. It is strange. Have to fix it and analyze what is wrong with it.
- ADD: cached compiled geometry_handle_t
- FIX: data uploading was incorrect
- FIX: commentary
- FIX: correct format for color
- ADD: something, but geometry is discarded somehow...
- ADD: Now this renders the scene, but font textures are not valid
- ADD: something new
- ADD: FINAL
- ADD: commentary
- ADD: in order to test you have to uncomment those lines
- FIX: removed pointless commentary due to release of backends branch
- ADD: all necessary commentaries
- ADD: vulkan renderer
- ADD: continue work about releasing stuff
- ADD: continue work, use one large Descriptor with offsets
- ADD: updated out-dated VMA allocator version, deleted some todos, need to finish ring pool
- ADD: using virtual allocator
- ADD: FINAL, but I didn't test the other scenes. Reusing descriptors, Resizing is working
- FIX: message
- ADD: stuff, but WE REALLY need to solve the thing with Descriptors
- ADD: continue at home
- ADD: test at home
- FIX: if we have descriptors, but remove that functionality after tests
- FIX: descriptor set picking
- FIX: descriptor set creation
- ADD: continue testing
- ADD: continue at home
- ADD: one descriptor set for geometry and descriptors per texture
- ADD: something
- ADD: resizing works
- ADD: need for tests
- FIX: with allocation
- ADD: possibly final things

@mikke89
- Ported the Vulkan shell code to the new backend architecture for RmlUi 5.0.
- Made a script to compile the GLSL shaders to SPIR-V binary C character arrays. This allows directly including the shaders in the renderer source code.

@wh1t3lord
- FIX: in order to prevent the error with setting negative data in scissors
- FIX: possibly fixed scissor offset calculation, because OpenGL has a different coordinate system
- FIX: warnings
- ADD: commentary what you need to implement
- FIX: appropriate flag for messaging in log
- ADD: something
- ADD: todo
- ADD: tracy scopes for gl3 and vk
- ADD: releasing texture method
- ADD: re-using pre-allocated resources
- FIX: checking status for initialized
- ADD: stuff :/
- FIX: fast searching free element in texture
- ADD: commentary
- FIX: stuff
- FIX: animation works
- ADD: somethnig
- ADD: Found bug of invaders crushing
- FIX: working example invaders
- ADD: minimize the memory requirements
- ADD: restored original size
- ADD: dynamic allocation for resources (CPU), fixed warnings
- FIX: texture deletion
- FIX: we don't need for deep reporting
- FIX: deleted unused stuff
- FIX: clipping space and we don't need to set negative value to viewport
- FIX: removed todo
- FIX: minor improvemnets
- ADD: stencil, but some bug with scissors??
- ADD: not final, but really close
- FIX: correction matrix
- FIX: removed queues
- ADD: deletion
- FIX: replaced vector on array in some places
- ADD: assert
- ADD: preprocessor guard
- FIX: deletion

@mikke89
- Load Vulkan dynamically, Vulkan SDK no longer required
- CMake: Only include SDL image on required backends
- Add Windows and Vulkan to the GitHub Actions workflow

@wh1t3lord
- FIX: CI compilation
- FIX: project pre calculates before SetTransform
- FIX: deletion prolem
- FIX: sync moment for textures
- ADD: removed unused elemnts
- FIX: without vkDeviceWaitIdle
- FIX: invaders, deleting texture from Game.
- FIX: now works, texture deletion
- FIX: wrong argument was
- FIX: validation, resource deletion
- FIX: rational naming
- ADD: restored scissor operation for GL3, added depthstencil, but better to fix subpass dependencies
- FIX: style
- ADD: in order to resolve the mergening trouble
- ADD: implemented stencil
- FIX: subpass dependencies are specified, best performance
- ADD: cleanup
- ADD: implemented
- ADD: resizing API
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: CI for GL2 build
- FIX: ignore warnings of external headers
- FIX: ignore warnings of external headers
- FIX: warning, for windows at least
- FIX: warning, for windows at least
- FIX: gl3
- FIX: tests
- FIX: gcc supress
- FIX: macos
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: macos
- FIX: possibly final fix of CI
- FIX: probably dl files

@mikke89
- GitHub actions: Compile the Vulkan backend with clang
- Add GCC debug build
- Fix alignas attribute

@wh1t3lord
- FIX: spirv_reflect
- FIX: formatting
- FIX: formatting and clang
- FIX: clang
- FIX: possible fix for clang, but gcc works fine with assert
- FIX: possible fix for clang
- FIX: clang and debug
- FIX: deleted unused variables
- FIX: GCC
- FIX: restored Config.h
- FIX: deleted virtual methods
- FIX: for Emscripten
- ADD: preprocessor for hidding the compilers implementation
- FIX: compilation fix, probably clang-format bug
- FIX: move out from Platform and re-write implementation file
- FIX: checkouted Game.cpp and Game.h
- FIX: Mike wanted to see this fix
- FIX: important fix in core library, because without it we will get UB
- ADD: new way for handling minimized state for window, all samples are updated
- ADD: revert files
- ADD: final feature about resizing without touching core files
- ADD: all events are handling
- FIX: removed from class vectors for keeping extension and layers
- FIX: removed device_extension_properties from class
- FIX: removed device_extension_properties from class
- FIX: removed instance_extension_properties from class
- FIX: removed instance_layer_properties from class
- FIX: deleted unused classes
- FIX: removed unused implementation

@mikke89
- Rename Vulkan files to VK for consistency with the other backends
- Rename vulkan render interface
- Update CI build
- Tidy up some macros
- Fix missing header
- Simplify assert macro
- Toggle for Vulkan debugging
- Move some utility functions to source file
- Move public interface to the top
- Clean up some class state
- Fix a possible copy bug with multiple available devices
- Align code style more closely to the RmlUi code base
- Remove some unused objects
- Update command buffer ring
- Create texture
- Reverse core texture resource change
- Handle any situation in which the swapchain may become lost, clean up and remove unused window state and functions
- Simplify texture
- Make geometry handle and buffer data aggregate types
- Make shader data aggregate type
- Simplify with type aliases
- Remove some unused objects, some cleanup
- Move waiting for swap chain so that it also works when SDL events change the viewport (e.g. resizing window to zero dimensions)
- Vector to array
- Update CI
- Remove spirv-reflect dependency
- Change header guard
- Add license for Vulkan Memory Allocator dependency
- Update vk_mem_alloc.h to 3.0.1
- Implement Win32_VK backend
- Update readme
- Move monitor layer to debug only

Co-authored-by: wh1t3lord <[email protected]>
mikke89 added a commit that referenced this pull request Sep 9, 2022
Adds a new RmlUi renderer for rendering with Vulkan. The new renderer comes with two backends so that it can be used together with one of the SDL or Win32 platforms.

To use one of these backends when compiling and running the samples, set the CMake configuration to either `SAMPLES_BACKEND=SDL_VK` or `SAMPLES_BACKEND=Win32_VK`.

Development commits:

@wh1t3lord
- Started Vulkan implementation
- Keep codebase simple, but easy to use.
- ADD: instance creation
- ADD: physical device and device properties
- ADD: The commentaries about ShellRenderInterfaceVulkan and trying to create Surface
- ADD: Destroying functions but get HWND from RMLUI
- ADD: obtaining HWND
- FIX: compilation
- ADD: standard way to initialize and shutdown
- ADD: Queues and Queues Indecies
- ADD: device creation
- ADD: swapchain
- ADD: OnResize method
- ADD: correct swapchain creation
- ADD: sync primitives
- ADD: presenting, but without resources
- ADD: start implementing resource management, creating descriptor set layout
- You must compile shaders by your own. So engine operates with SPV format only, not raw strings, not compiling files.
- ADD: creating shaders, but I need to implement that
- ADD: creating VkShaderModule
- ADD: remove not capable method in that arch
- ADD: Physical device wrapper, pipeline layout creation
- ADD: continue creating VkFramebuffer for swapchain
- FIX: compilation thing and waiting before destroying everything
- ADD: continue work
- FIX: swapchain creation
- FIX: formatting for commentary
- ADD: something new
- ADD: command list ring
- ADD: implemented command list ring
- ADD: added explanation commentary about using multiple logical frames for rendering
- ADD: added allocator for another allocator, but I need to implement it first
- ADD: added final allocator for dynamic buffer
- ADD: ring buffer pool implementation
- FIX: compilation fixes
- FIX: vma uses implementation in cpp
- ADD: successful creation and deletion
- ADD: started rendering begin and end scopes
- ADD: stable rendering
- ADD: correct rendering body
- ADD: clearing back buffer is working well
- ADD: something new
- ADD: texture data wrapper
- ADD: writing thing for uploading
- ADD: need to create separate queue for uploading resources
- ADD: continue work, added upload manager
- ADD: many stuff
- ADD: uploading textures is fine, but think about better memory handling, now it is just simple and trivial
- ADD: successful init/destroy state for app
- ADD: shaders for Vulkan, they are compiled with SPIR-V otherwise you can't load your shaders...
- ADD: successful init/destroy
- FIX: inserting data into descriptor set layout bindings
- FIX: shaders, binding must unique!
- ADD: continue at home
- ADD: Descriptors
- ADD: continue
- ADD: continue
- FIX: obtaining texture from handle
- ADD: continue work about pipeline creation, use VkDescriptorSetLayoutBinding info from CreateDescriptorSetLayout method.
- ADD: creating pipelines, continue testing later
- ADD: successful creation pipelines
- ADD: continue work, because for every compile geometry you need to have own descriptor set, so we cache all vkCmds after all CompileGeometry->RenderCompiledGeometry
- ADD: allocated more than one descriptor set, but still I need to test my thing
- ADD: well it seems drawing functions are recorded, but nothing to show on screen. It is strange. Have to fix it and analyze what is wrong with it.
- ADD: cached compiled geometry_handle_t
- FIX: data uploading was incorrect
- FIX: commentary
- FIX: correct format for color
- ADD: something, but geometry is discarded somehow...
- ADD: Now this renders the scene, but font textures are not valid
- ADD: something new
- ADD: FINAL
- ADD: commentary
- ADD: in order to test you have to uncomment those lines
- FIX: removed pointless commentary due to release of backends branch
- ADD: all necessary commentaries
- ADD: vulkan renderer
- ADD: continue work about releasing stuff
- ADD: continue work, use one large Descriptor with offsets
- ADD: updated out-dated VMA allocator version, deleted some todos, need to finish ring pool
- ADD: using virtual allocator
- ADD: FINAL, but I didn't test the other scenes. Reusing descriptors, Resizing is working
- FIX: message
- ADD: stuff, but WE REALLY need to solve the thing with Descriptors
- ADD: continue at home
- ADD: test at home
- FIX: if we have descriptors, but remove that functionality after tests
- FIX: descriptor set picking
- FIX: descriptor set creation
- ADD: continue testing
- ADD: continue at home
- ADD: one descriptor set for geometry and descriptors per texture
- ADD: something
- ADD: resizing works
- ADD: need for tests
- FIX: with allocation
- ADD: possibly final things

@mikke89
- Ported the Vulkan shell code to the new backend architecture for RmlUi 5.0.
- Made a script to compile the GLSL shaders to SPIR-V binary C character arrays. This allows directly including the shaders in the renderer source code.

@wh1t3lord
- FIX: in order to prevent the error with setting negative data in scissors
- FIX: possibly fixed scissor offset calculation, because OpenGL has a different coordinate system
- FIX: warnings
- ADD: commentary what you need to implement
- FIX: appropriate flag for messaging in log
- ADD: something
- ADD: todo
- ADD: tracy scopes for gl3 and vk
- ADD: releasing texture method
- ADD: re-using pre-allocated resources
- FIX: checking status for initialized
- ADD: stuff :/
- FIX: fast searching free element in texture
- ADD: commentary
- FIX: stuff
- FIX: animation works
- ADD: somethnig
- ADD: Found bug of invaders crushing
- FIX: working example invaders
- ADD: minimize the memory requirements
- ADD: restored original size
- ADD: dynamic allocation for resources (CPU), fixed warnings
- FIX: texture deletion
- FIX: we don't need for deep reporting
- FIX: deleted unused stuff
- FIX: clipping space and we don't need to set negative value to viewport
- FIX: removed todo
- FIX: minor improvemnets
- ADD: stencil, but some bug with scissors??
- ADD: not final, but really close
- FIX: correction matrix
- FIX: removed queues
- ADD: deletion
- FIX: replaced vector on array in some places
- ADD: assert
- ADD: preprocessor guard
- FIX: deletion

@mikke89
- Load Vulkan dynamically, Vulkan SDK no longer required
- CMake: Only include SDL image on required backends
- Add Windows and Vulkan to the GitHub Actions workflow

@wh1t3lord
- FIX: CI compilation
- FIX: project pre calculates before SetTransform
- FIX: deletion prolem
- FIX: sync moment for textures
- ADD: removed unused elemnts
- FIX: without vkDeviceWaitIdle
- FIX: invaders, deleting texture from Game.
- FIX: now works, texture deletion
- FIX: wrong argument was
- FIX: validation, resource deletion
- FIX: rational naming
- ADD: restored scissor operation for GL3, added depthstencil, but better to fix subpass dependencies
- FIX: style
- ADD: in order to resolve the mergening trouble
- ADD: implemented stencil
- FIX: subpass dependencies are specified, best performance
- ADD: cleanup
- ADD: implemented
- ADD: resizing API
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: compiler warnings from CI
- FIX: CI for GL2 build
- FIX: ignore warnings of external headers
- FIX: ignore warnings of external headers
- FIX: warning, for windows at least
- FIX: warning, for windows at least
- FIX: gl3
- FIX: tests
- FIX: gcc supress
- FIX: macos
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: lul
- FIX: macos
- FIX: possibly final fix of CI
- FIX: probably dl files

@mikke89
- GitHub actions: Compile the Vulkan backend with clang
- Add GCC debug build
- Fix alignas attribute

@wh1t3lord
- FIX: spirv_reflect
- FIX: formatting
- FIX: formatting and clang
- FIX: clang
- FIX: possible fix for clang, but gcc works fine with assert
- FIX: possible fix for clang
- FIX: clang and debug
- FIX: deleted unused variables
- FIX: GCC
- FIX: restored Config.h
- FIX: deleted virtual methods
- FIX: for Emscripten
- ADD: preprocessor for hidding the compilers implementation
- FIX: compilation fix, probably clang-format bug
- FIX: move out from Platform and re-write implementation file
- FIX: checkouted Game.cpp and Game.h
- FIX: Mike wanted to see this fix
- FIX: important fix in core library, because without it we will get UB
- ADD: new way for handling minimized state for window, all samples are updated
- ADD: revert files
- ADD: final feature about resizing without touching core files
- ADD: all events are handling
- FIX: removed from class vectors for keeping extension and layers
- FIX: removed device_extension_properties from class
- FIX: removed device_extension_properties from class
- FIX: removed instance_extension_properties from class
- FIX: removed instance_layer_properties from class
- FIX: deleted unused classes
- FIX: removed unused implementation

@mikke89
- Rename Vulkan files to VK for consistency with the other backends
- Rename vulkan render interface
- Update CI build
- Tidy up some macros
- Fix missing header
- Simplify assert macro
- Toggle for Vulkan debugging
- Move some utility functions to source file
- Move public interface to the top
- Clean up some class state
- Fix a possible copy bug with multiple available devices
- Align code style more closely to the RmlUi code base
- Remove some unused objects
- Update command buffer ring
- Create texture
- Reverse core texture resource change
- Handle any situation in which the swapchain may become lost, clean up and remove unused window state and functions
- Simplify texture
- Make geometry handle and buffer data aggregate types
- Make shader data aggregate type
- Simplify with type aliases
- Remove some unused objects, some cleanup
- Move waiting for swap chain so that it also works when SDL events change the viewport (e.g. resizing window to zero dimensions)
- Vector to array
- Update CI
- Remove spirv-reflect dependency
- Change header guard
- Add license for Vulkan Memory Allocator dependency
- Update vk_mem_alloc.h to 3.0.1
- Implement Win32_VK backend
- Update readme
- Move monitor layer to debug only

Co-authored-by: wh1t3lord <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backends Platforms and renderers samples
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants