capehill / glsnoop Goto Github PK
View Code? Open in Web Editor NEWAn experimental graphics API tracing tool for AmigaOS 4
An experimental graphics API tracing tool for AmigaOS 4
Wrapper functions should be sorted alphabetically or by category, for easier code maintenance.
Currently when we run some binary to debug from the shell, in the log we have that kind of output:
Shell Process: W3DN_CreateVertexBufferObject: size 128, usage 0, maxArrays 16, tags 0x6716DB18. Buffer address 0x66919718, errCode 0
Shell Process: OGLES2_glBindBuffer: target 34962, buffer 259
Shell Process: OGLES2_glBufferData: target 34962, size 32, data 0x663083A8, usage 35040
Shell Process: W3DN_CreateVertexBufferObject: size 128, usage 6, maxArrays 16, tags 0x6716DA28. Buffer address 0x6691B318, errCode 0
Shell Process: W3DN_VBOLock: buffer 0x6691B318, readOffset 0, readSize 0. Lock address 0x6691B348, errCode 0
Shell Process: W3DN_BufferUnlock: bufferLock 0x6691B348, writeOffset 0, writeSize 32. Result 0
Shell Process: OGLES2_glCompileShader: shader 256
Will be handy if instead of "Shell Process" we will have actual name of the binary we run to debug.
Per-context or global.
Filters are needed to keep logs smaller and debugging faster. So we need a way to choice what functiosn of what module to trace. We may have it as some configure files taken by glsnoop, like "warp3dnova_template.txt" , "ogles2_template.txt" , in which we can control debugging proceses.
At begining we can just there do pure listing of fucntions which we need. I.e. made a lists of all available functions in both libraries , and once we add "#" at begining, that one didn't patches.
Later , we can think of how to deal with parameters settings , to printf only those values which we need.
But just some inital filters support would help a lot at begining.
Logger needs somekind of logging level / category since there are different kind of prints for different purposes. For example, there are:
As we discuss previously , it would be handy to have ability to stop/start logging process when we need it.
For that we need some simple gui window with few buttons which can be running or by default, or only when we provide "-g" option for example. Probabaly pure shell output by default is better, and those who need more control can add "-g" , but that not really matter in end.
What matter is that once we run it in GUI mode, we will have currently only simple reaction winow with just 2 buttons : pause/resume. When we run, pause button are active, and resume one is ghosted, which mean that we can pause process. Then once we press pause, that one ghosted and only resume can be pressed.
At least we can start from this, and when and if there will be other needs (based on our actual debugging needs), it can be added to gui later.
A simple profiler, probably not very good when serial logging is enabled but perhaps an exclusive option?
As title say, would be nice to add iconify gadget in GUI
Concerns Nova and agl* API mostly.
Add localization support
Found today 2 small issues with filter:
when you just run "glsnoop filter" , without filename provided, it still runs. While it show in output that filters was disabled, imho will be right to exit with error saying "you use FILTER keywoard without providing actual filters file".
filter handling didn't check if filters file which was provided actually present or not. For example if you run "glsnoop filter asdfasdfasdfasdf", then it happyly runs, and say that "filter name [asdfasdfasdfasdf]" is used, while there is no such file, and probably at this stage glSnoop should exit with error saying that "no filters file was found".
Lately trying to profile some big-slow games , and found that you can't normally at one time profilinf ogles2 and nova, because of massive text output. Even redirecting it to RAM via sashimi or so, didn't make it much faster.
So, if it possible add the keywoard which will mean that we need only profiling, so functions patches as usuall, but glsnopp didn't writes anything to serial, just count things, etc, and when time come, only wrote to serial profiling information.
That mean we will not loose speed while profiling, and we will have almost same FPS in game which we profile , which will be good as we can go in games where we need, and see what happens.
Version numbers could be shown in logs and GUI.
To fullfill GUI mode more, will be nice to add "menu" item which spawn when user press RMB (right mouse button). Currently it can be just "About, Quit, Iconify" as initiall version, and later it can be expand more when there will be any needs for.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.