summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-09-18frameretrace: remove unnecessary underscore from binary nameMark Janes7-13/+13
frameretrace more closely matches apitrace naming conventions than frame_retrace.
2017-09-15Batch: update mesa patch to enable batchesMark Janes1-8/+8
Initial patch no longer applies.
2017-09-15Shaders: eliminate deadlock on compilationMark Janes1-22/+24
2017-08-28Retrace: Add support for programs using glXMakeContextCurrentMark Janes1-0/+3
Metrics retrace crashed on Google Earth traces because this call was not tracked.
2017-08-28Uniforms: Properly restore original uniform values after overrideMark Janes3-35/+84
Unilaterally setting overrides during retrace also change the values for subsequent renders that use the same program. After each render, the original value must be reset. Unfortunately, this means the uniform callback must take place within the retrace. The context necessary to make the callback is passed into the main retrace method.
2017-08-28Uniforms: enable override of uniform dataMark Janes16-1/+253
2017-08-28Uniforms: Allow uniform modification in UniformControlMark Janes3-1/+23
For now, validate that all uniforms are float format. Provide modified uniform data to the model.
2017-08-28glretrace: Always query current programMark Janes1-2/+1
FrameRetrace may attempt to retrace calls onto modified programs. For example, when a shader is modified, glUniform calls must be executed on the new program. Using a cached currentProgram will generate assert.
2017-08-28Uniforms: expose uniform data in QMLMark Janes3-0/+119
2017-08-28Uniforms: retrace uniform data on selectionMark Janes2-1/+34
2017-08-28Uniforms: create model to store uniform dataMark Janes4-0/+361
2017-06-19Uniforms: handle optimized uniformsMark Janes1-0/+5
when a uniform has be optimized away, the location is -1. The uniform should not be handled in this case.
2017-06-19Uniforms: allow retrace of uniform dataMark Janes14-10/+550
2017-06-19FrameRetrace: Conditionally build waffle projectsMark Janes3-3/+5
Projects that render GL without Qt require waffle. Skip them when waffle is not available. This may disable tests and prototype apps on some systems.
2017-06-19framestat: conditionally build guiMark Janes1-2/+4
2017-06-19framestat: handle glFrameTerminatorGREMEDYMark Janes1-1/+4
2017-06-19StateTrack: report shaders for SSO pipelinesMark Janes1-6/+57
2017-06-19StateTrack: track glUseProgramStagesMark Janes2-0/+31
2017-06-19StateTrack: track glBindProgramPipelineMark Janes2-1/+13
2017-06-19glretrace: expose retraced pipelineMark Janes2-0/+8
For shader replacement with SSO, we need access to the pipeline identifier used during retrace.
2017-06-19retrace: Handle glFrameTerminatorGREMEDYMark Janes3-4/+18
ApiTrace thinks glFrameTerminatorGREMEDY is a frame terminator. In Dota, it immediately follows swapBuffers, causing FrameRetrace to think half of the frames have zero calls. Ignore glFrameTerminatorGREMEDY, to avoid this double counting of frames.
2017-06-19Metrics: Drop out-of date refresh requestsMark Janes2-10/+34
Clicking multiple times on the refresh button would enqueue several long queries, if the frame is large. This commit uses the experiment count to drop obsolete requests. It imposes an additional cost to refresh of getting new render targets and shaders, but this is much better than the very long latencies that were possible before.
2017-06-19RenderTarget: Display default RT image when none is available.Mark Janes2-1/+19
It is fairly typical for ApiTrace to fail to provide render target images for unreal titles. Rather than annoy the user with many error dialogues, display the default image.
2017-06-19RenderTarget: allow selection of displayed target from listMark Janes1-7/+29
Clicking on the thumbnail changes the displayed render target.
2017-06-19RenderTarget: display list of RT imagesMark Janes2-9/+26
A SplitView shows the full list of rendertargets, displaying the full-size image of the first image in the opposite pane.
2017-06-19RenderTarget: provide image list to qmlMark Janes6-28/+91
Prepares for visualizing multible images. At this point, only the first image is displayed.
2017-06-19RenderTarget: refactor RT methods into separate modelMark Janes7-97/+232
The render target model will have to maintain several images, and expose them to the render target control.
2017-06-19RenderTarget: Refactor RT ui into a separate controlMark Janes3-34/+46
This prepares for the increased the complexity required by multiple render target display.
2017-06-19RenderTarget: Retrace RT for all of the attached framebuffersMark Janes3-30/+52
2017-06-19Experiments: add simple shader experimentMark Janes17-54/+193
2017-06-19Experiments: Add Disable Draw experimentMark Janes38-79/+563
Add a tab to hold frame experiments. The first experiment is the simplest: Disable the selected draw calls. When an experiment is enabled, all UI for the frame needs to be refreshed to take into account the modified frame: - Bar graph - Metrics table - Render target - Shaders (for Disable Draw, they will be unchanged) - GPU Batch Subsequent retrace requests for these items are out of date at the point an experiment is enabled, in the same way that Selection outdates several the API log and other visualizations. ExperimentId is distributed throughout the models in the same way as selection, and they respond to that signal to request new data. The Retrace interface drops out of date requests based on both selection and experiment status.
2017-06-19Batch: display batches sent to hardwareMark Janes31-3/+700
Slight modifications to Mesa enable batch buffer display
2017-06-19Api: Provide filtering of api logMark Janes3-16/+97
Text box allows the user to find selected renders that contain a substring in their api logs.
2017-06-19Retrace: add glClearBuffer* calls as rendersMark Janes1-1/+7
ApiTrace does not categorize these calls as renders, but they are similar to glClear
2017-06-19Shaders: Remove unused interface for overriding shadersMark Janes1-4/+0
2017-06-19framestat: call glFinish for frame measurementsMark Janes5-1/+16
swapBuffers will return before it completes. glFinish guarantees that the frame time is accurate after swapBuffers. Thanks to Jason Ekstrand for pointing out where the jitter in my measurements was coming from.
2017-06-19Support multiple contextsMark Janes16-317/+783
Metrics can only be collected for a single context, with the current implementation of INTEL_performance_query. Stop/start metrics before and after context switches, and collect metrics from each context before publishing. Reorganize renders into contexts. Contexts contain renders for a GL context, and manage state changes that must be intstrumented as contexts switch. Eliminate awkward checking of current context when retracing metrics. Subsequent features (state tracking/uniforms) will be per-context.
2017-06-19Uniforms: support additional uniform typesMark Janes1-8/+22
Required by Unity Matinee trace.
2017-06-19RenderTarget: fix clang warningsMark Janes1-3/+3
2017-06-19Shaders: Used fixed-width fontMark Janes1-0/+17
Requested-by: Eero Tamminen <eero.t.tamminen@intel.com>
2017-06-19Shaders: Improve shader assembly parse performance on WindowsMark Janes1-0/+7
Windows parsing of shader assemblies is extremely slow, due to the poor speed of reading files in a directory on windows. Limit parsing shader assemblies to calls where they are likely to occur.
2017-06-19OS: support running frame_retrace from directory in PATHMark Janes1-1/+1
The environment was not appropriately utilized in the exec call on Linux.
2017-06-19Shaders: Display error in a dialogueMark Janes2-15/+13
The existing mechanism was hard to read. Requested-by: Eero Tamminen <eero.t.tamminen@intel.com>
2017-06-19Uniforms: Initialize uniform data for new programsMark Janes1-0/+12
BorderLands2 failed to retrace modified programs, due to mishandled uniform constant data that was partially initialized at link time.
2017-06-19Uniforms: Create helper class to query and set uniformsMark Janes5-2/+774
Uniform constants are state attached to a program. When re-linking a program, existing uniforms must be tranferred to the new program. glretrace::Uniforms reads constant uniform data from the current program. Its setUniforms method will apply the data to the current program. This class sets the stage for uniform constant display/experiments.
2017-06-19Shaders: handle glBindFragDataLocationMark Janes4-1/+35
This GL feature is used in some renders in Borderlands2. When programs are relinked, the fragData must be bound in the same location.
2017-06-19OpenFile: Generate fatal error if perf counters disabledMark Janes5-1/+119
2017-06-19Style: remove unused variablesMark Janes2-2/+1
2017-06-19MetricsTab: Include compute renders in render_count of frameMark Janes4-6/+19
Omission of these renders resulted in undercounting metrics for frames.
2017-06-19Shaders: Fix off-by-one memory error on shutdownMark Janes1-1/+1
Found-by: Eero Tamminen <eero.t.tamminen@intel.com>