While debugging an issue with the dx11 backend, I noticed that 4coder only clipped rectangles that are outside the screen vertically. Another potential issue (it might be the intended behavior) causes some things to not work with line wrapping, which means that we could have very long horizontal lines, causing a lot of vertices being sent through the render pipeline that will just be clipped after the vertex shader. This causes higher than necessary GPU memory usage, and low performance for things that aren't rendered in the end. An example of problematic is: ```c u8 data[ ] = {0,0,0,0,...,0}; // With a lot of zero, and no space between them. ``` This fix just checks that at least one vertex of each rectangle we try to draw is in the screen. It would be better to use the current clip rect, but it's not available at that point in the pipeline. If we want we can modify the API a little to pass it down, as a parameter to those functions. Using RenderDoc, I saw the vertex count going from over 500K to 13K with this change, and the performance were from 57ms to 25ms. So perfs are not great (but still an improvement), but testing the bounds of 500K vertices is not free. Fixing the line wrapping issue would probably help getting back to reasonable frame rate. |
||
---|---|---|
build_new | ||
code | ||
non-source | ||
triage | ||
.gitignore | ||
4ed.rdbg | ||
README.md | ||
TODO.md | ||
project.4coder |
README.md
4Coder Community
Welcome to the 4coder community repository.
Building
Windows
- Setup the MSVC toolchain in your environment, this can be done with the
code/custom/bin/setup_cl_x64.bat
script - call the
package.bat
script from the code directory$ cd 4cc\code
.\bin\package.bat
- You can also use the
build.bat
script if you want just build the binaries, this does not copy the default config, fonts and bindings$ cd 4cc\code
$ .\bin\build.bat
Linux
tested on Ubuntu 22.04:
-
Get required libraries (apt names):
$ sudo apt install build-essential libx11-dev libxfixes-dev libglx-dev mesa-common-dev libasound2-dev libfreetype-dev libfontconfig-dev
-
Use the
package-linux.sh
script to build and package an application$ cd 4cc/code
$ ./bin/package-linux.sh
-
You can also use the
build-linux.sh
script if you want just build the binaries, this does not copy the default config, fonts and bindings$ cd 4cc/code
$ ./bin/build-linux.sh
Mac (Untested)
- The steps should be the same as linux but replace the
*-linux.sh
with their*-mac.sh
equivalents.