Giter Site home page Giter Site logo

glsnoop's People

Contributors

capehill avatar kas1e avatar polluks avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

polluks

glsnoop's Issues

Sort wrapper functions

Wrapper functions should be sorted alphabetically or by category, for easier code maintenance.

Take the name of binary to the log instead of the shell process

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.

Add filters support.

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.

Improve logger system

Logger needs somekind of logging level / category since there are different kind of prints for different purposes. For example, there are:

  1. user actions (click something, causes something)
  2. patching, system-related
  3. graphics function tracing (which can be filtered out)
  4. profiling

Add very basic/simple gui mode for better control.

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.

Record function tick count

A simple profiler, probably not very good when serial logging is enabled but perhaps an exclusive option?

Need a little bit better handling of "filter" keyword

Found today 2 small issues with filter:

  1. 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".

  2. 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".

add new keyword: "ONLYPROF" or something for avoiding logging, but only profiling for speed reassons

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.

Adding RMB menu to the GUI mode

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.

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.