PeterLValve [Mon, 24 Mar 2014 22:55:07 +0000 (15:55 -0700)]
UI: Add a settings file
* When vogleditor is started, the settings file will be loaded / saved so that it contains all the latest settings.
* The JSON settings file is stored in $XDG_CONFIG_HOME/vogleditor/ or $HOME/.config/vogleditor/ and is named vogleditor_settings.json.
* Before manually editing the file, vogleditor should be closed; after editing the file, reopen vogleditor to read in the latest changes.
* The file is automatically saved when vogleditor is closed, so manual edits while the file is open will cause the changes to be overwritten.
* Current settings include:
* Window position and dimensions (defaults to 0,0 and 1024x768)
* The "trim_large_trace_prompt_size" (defaults to 200) which is the minimum number of frames a trace file must contain in order for the trim trace prompt to be displayed when loading a trace file.
PeterLValve [Mon, 24 Mar 2014 19:07:58 +0000 (12:07 -0700)]
UI: Update trim dialog so that it does not accept invalid input.
* Clicking "OK" with invalid input would not set the member variables, but would return as accepted, resulting in a failed trim.
* Improved error messages if trim_frame or trim_len are invalid, and also now prompt the user if the entered trim_file already exists.
PeterLValve [Fri, 21 Mar 2014 23:24:59 +0000 (16:24 -0700)]
UI: Add ability to trim files directly from vogleditor
* When loading a trace that contains over 200 frames, the user will be prompted whether they'd like to trim the file. The trimmed file can then optionally be loaded instead of the originally selected trace.
* The new vogleditor_QTrimDialog allows the user to specify the frame index to start the trim at, the number of frames to trim, and the output file name.
* Invalid frame index or lengths will make the textbox turn red to indicate the error. Entries are also validated against the number of frames in the trace file, and the trim lengths are currently limited to 200 frames (so that they can be loaded back into the editor without the trim prompt being shown).
* voglreplay32/64 is launched in a separate process to generate the trim file. Failed replays display an error; successful replays are saved and can be reloaded into the editor.
* Enabled the Trim Trace button to allow trimming of an already open trace.
* Completely removed the Stop and Pause buttons
PeterLValve [Wed, 19 Mar 2014 22:50:49 +0000 (15:50 -0700)]
UI: Fix a bunch of memory leaks; rename a few member variables
* A bunch of UI elements were not being deleted in VoglEditor.
* The ApiCallTreeModel (which maintains all the API calls and snapshopts) was being allocated each time a trace was opened, but never deleted when the trace was closed.
* The StateTreeModel was being reallocated each time the UI was updated to a new snapshot, but they were never being deleted.
* ApiCallItems were being deleted by BOTH the FrameItem and the ApiCallTreeItem; they are now only deleted by the ApiCallTreeItem.
PeterLValve [Wed, 19 Mar 2014 18:19:00 +0000 (11:19 -0700)]
UI: Fix issue #21: Resizing of vogleditor window is slow depending on trace size
* If the window is only being resized a small amount (within 20%), the timeline will no longer redraw and simply gets stretched.
* When the timeline is redrawn, it will now only draw one timeline item per pixel instead of many sub-pixel items.
* Fixed an issue that caused 0-duration items from being scaled to 1 instead of the horizontal scale value (which should be the minimum amount of time needed to appear as a single pixel). This greatly reduced the number of items being drawn.
* Fixed deletion of timeline item children.
* These improvements reduced the number of drawn items in one particular trace file from ~5.9 million, down to ~1250 in the default window size. When I stretched the editor across two monitors (giving the timeline more pixels to draw into) this increased to ~4500 items - both very reasonable numbers.
Rich Geldreich [Thu, 20 Mar 2014 01:27:30 +0000 (18:27 -0700)]
- Fix for restoring FBO's that have attachments that the tracer was not able to query (because they were deleted). Steam 10ft keeps a bunch of FBO's around with deleted textures in a cache. It eventually rebinds new textures to the FBO's so the fact that we can't query the texture shouldn't be an issue (for 10ft anyway).
Rich Geldreich [Wed, 19 Mar 2014 23:34:07 +0000 (16:34 -0700)]
Fixing various issues that were showing up when trying to snapshot/restore Cube 2:
- RBO's which have been genned but never initialized are now properly snapshotted/restored
- Adding support for GL_FLOAT_RG16_NV
- Fixing size of XVisualInfo struct's ctype desc so the --find command doesn't trigger a harmless but annoying assert in 32-bit builds while scanning through 64-bit traces
- Misc help text fixes
Rich Geldreich [Wed, 19 Mar 2014 23:29:30 +0000 (16:29 -0700)]
Fixing various issues that were showing up when trying to snapshot/restore Cube 2:
- RBO's which have been genned but never initialized are now properly snapshotted/restored
- Adding support for GL_FLOAT_RG16_NV
- Fixing size of XVisualInfo struct's ctype desc so the --find command doesn't trigger a harmless but annoying assert in 32-bit builds while scanning through 64-bit traces
- Misc help text fixes
Rich Geldreich [Wed, 19 Mar 2014 21:41:19 +0000 (14:41 -0700)]
- Fixing driver crash on AMD's fglrx caused by us passing down possibly bogus handles when we fail to remote program uniform's (which commonly happens when we trace on NVidia and try to replay on AMD, which more aggressively optimizes uniforms).
Gregory King [Mon, 17 Mar 2014 20:15:37 +0000 (13:15 -0700)]
Reworked src/vogltrace/CMakeLists.txt to fix issue 16;
(1) requires a symbolic link between libturbojpeg.so.0 to
libturbojpeg.so (within the search path)
(2) Switched ${X11_X11_LIB} to ${X11_LIBRARIES}
(3) Moved project definition to top of the file;
PeterLValve [Tue, 18 Mar 2014 22:24:24 +0000 (15:24 -0700)]
UI: Fix issue #20: Search in the editor really slow
* Instead of selecting all the rows which match the search string,
the tree view now highlights those rows which match and are visible.
* If the user presses [enter], the first matching row (if one exists) will
be scrolled into view and selected.
* Continually pressing enter will cycle through each match, in the same way
that clicking the "Next" button works.
* If there are no matching items when the user presses [enter], the background to the search textbox will turn red.
It will restore to its previous color when the user next edits the text.
PeterLValve [Tue, 18 Mar 2014 20:31:29 +0000 (13:31 -0700)]
UI: Improve processing time of vogleditor_apicalltreeitem by pre-calculating the local row index
* This value will have to get updated if new rows (API calls) can be added / removed, which may undo this optimization,
but when investigating a slowness during searching, the code was often found in this function.
Rich Geldreich [Sat, 15 Mar 2014 06:17:55 +0000 (23:17 -0700)]
- adding a missing entrypoint check, so traces made with NV extensions don't completely core dump on AMD (although the odds of them playing back right are kinda slim)
- adding darwinia trace
Rich Geldreich [Fri, 14 Mar 2014 21:35:20 +0000 (14:35 -0700)]
- Features for 10ft: PBO's, snapshotting/restoring mapped buffers during replaying
- Display lists snapshot/restoring: genned but still not-valid display lists are now handled properly
Peter Lohrmann [Fri, 14 Mar 2014 20:43:22 +0000 (13:43 -0700)]
UI: Fix unnecessary memory overhead when loading traces.
* A vogl_trace_packet can have lots of memory associated with it, so they should not be copied or assigned if it can be avoided. In this case, the loading was using a single trace packet instance to load the data from disk, then the packet was being copied into its associated node in the API call tree. This assignment / copy was temporarily (and unnecessarily) doubling the size of the packet, requiring extra memory allocations, and generally just causing excessive overhead. Instead, allocate a separate vogl_trace_packet for each packet that needs to be loaded from disk, and pass that memory off the apiCallItem for management. This greatly improves load times and allows us to load traces that would previously fail due to memory limitations.
* Also move a few allocations over to using vogl_new and vogl_delete so that vogl can track the memory usage.
Peter Lohrmann [Thu, 13 Mar 2014 21:41:28 +0000 (14:41 -0700)]
UI: Fix support for taking snapshots after an edited & outdated snapshot.
* Also fix algorithm that finds the previous snapshot for diff'ing purposes so that it only returns valid snapshots.
Andrew Wong [Fri, 14 Mar 2014 03:26:11 +0000 (23:26 -0400)]
voglcore: Add pthread as link library
This means any targets that use voglcore will automatically get pthread
include during linking. So we don't need to specify pthread in targets
that don't explicitly use them.
Peter Lohrmann [Thu, 13 Mar 2014 18:45:49 +0000 (11:45 -0700)]
UI: Initial support for saving and loading a debug session
* This saves a json document which links the initial trace file to a set of snapshots
* Edited / outdated / valid properties are stored with each snapshot so that the snapshot indicator in the UI can be restored properly.
* All 'rel_path' properties are relative to the location of the session file. This allows the trace file, session file, and session data folder be moved to a new location and still be loaded. Only relative paths are currently supported.
Future goals:
* Ideally, any state of the UI should be included in the session so that active tabs / drop-down selections / texture zoom settings / etc are restored when the session is loaded.
* Indications of which shaders are edited should also be included (after the UI itself supports indicators of these changes)
* The original trace file should NOT be changed when the initial snapshot is edited or if/when we support the insertion and removal of API calls, so any changes to the API calls should be stored in this session file as well.
Carl Worth [Sat, 22 Mar 2014 00:29:24 +0000 (17:29 -0700)]
Drop vogl_applaunchr.cpp and vogl_applauncher.h
Mike explained that these files are not actually being used at all.
Meanwhile, they are the only files that include anything from the
chromiumlib library which was recently removed (with history
rewriting!) from the git repository.
Carl Worth [Mon, 31 Mar 2014 23:08:00 +0000 (16:08 -0700)]
Don't attempt to build gltests nor OGLSuperBible directories.
These directories were recently removed in a git-filter-branch rewrite
of the Vogl history (as part of an effort to reduce repository size).
Since these directories no longer exist, we cannot build them.