Age | Commit message (Collapse) | Author | Files | Lines |
|
frameretrace more closely matches apitrace naming conventions than
frame_retrace.
|
|
Initial patch no longer applies.
|
|
|
|
Metrics retrace crashed on Google Earth traces because this call was
not tracked.
|
|
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.
|
|
|
|
For now, validate that all uniforms are float format. Provide modified
uniform data to the model.
|
|
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.
|
|
|
|
|
|
|
|
when a uniform has be optimized away, the location is -1. The uniform
should not be handled in this case.
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
For shader replacement with SSO, we need access to the pipeline
identifier used during retrace.
|
|
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.
|
|
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.
|
|
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.
|
|
Clicking on the thumbnail changes the displayed render target.
|
|
A SplitView shows the full list of rendertargets, displaying the
full-size image of the first image in the opposite pane.
|
|
Prepares for visualizing multible images. At this point, only the first
image is displayed.
|
|
The render target model will have to maintain several images, and expose
them to the render target control.
|
|
This prepares for the increased the complexity required by multiple
render target display.
|
|
|
|
|
|
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.
|
|
Slight modifications to Mesa enable batch buffer display
|
|
Text box allows the user to find selected renders that contain a
substring in their api logs.
|
|
ApiTrace does not categorize these calls as renders, but they are
similar to glClear
|
|
|
|
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.
|
|
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.
|
|
Required by Unity Matinee trace.
|
|
|
|
Requested-by: Eero Tamminen <eero.t.tamminen@intel.com>
|
|
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.
|
|
The environment was not appropriately utilized in the exec call on
Linux.
|
|
The existing mechanism was hard to read.
Requested-by: Eero Tamminen <eero.t.tamminen@intel.com>
|
|
BorderLands2 failed to retrace modified programs, due to mishandled
uniform constant data that was partially initialized at link time.
|
|
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.
|
|
This GL feature is used in some renders in Borderlands2. When programs
are relinked, the fragData must be bound in the same location.
|
|
|
|
|
|
Omission of these renders resulted in undercounting metrics for frames.
|
|
Found-by: Eero Tamminen <eero.t.tamminen@intel.com>
|