Comments (4)
The idea of this FG-library - implement easy to use vulkan wrapper for prototyping.
This is not a thread pool library. You should create threads and add syncs manualy or use any library like tbb, task flow etc. FG allow you to use vulkan api from any thread without synchronizations, but each command buffer must be used in single thread. In debug mode FG have data race checks that notify you if you miss some syncs.
Task dependencies in FG is optional, they can be used to rearrange tasks to slightly incease performance. Without dependencies tasks will be executed in same order as you add it to command buffer.
For each command buffer FG tacks resource state and adds pipeline barriers and layout transitions. FG internally adds GPU-CPU syncs before reusing command buffers, reading from memory, etc.
If you use dependencies between command buffers, FG adds syncs between them.
Additionaly you can see multithreading tests here
from framegraph.
Oh, that's awesome.
I will try to do some experiments on them. I had done some experiments on pumex before (use tbb). It has some bugs and not maintained now. Hope we can make this render graph library better.
from framegraph.
"but each command buffer must be used in single thread", means merge them in render thread ?
from framegraph.
means merge them in render thread ?
Vulkan api require syncs if command buffer or command pool for that command buffer used in different threads.
FG doesn't protect command buffer by mutex for performance reasons, so if you need to use one command buffer in different threads you must add syncs.
The valid usage is in single thread call fg->Begin(), add tasks to cmd buffer, call fg->Execute(). Somewhere add dependencies between command buffers that recorded in different threads.
from framegraph.
Related Issues (17)
- Windows 7 not supported HOT 2
- Memory leaks when rendering loops HOT 6
- Compile error when compiling with visual studio 2019 HOT 3
- clang complie has some error
- clang compile has some error HOT 2
- Drawing test not pass HOT 2
- error when generating project files using cmake
- linking error, windows 10, vs2017 x64 debug HOT 1
- validation failed when running Tests.FrameGraph, Debug x64 HOT 2
- How to get in touch? HOT 1
- Compile Error HOT 12
- render deadlock HOT 2
- acquire command batch "overflow" HOT 1
- Compile Error Hash.h HOT 2
- Compile error when compiling with clang 9 HOT 5
- Compile warnings when compiling with GCC 9 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from framegraph.