|
828c5946
|
2018-12-13T23:09:05
|
|
Split angle_perftests into white and black box.
The black box version tests traditional GL API features. The white box
version is designed to test internal classes and uses a static link
against libANGLE and libGLESv2. The black box version will also be
extendable to test native drivers directly instead of going through
ANGLE.
Bug: angleproject:2995
Change-Id: I0b672db37ed38f82157c7a1db70080ff539337ce
Reviewed-on: https://chromium-review.googlesource.com/c/1359515
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
611bbaab
|
2018-12-06T01:59:53
|
|
Vulkan: Convert vertex attributes in compute
In this commit, VertexArrayVk::convertVertexBuffer() is renamed to
VertexArrayVk::convertVertexBufferCpu() to explicitly show it does a CPU
readback. A new VertexArrayVk::convertVertexBuffer() function is added
that has the same functionality in gpu (with some assumptions, where the
CPU fallback is used should those assumptions fail). Currently, the
only requirement is that buffer offset/stride are divided by the
component size.
ConvertVertex.comp is the shader responsible for this conversion, and it
implements the functionality in renderer/copyvertex.inc, minus a few
functions that are not used in the Vulkan backend.
Bug: angleproject:2958, angleproject:3009
Change-Id: I8ec9a5f4672509bcf7b9e352cd27663970ad4653
Reviewed-on: https://chromium-review.googlesource.com/c/1364451
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
7c985f5c
|
2018-11-29T18:16:17
|
|
Make angle::Result an enum.
This moves away from a class type to a value type. This should improve
performance when using angle::Result as a return value. Previously the
generated code would return a pointer instead of a value.
Improves performance in the most targeted microbenchmark by 10%. In
more realistic scanarios it will have a smaller improvement. Also
simplifies the class implementation and usage.
Includes some unrelated code generation changes.
Bug: angleproject:2491
Change-Id: Ifcf86870bf1c00a2f73c39ea6e4f05ca705050aa
Reviewed-on: https://chromium-review.googlesource.com/c/1356139
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
35cd7332
|
2018-12-02T12:03:33
|
|
Refactor test shader style.
This change enforces a lot more consistency. We pass const char * to
the Compile functions instead of std::string. Also fixes the
indentation of C++11 block comments to be more consistent.
Bug: angleproject:2995
Change-Id: Id6e5ea94055d8cbd420df4ea2e81b2d96cb5ce78
Reviewed-on: https://chromium-review.googlesource.com/c/1357103
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8dc27f99
|
2018-11-29T11:45:44
|
|
Use packed enum for DrawElementsType.
The packing and unpacking take a few extra instructions. But it
completely obviates the need for any switches in the validation code.
Speed is slightly faster or the similar depending on the back-end.
Also add gl_angle_ext.xml to GL entry point generator inputs. This was
missing and would cause the code generation to miss certain changes.
Bug: angleproject:2985
Change-Id: I1ea41a71db71135000166ead8305ec42d22ff7b3
Reviewed-on: https://chromium-review.googlesource.com/c/1351729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4f6592fa
|
2018-11-27T16:37:45
|
|
Remove gl::Error.
Removes several TODOs. Only egl::Error remains.
Also slightly decreases binary size.
Bug: angleproject:2491
Change-Id: I3a9d1c22eb0884ca9e37362463fddd0083faf826
Reviewed-on: https://chromium-review.googlesource.com/c/1337462
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ab130438
|
2018-11-20T14:09:50
|
|
Skip SetUp and TearDown in VulkanCommandBufferPerfTest if its flaky.
BUG=angleproject:2923
Change-Id: Id201efa09bcc67d4e40154e2362bf4b78ffd5652
Reviewed-on: https://chromium-review.googlesource.com/c/1344591
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0e604f9f
|
2018-11-19T21:33:25
|
|
ANGLE Perf Test fixes.
Includes the following fixes:
* Removes obsolete global variable.
* Disables trace event collection when trace events disabled.
* Fixes calibrated steps getting stuck after first test.
* Scale calibrated steps with actual time after glFinish.
Should fix a few crashes and timeouts with the perf tests.
Bug: angleproject:2923
Change-Id: I9ba1c042dee31cf2400ccbeedca0d497ed52fb12
Reviewed-on: https://chromium-review.googlesource.com/c/1343677
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c30f45d3
|
2018-11-12T16:37:59
|
|
Vulkan: Rename PipelineDesc/Cache to Graphics&
PipelineDesc describes a Vertex-Fragment pipeline and PipelineCache (not
to be confused with vk::PipelineCache) implements a cache of such
pipeline objects.
In preparation for Compute support, these data structures are prefixed
with Graphics.
Bug: angleproject:2959
Change-Id: I9181586fb946b787216ca0b2ad6340f90c3ab55f
Reviewed-on: https://chromium-review.googlesource.com/c/1333971
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f3acb8c1
|
2018-11-14T16:24:25
|
|
Retool perf test running.
This change does a few things involving the way we run the perf tests:
- Perf test runner can capture different metrics
Useful for capturing the new "nanoSecPerIteration" metric.
- Removes the "score" metric
We'll move to the new time-based metrics. These new metrics are scaled
correctly with iteration counts.
- Runs three trials per perf test
This gives more measurements per test. Each trial is approximately one
second. First the perf tests set a fixed number of iterations after
calibrating the number of steps that we can run in one second. After
that the three trials are run. This should give more stable results.
- Apply more CPU stabilization on Windows
Use SetPriorityClass to apply more CPU priority. Also upgrade
SetThreadPriority to the highest level.
- Always build the Vulkan command buffer test
This catches build regressions more easily. We still skip the test on
non-Android platforms.
Bug: angleproject:2923
Change-Id: I7da234c5af07775ba4a232bb8d65e0138ee7073f
Reviewed-on: https://chromium-review.googlesource.com/c/1330262
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
caeb1e89
|
2018-11-01T18:13:22
|
|
Vulkan: Allow unlimited simultaneous descriptor sets.
This changes the fixed array into a STL vector. Instead of storing
Descriptor Pools by value we now store them by pointer. This allows the
vector to resize without changing the address of the Descriptor Pool.
Also enables some more Vulkan perf tests that were crashing before.
Bug: angleproject:2938
Change-Id: I8a88d5315b941c4f54205a9957e2834fe02ada84
Reviewed-on: https://chromium-review.googlesource.com/c/1311395
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6bf09284
|
2018-10-31T13:45:32
|
|
Scale down a slow index buffer perf test.
This test was slow enough that running 20k iterations might have been
causing a timeout on the Nexus 5.
Bug: angleproject:2923
Change-Id: I03f6e95135d8c521e6ef3e81bc9a4b0dfd7f19df
Reviewed-on: https://chromium-review.googlesource.com/c/1310693
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
557a1ee4
|
2018-10-30T17:26:24
|
|
Make perf tests faster in correctness-only mode.
When running with "--one-frame-only" we can also skip the test warmup.
Also we can reduce the internal iteration count to 1 to make the tests
as fast as possible.
Bug: angleproject:2923
Change-Id: I2f82ae0dd237767ea7b15074e459ed1094ba9943
Reviewed-on: https://chromium-review.googlesource.com/c/1308737
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3402d523
|
2018-10-30T15:14:52
|
|
Try to reduce variance in angle_perftests.
This change does a few things:
- make perf test runner script print % variation instead of stddev
This makes it a bit more clear how much variance there is.
- stabilize CPU in the render perf tests
Setting a thread affinity and priority should stop from switching cores
during the run. Hopefully can prevent background noise from changing
the test results.
- warm up the benchmark with a few iterations
This should hopefully make the test results a bit more stable.
- output a new normalized perf result value
The new result is normalized against the number of iterations. So it
should hopefully be stable even if the number of iterations is changed.
- increases the iteration count in the draw call perf tests.
These tests were completely dominated by SwapBuffers time. Increasing
the iterations per step means we actually are bottlenecked on CPU time
instead.
Bug: angleproject:2923
Change-Id: I5ee347cf93df239ac33b83dc5effe4c21e066736
Reviewed-on: https://chromium-review.googlesource.com/c/1303679
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
0ea96210
|
2018-10-30T15:14:51
|
|
Vulkan: Enable more perf tests.
Also fixes the check for the correct UINT index extension that wasn't
available on Vulkan. Also includes a workaround for the mock ICD not
implementing buffer state for index ranges.
Bug: angleproject:2923
Change-Id: Iab35809d15f890525a9e658d4148272c46cf1320
Reviewed-on: https://chromium-review.googlesource.com/c/1308733
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
25224e78
|
2018-10-22T11:56:02
|
|
Vulkan: add GPU trace events
RendererVk now tries, as best as it can, to match the CPU and GPU timers
on init as well as every finish(). A clock-sync event is generated for
each such synchronization point.
RendererVk::traceGpuEvent() is a new function that, given a command
buffer, performs timestamp queries corresponding to GPU events. These
queries are read back when done, without incurring GPU bubbles, at which
point an event is generated with that timestamp.
Bug: angleproject:2908
Change-Id: I08d7d11ff9f8ad6c9f9a9899767c9cd746d0623e
Reviewed-on: https://chromium-review.googlesource.com/c/1296954
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
ae108bd1
|
2018-10-18T15:00:38
|
|
Use angle::Result in front-end (Part 5)
Refactors gl::Buffer and implementation.
Bug: angleproject:2491
Change-Id: Ic6860dac2faf33067965e7117ea8e98dc6a8dc7a
Reviewed-on: https://chromium-review.googlesource.com/c/1283310
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4024e217
|
2018-10-17T14:53:29
|
|
perftests: Record trace events to JSON file.
This allows us to view the timeline of events in the trace event
browser. We can extend this to do GPU timestamp queries and analyze
when work is actually in flight.
The trace is enabled in standalone ANGLE only using the flag
--enable-trace with angle_perftests. You can also optionally specify
the trace output file with --trace-file <blah>. The default file is
ANGLETrace.json.
Bug: angleproject:2781
Change-Id: I871f28545d9bf18220b55aaf69e9554dcb4c834d
Reviewed-on: https://chromium-review.googlesource.com/c/1259763
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d633b156
|
2018-10-04T23:34:31
|
|
Get rid of VertexFormatType.
The enum VertexFormatType is redundant with angle::FormatID. The Vulkan
back end has already eschewed VertexFormatType, this change updates the
D3D back ends.
BUG=angleproject:2531
Change-Id: I67ea2203ca80be828f4c757a37810fe67a279364
Reviewed-on: https://chromium-review.googlesource.com/c/1263899
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
996628a4
|
2018-09-24T16:39:26
|
|
Vulkan: Add support for VkPipelineCache
The cache is initialized from the application's blob cache and is
occasionally written back to it for disk storage.
Bug: angleproject:2516
Change-Id: I4cba4b00a7b9641c2983ef07159bc62cd10a5519
Reviewed-on: https://chromium-review.googlesource.com/1241373
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d6781dce
|
2018-08-23T10:51:06
|
|
Extend LinkProgramPerfTest to support compile only
Add an option for "compie_only" and "compile_and_link".
Bug: chromium:849576
Change-Id: Id796ebb85ad5aff1a5272173f11ce2ff42685dce
Reviewed-on: https://chromium-review.googlesource.com/1186159
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ac6d90ea
|
2018-08-21T13:10:36
|
|
Add more test param documentation to perf tests.
Also add links from other pages.
Bug: angleproject:1944
Change-Id: I344ce075973bd45942d52b819385cb74a5a073ca
Reviewed-on: https://chromium-review.googlesource.com/1183629
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
de8d4cb0
|
2018-08-21T12:58:19
|
|
Optimize BindingsBenchmark::drawBenchmark.
Fix contributed by matavenrath@nvidia.com.
This fixes BindingsBenchmark::drawBenchmark to take only 3% instead of
15% of the time spent in
BindingsBenchmark.Run/gl_100_objects_allocated_at_initialization.
Bug: angleproject:2777
Change-Id: I5b5b6f167289b947767b40e7761d90cf06c49816
Reviewed-on: https://chromium-review.googlesource.com/1181868
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ea926a36
|
2018-08-10T15:22:30
|
|
Add angle_perftests README file.
Bug: angleproject:1944
Change-Id: I93f363dc5fb6096baec01584bbd2fb525a84909c
Reviewed-on: https://chromium-review.googlesource.com/1171502
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ec1fe5b7
|
2018-08-10T10:05:52
|
|
D3D: Use angle::Result error pattern.
This completes the refactor for the D3D9/D3D11 back-ends.
Bug: angleproject:2752
Change-Id: Ie35a925f75c902d8f9fdab6bc33b3bb9c937f85b
Reviewed-on: https://chromium-review.googlesource.com/1167209
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
077cd858
|
2018-08-06T10:46:22
|
|
Vulkan: Introduce Command Buffer Perf Test
Implemented command buffer performance test based on
LunarG samples. Includes a lot of utility functions and
should build/run on Linux, Android
Bug: angleproject:2758
Change-Id: I8606802fb3e8e0621856860c45ef50ba836c26f8
Reviewed-on: https://chromium-review.googlesource.com/1162119
Commit-Queue: Omar El Sheikh <theoking@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f2c6faf5
|
2018-08-09T10:54:08
|
|
Remove some Vulkan perftest configs.
We don't support ES 3.0 or ES 3.1 in Vulkan yet. Remove Vulkan configs
from tests that don't support the higher features levels. We can
re-add them once we improve Vulkan support.
Bug: angleproject:2604
Change-Id: Icca57b5ec696aaeb2a571b79cd1a7869f806c176
Reviewed-on: https://chromium-review.googlesource.com/1169306
Reviewed-by: Omar El Sheikh <theoking@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cc1dc5ee
|
2018-08-07T15:27:49
|
|
Add a perf test for draw calls with texture changes.
This perf test highlights the performance hotspots with
State::syncProgramTextures.
Also includes a fix to the perf test runner script.
Bug: angleproject:2763
Change-Id: I69ffa0cc0d5e023944495b7a1c844770a54f7ddc
Reviewed-on: https://chromium-review.googlesource.com/1166041
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1bd4bfb0
|
2018-08-03T14:24:22
|
|
Add draw call perf tests that use the driver.
Also moves some code to the cpp.
Bug: angleproject:2747
Change-Id: I38468e6276d52d11d5751df6917c66f15ae61246
Reviewed-on: https://chromium-review.googlesource.com/1163822
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
854429de
|
2018-07-27T08:12:48
|
|
D3D: Return error from getVertexSpaceRequired.
This removes another use of the gl::ErrorOrResult pattern. Unblocks
error refactoring.
Bug: angleproject:2738
Change-Id: Ib611a3b68f8995469befd51797dfed34eaeee84e
Reviewed-on: https://chromium-review.googlesource.com/1151450
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b1565903
|
2018-07-27T08:12:48
|
|
D3D: Pass gl::Context to many more functions.
This makes the Context more available for logging errors.
Also includes more refactoring to VertexDataManager to ensure we can
access the gl::Context.
Bug: angleproject:2738
Change-Id: Iae3d22a1403078d236bfe63a3e2d203c13678dc4
Reviewed-on: https://chromium-review.googlesource.com/1151449
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eb4b8697
|
2018-07-17T10:55:40
|
|
Introduced eglMakeCurrent Perf Test
Currently disabled test on android
Also made the default EGL device type be
EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE
Updated destroy function of RendererVk to properly
reset the mMemoryProperties member variable
Bug: angleproject:2735
Change-Id: Ie1f8ab1ac93b18eda4c10c3b10ecd4756f1d8543
Reviewed-on: https://chromium-review.googlesource.com/1140508
Commit-Queue: Omar El Sheikh <theoking@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0359b697
|
2018-07-23T17:22:00
|
|
Vulkan: Check mInFlightCommands doesn't grow too fast
The mInFlightCommand vector could grow faster than
the GPU can complete tasks. Check for this edge case
and give the GPU a chance to catch up with work.
Also allows us to enable performance tests for Draw
Calls on vulkan since it was affected by this limit
check before.
Bug: angleproject:2742
Change-Id: I66a86ea6b5300fa3d74b07dc341aa597824b5f09
Reviewed-on: https://chromium-review.googlesource.com/1147607
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
80d4ef10
|
2018-07-13T17:08:19
|
|
Vulkan: Fixed improperly set env variable
After the first test using the Mock ICD runs, an environment
variable VK_ICD_FILENAMES is set when previously it did not
exists. The cleanup of that test, rather than deleting the
environment variable, set it to an empty string, which the
Vulkan loader would use for subsequent Vulkan tests, causing
issues with Vulkan not finding the correct extensions.
Had to disable two more tests since they started failing once
those backends were enabled.
Bug: angleproject:2604
Change-Id: Ie103756eed60d255d1dd92d7ef3b726183feeb1e
Reviewed-on: https://chromium-review.googlesource.com/1137342
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Omar El Sheikh <theoking@google.com>
|
|
efaa09fd
|
2018-06-27T15:40:21
|
|
Enabled Vulkan backend on as many tests as possible
Bug: angleproject:2694
Change-Id: I299d71e0857065d0f60204977d395793f921deaa
Reviewed-on: https://chromium-review.googlesource.com/1117702
Commit-Queue: Omar El Sheikh <theoking@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4fef7738
|
2018-05-29T15:21:41
|
|
Add perf test for Error/Result class.
This is a performance test that stresses the Error class. It also is
used in tests for the new Result class.
Bug: angleproject:2575
Change-Id: Ie23c2a1ea74108d2ba72bf26f1db04e14f7eda64
Reviewed-on: https://chromium-review.googlesource.com/1077129
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
18e323ab
|
2018-05-11T16:54:17
|
|
D3D11: Fix out-of-range access with robust access.
When using a vertex buffer with DYNAMIC usage, with robust buffer
access enabled, we would sometimes read out-of-bounds when using very
large values for the index range. An unchecked signed addition would
overflow and lead to reading a negative offset.
Fix this problem by keeping the value size_t whenever possible. Also do
clamped casts when converting to a smaller values.
Also adds a regression test.
Bug: chromium:842028
Change-Id: Ie630ac857c6acfc0bace849a03eebfbaa2fbe89a
Reviewed-on: https://chromium-review.googlesource.com/1055928
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c6dbc253
|
2018-04-30T19:07:56
|
|
Scope ANGLE_UNUSED_VARIABLE.
Renames the macro to be more ANGLE-ey.
Refactoring only.
Bug: angleproject:1671
Change-Id: I8f2dd227c7e2025886ec66e85efa877ea261d0ad
Reviewed-on: https://chromium-review.googlesource.com/1036209
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5cf4d06c
|
2018-03-29T13:33:18
|
|
Further reduce number of uniforms in UniformsBenchmark.Run/gles_matrix
Because Perf bots have Android K with worse driver than GPU.FYI Android L
BUG=angleproject:2431
Change-Id: I9b7a7d34f64a9832c57f9d26573b7c63594e1773
Reviewed-on: https://chromium-review.googlesource.com/986653
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a3b220f3
|
2018-03-06T16:22:13
|
|
Vulkan: Adding null driver as device option
Bug: angleproject:2159
Plumbing to allow VK Mock ICD to be selected as the Vulkan driver.
Adding new ANGLE env var "ANGLE_VK_ICD_JSON" to point to json file
of mock ICD in angle and use this to override Vk loader ICD search
path.
At Vulkan renderer initialization time, enable the Mock ICD if device
is EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE.
Default physicalDevice is still the first detected device.
If Mock ICD is requested but not available, fall back to the first
device that was detected.
Added a VULKAN_NULL() testing config that uses Vulkan as renderer but
NULL as device. Turned on Vulkan NULL testing for DrawCallPerf.
Change-Id: I04e15c14e998448f8c98f9fd72e796389f297993
Reviewed-on: https://chromium-review.googlesource.com/961494
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3988f34e
|
2018-03-16T16:38:33
|
|
ES31: Add DispatchCompute perf tests
BUG=angleproject:2265
TEST=angle_perftests
Change-Id: Iad93eb3e8339c8a766b25416b28102cc54d648b8
Reviewed-on: https://chromium-review.googlesource.com/967686
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
26ed93d7
|
2018-03-23T20:06:17
|
|
Reduce number of uniforms in UniformsBenchmark perf test
To fit Nexus 5 limit.
BUG=angleproject:2431
Change-Id: I2184a28c19ecadb8d7f2e8ba682fc6c4e382210e
Reviewed-on: https://chromium-review.googlesource.com/979154
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1b14d7ce
|
2018-03-14T14:40:19
|
|
VertexArray: Add perf tests for VAO dirty bits.
This simple perf test already in the source does a great job at this.
Bug: angleproject:2389
Change-Id: I94ff14e0eab1cb49a8d19725056ad8f7f008ac05
Reviewed-on: https://chromium-review.googlesource.com/962962
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ceb7190b
|
2018-02-05T15:18:47
|
|
Vulkan: Fix bug in reuse of vertex input bindings
Fix bug that used previously used vertex bindings. Now we
use the current program mask to only initialize the vulkan
pipeline with the active vertex input bindings.
+ adjust dEQP expectations
Bug: angleproject:2334
Change-Id: Ie6176eee99f87dc7a95f664d28e8312b9cb274bc
Reviewed-on: https://chromium-review.googlesource.com/902434
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
bfeed4dd
|
2018-02-06T16:39:29
|
|
Add a compiler perf test shader to stress traversers
Add a compiler perf test that's targeted at AST traversers. It
triggers many traversers that mutate the AST and run multiple
iterations particularly on the HLSL backend.
BUG=angleproject:827
TEST=angle_perftests
Change-Id: I75d89e8ae0fd7959f2c7fbb133c13ccde22abc37
Reviewed-on: https://chromium-review.googlesource.com/904622
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
5dd4ad89
|
2018-01-29T13:53:43
|
|
Vulkan: Add a perf test for the Pipeline cache.
This micro-benchmark can be used to measure the performance impact
of changing the Pipeline cache. For instance, we can check if changing
the size of the hash key affects performance significantly.
Also updates the build files so angle_perftests can see vulkan.h, and
makes the Vulkan headers an explicit source set.
This test currently shows that a lot of time is spent in PMurmurHash,
with some time also spent in memcmp.
Bug: angleproject:2163
Change-Id: Ie8bb3e31d58590f373d28cbbb59f7e372b80cc29
Reviewed-on: https://chromium-review.googlesource.com/884882
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
1436d434
|
2018-01-24T14:38:22
|
|
Add a simple compiler perf test
The perf test initializes the compiler once and then translates the
same shader to HLSL, GLSL or ESSL repeatedly.
There are three variations of the test compiling different shaders.
One is a real-world shader.
BUG=angleproject:2267
TEST=angle_perftests
Change-Id: Ie07b67d7548d105c4c93dff3b6196233d83b5b8c
Reviewed-on: https://chromium-review.googlesource.com/883784
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
17e3d2d5
|
2018-01-24T16:07:48
|
|
Vulkan: Add draw call perf test with a state change.
Bug: angleproject:2163
Change-Id: I3976af162ee669d0c98625fc69efb7fbd02c7e45
Reviewed-on: https://chromium-review.googlesource.com/883611
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
adcf0ae6
|
2018-01-24T08:27:37
|
|
Replace all NULL with nullptr
Bug: angleproject:1695
Change-Id: Ide0591ffdad5815385a4d805b320a32533bcc03a
Reviewed-on: https://chromium-review.googlesource.com/883681
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@google.com>
|
|
c801e359
|
2017-11-21T13:53:48
|
|
Add configurations of the TexturePerf benchmark that use robust init.
BUG=angleproject:2188
Change-Id: Ia23b54044a85435c761478bceeb9aac961fac0d1
Reviewed-on: https://chromium-review.googlesource.com/783230
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
578b51fd
|
2017-11-20T16:13:34
|
|
D3D: Add helper for index translation type.
This makes it a bit simpler to work with the prepareIndexData method.
Also removes the mRendererClass member of the index data manager
since it was no longer necessary.
BUG=angleproject:2229
Change-Id: I03768b104da21f57c499239bbbb5f716efb0fd48
Reviewed-on: https://chromium-review.googlesource.com/765261
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
be0e2c0c
|
2017-11-20T11:38:16
|
|
Fix type conversion warnings
Warnings about implicit type conversions were showing up as errors on
MSVS 2017.
TEST=build with MSVS 2017
Change-Id: I5f173a6838da16e96fad134756d31f56890c147b
Reviewed-on: https://chromium-review.googlesource.com/778841
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8957b6c0
|
2017-11-14T12:40:38
|
|
Add perf test for ushort DrawElements.
The code path in the D3D11 back-end is sigificantly different for
unsigned short indices vs unsigned int. Because of the workaround we
have for the primitive restart index in D3D11, ushort rendering can
be slower.
BUG=angleproject:2229
Change-Id: I303dcc55b0314ec45508044995ba47b250cbb87d
Reviewed-on: https://chromium-review.googlesource.com/767149
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
336129f6
|
2017-10-17T15:55:40
|
|
Use a packed enum for buffer targets.
BUG=angleproject:2169
Change-Id: I4e08973d0e16404b7b8ee2f119e29ac502e28669
Reviewed-on: https://chromium-review.googlesource.com/723865
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e3bfefb4
|
2017-11-10T16:22:37
|
|
Align float access in InterleavedAttributeData perf test
Used to crash on arm because of unaligned float access in positionColorData
BUG=chromium:675997
Change-Id: Iadc705986700248ce3cff9bb33fcd72c94ad1c59
Reviewed-on: https://chromium-review.googlesource.com/764688
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
b8d2664f
|
2017-10-27T18:14:14
|
|
Run angle_perftests on GLES backend
Adds OPENGLES_NULL configuration
and selects between OPENGL and OPENGLES based on whether building for Android.
Also 2 small changes to get the newly enabled tests to pass on N5X:
1. Require GL_EXT_texture_storage in TexSubImage test
2. Limit numVertexUniforms and numFragmentUniforms to 64 in MatrixUniforms test
BUG=675997
Change-Id: I5439e5fb7e93b3a928f12594761115d56f60d81b
Reviewed-on: https://chromium-review.googlesource.com/748522
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c4f1dd83
|
2017-10-25T17:02:29
|
|
Use angle::BitSetIterator optimizations on arm64 as well
Previously were enabled only on x86_64.
Also change from using target_cpu to current_cpu, as the doc recommends.
BUG=angleproject:1814
Change-Id: Ia7e8e930c76aab5cfb47b75e0ec78902ab313237
Reviewed-on: https://chromium-review.googlesource.com/737438
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
7478ce7f
|
2017-10-13T13:19:07
|
|
D3D11: Minor Optimization to DrawCallNeedsTranslation
Remove IsStreamingIndexData from DrawCallNeedsTranslation since
IsStreamingIndexData is only needed for drawElementsIndirect for fast path.
This change gives about a 4% improvement on the drawElements benchmark for
the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: Ife2a9748f6b6fe9bc1f3a67c96672ab941a89d44
Reviewed-on: https://chromium-review.googlesource.com/717946
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0a6752e3
|
2017-10-17T22:59:09
|
|
Use default window size in RenderTestParams.
This fixes a D3D11 runtime warning in perf test init. We don't
see it on the bots because we don't typically enable the D3D11
runtime.
BUG=angleproject:2188
Change-Id: I512db7d5a34204f1d94e28d80cadb18f9b17e55f
Reviewed-on: https://chromium-review.googlesource.com/724738
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2e568cfb
|
2017-09-18T17:05:22
|
|
Add generator for packed GL enums.
For testing this also converts two unimportant GLenums, gl::BufferUsage
and gl::CullModeFace.
BUG=angleproject:2169
Change-Id: If1e86a97d0fed3fd567303aca6506ec579503076
Reviewed-on: https://chromium-review.googlesource.com/688000
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
981f0f8f
|
2017-09-21T09:07:41
|
|
Add flag to do a fast pass through perf tests.
This flag will only render the first frame of each perf test,
regardless of their preferences for how many seconds to run.
It will be useful for speeding up the run time of the perf tests
on testing infrastructure that only cares about correctness.
BUG=chromium:725308
BUG=chromium:765321
Change-Id: I926f488c42f27ef23ef06a0159902613cff04080
Reviewed-on: https://chromium-review.googlesource.com/677306
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
33510107
|
2017-09-20T10:39:18
|
|
Pass gl::Context to more Buffer methods.
This will allow us to pull out the Renderer from the Context in more
places in Buffer11, for state update. Impacts a few method calls in
a few places.
BUG=angleproject:2151
Change-Id: I1360caea65a94d3de4cd9f52d1b74b10439b02b3
Reviewed-on: https://chromium-review.googlesource.com/673136
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a20af6d7
|
2017-09-18T13:32:29
|
|
Use C++11 raw string literals instead of SHADER_SOURCE macro
This is better in many ways:
1. It doesn't confuse clang format
2. \n doesn't need to be included after preprocessor directives like
the version directive.
3. It's using built-in functionality instead of something custom.
Raw string literals should be the preferred way to include shader
source in C++ files going forward.
BUG=angleproject:2157
TEST=angle_end2end_tests
Change-Id: I8b236a6e2d5c25d920297e5bc5b5b143eddeba1f
Reviewed-on: https://chromium-review.googlesource.com/671046
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
71c88b31
|
2017-09-14T22:20:29
|
|
Enable [[nodiscard]] for gl::Error.
This forces all return values to be checked for gl::Error.
Requires quite a bit of minor refactoring. I also added a macro to
swallow an error without returning from a function.
We could look at storing the errors in the Context at some point,
since almost always when we're generating errors that we need to
discard we have access to the Context as a parameter.
BUG=angleproject:2150
Change-Id: I457e48a30c002eda0993acbcd3180ba87bf169fb
Reviewed-on: https://chromium-review.googlesource.com/665173
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
fca78130
|
2017-09-06T13:51:39
|
|
Extend multiview perf tests to cover all extension code paths
The ANGLE_multiview extension can be supported with three possible code
paths - through view being selected in the vertex shader on D3D and
OpenGL, and through the view being selected in the geometry shader on
D3D only. This patch extends the multi-view performance tests to
benchmark these three different code paths.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I443e4db64a95eede1142718a43a095ee5a03738c
Reviewed-on: https://chromium-review.googlesource.com/652466
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
e49058e7
|
2017-08-31T15:43:43
|
|
D3D11: Enable multiview performance tests
The patch adds D3D11 as a testable platform to the multiview performance
tests.
BUG=angleproject:2062
TEST=angle_perftests
Change-Id: I2266073860fd53f546ce9a414bc343b582c77f70
Reviewed-on: https://chromium-review.googlesource.com/645849
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
335d67b8
|
2017-08-24T14:57:44
|
|
Fixes to the Uniforms Perf benchmark.
Fix the REPEAT test, and add a D3D11 and OpenGL null test.
BUG=angleproject:1390
Change-Id: I491cbc9f9201ef85aeb9f70138a276078220b26d
Reviewed-on: https://chromium-review.googlesource.com/623928
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6a6199b4
|
2017-06-05T17:30:55
|
|
Add multiview performance tests
The patch adds two tests to measure the performance of the
ANGLE_multiview extension implementation:
1) The first test renders onto two views by issuing thousands of state
changes and draw calls. The aim of the test is to stress the CPU.
2) The second test renders onto two views by drawing with one draw call
half a million quads with multiple attributes per vertex. The attributes
are passed to the fragment shader where they are used for computing the
color. The aim of the test is to stress the GPU's memory system.
The patch also extends the ANGLEPerfTest's functionality to only run
the benchmark if the necessary extensions are available.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ic63d54a69fdddb72439eeeb1951a500fb1247e95
Reviewed-on: https://chromium-review.googlesource.com/597630
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
c2493e38
|
2017-06-20T17:16:25
|
|
Add DrawElementsPerf test
This is a follow-up CL for
https://chromium-review.googlesource.com/c/544634/.
In this commit, we add drawElements perf test for d3d9, d3d11 and
OpenGL. Specially, we test DrawElements with unchanged index buffer
every frame and changed index buffer every frame. This is also a
preparation for further remove IndexRange in validation.
Paste a set of data (repeated 30) for reference on Intel skylake
Win10 desktop.
DrawElementsPerfBenchmark.Run/d3d11:
mean: 13186.1666667, stddev: 200.479605502,
truncated mean: 13192.5416667, stddev: 156.284190704
DrawElementsPerfBenchmark.Run/d3d11_index_buffer_changed:
mean: 43.6, stddev: 4.02160830183,
truncated mean: 43.5833333333, stddev: 2.97092391166
BUG=angleproject:1393
TEST=angle_perftests
Change-Id: I94bd181aa2b4515df1affc79f591f5db399feac3
Reviewed-on: https://chromium-review.googlesource.com/585981
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
07b36365
|
2017-06-05T16:08:27
|
|
D3D11: Don't dirty all uniforms on program change.
Only dirty the uniforms if the uniforms are dirty. This gives about a
20% reduction in ANGLE overhead on a targeted micro-benchmark. It
probably won't have that large of an impact on most real-world
applications, but it was strictly unnecessary work.
Something that came up when investigating the internal program binary
cache in ANGLE D3D11.
BUG=angleproject:2053
Change-Id: I2d55c010c29ce9627a9001dd2abe6e549f0b7e8c
Reviewed-on: https://chromium-review.googlesource.com/524297
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c564c070
|
2017-06-01T12:45:42
|
|
Pass gl::Context to impl methods instead of ContextImpl.
In some cases we might have to call back into the GL layer, passing
the Context, and if we just have a ContextImpl pointer this isn't
possible. It also removes the need for SafeGetImpl.
BUG=angleproject:2044
Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6
Reviewed-on: https://chromium-review.googlesource.com/516835
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
231c7f56
|
2017-04-26T13:45:37
|
|
Apply clang-format to many files.
This cleans up the formatting in many places.
BUG=None
Change-Id: I6c6652ebc042f1f0ffecced53582d09d66b4f384
Reviewed-on: https://chromium-review.googlesource.com/487884
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
06f76552
|
2017-05-05T10:09:32
|
|
UniformsPerf: Define a vertex attribute.
This seems to fix a crash on D3D9/Win7/Intel.
BUG=chromium:704211
Change-Id: If600a6b8409774503f28ca122d87ef723e4ea2e5
Reviewed-on: https://chromium-review.googlesource.com/497649
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
aa7203ef
|
2017-05-03T23:32:29
|
|
Inherit privately from angle::NonCopyable.
Make all inheritance from angle::NonCopyable private so the compiler
complains about this (admittedly unlikely) code:
class Foo: angle::NonCopyable {
virtual ~Foo() { ... }
};
angle::NonCopyable *p = new Foo;
delete p;
In the above code ~Foo() is not called, only ~NonCopyable(), because the
latter is not virtual. Making it virtual would add overhead to all derived
classes which don't already have a virtual method.
Also tighten access in NonCopyable, because we can.
BUG=angleproject:2026
Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0
Reviewed-on: https://chromium-review.googlesource.com/495352
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
876429b7
|
2017-04-20T15:46:24
|
|
Update gl2.h and update entry points.
Some method signatures were updated. Types like GLclampf and GLvoid
were replaced with other equivalents.
BUG=angleproject:1309
Change-Id: I05e8e2072c5a063d87ad96a855b907424661e680
Reviewed-on: https://chromium-review.googlesource.com/475011
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6de51858
|
2017-04-12T09:53:01
|
|
Optimize angle::BitSetIterator.
Adds a new custom bitset template to handle packing as many bits as
possible into a single variable. Intelligently select the right class
depending on platform features and bit sizes.
For now, always use a packed 64-bit set on 64-bit, instead of using
a 32-bit set for smaller bitsets.
BUG=angleproject:1814
Change-Id: I3ffef815c15515555833f6fc9302d8a4eee5423b
Reviewed-on: https://chromium-review.googlesource.com/471827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2597fb64
|
2016-12-09T16:38:02
|
|
ES31: Refactor VertexArray for Vertex Attrib Binding
OpenGL ES3.1 feature Vertex Attrib Binding requires vertex arrays should
be split into two arrays:
1. an array of vertex buffer binding points, each of which specifies:
- a bound buffer object,
- a starting offset for vertex attribute data in that buffer object,
- a stride used by all attributes using that binding point,
- a frequency divisor used by all attributes using that binding point.
2. an array of generic vertex attribute format information records, each
of which specifies:
- a reference to one of the new buffer binding points above,
- a component count and format, and a normalization flag for the
attribute data,
- the offset of the attribute data relative to the base offset of each
vertex found at the associated binding point.
Current ANGLE implementation simply uses a struct to represent a vertex
attribute object, which does not meet the requirements above.
This patch aims to be the the basis of the implementation of all ES3.1
Vertex Attrib Binding APIs by refactoring the struct VertexAttribute and
the class VertexArray to fit the new data layout and ensuring all current
functionality is retained.
BUG=angleproject:1593
TEST=angle_unittests, angle_end2end_tests, gpu_unittests
Change-Id: Ieb41f1bf503f815fd0476d2ea045dcb863465254
Reviewed-on: https://chromium-review.googlesource.com/418880
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3764b257
|
2017-02-15T10:41:31
|
|
Vulkan: Run simple triangle perf test.
The most basic perf test possible.
BUG=angleproject:xxxx
Change-Id: I71b28098c0a1f2174a0177b08bddf74d337438e9
Reviewed-on: https://chromium-review.googlesource.com/427270
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
abf38572
|
2017-02-14T16:47:59
|
|
Remove old C++ ANGLE platform.
Now that the new platform is in place, we can remove the old methods.
Must be landed after https://codereview.chromium.org/2697463003/
BUG=angleproject:1892
BUG=chromium:678870
Change-Id: Ia29a3b120cf3521fc0409019c2e64e4dbc6f460d
Reviewed-on: https://chromium-review.googlesource.com/441274
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5f56ddb9
|
2017-01-13T17:29:55
|
|
Buffer: Pass Context to all impl methods.
This allows us to retrieve Device handles for Vulkan, and could allow
us to avoid storing some pointers for other back-ends.
BUG=angleproject:1684
Change-Id: Iccd5b97cf1c3a332d62a38ad0fcf21c352270439
Reviewed-on: https://chromium-review.googlesource.com/426400
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6483eb62
|
2017-02-01T12:57:30
|
|
Add a BlitFramebuffer perf test.
This microbenchmark targets a variety of blit use cases, including
color blit, depth/stencil blit, and multisample resolve blit.
BUG=angleproject:1710
Change-Id: Ia8b3eb40af29e809e803ed48a69f3975b97fd80b
Reviewed-on: https://chromium-review.googlesource.com/435515
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b8353b01
|
2017-01-25T12:57:21
|
|
Vulkan: Simple buffer creation.
This is necessary to initialize vertex arrays.
BUG=angleproject:1579
Change-Id: Ic5a232d5cdfaa75b41241901de842e62ff3b173f
Reviewed-on: https://chromium-review.googlesource.com/406645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
2cf7c51e
|
2017-01-16T15:27:57
|
|
Add a perf test for binding buffers.
BUG=angleproject:1639
Change-Id: I42da2acdb7c99116c4418a2f71d65d72d328d641
Reviewed-on: https://chromium-review.googlesource.com/428572
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d1e22b0b
|
2017-01-11T13:39:26
|
|
Expand Uniforms perf test.
This will run additional tests for redundant uniform sets on vec4
uniforms as well as matrix. Also rename the metrics slightly.
BUG=angleproject:1385
Change-Id: Ib9777ea38d3153cc0fb69658fcf96d75b03f3770
Reviewed-on: https://chromium-review.googlesource.com/427141
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2d676313
|
2017-01-04T10:44:36
|
|
Refactor common functionality out of draw call perf tests
Common functionality across some perf tests is moved to a separate
utility file, draw_call_perf_utils.
This will make it simpler to add more perf tests, such as tests for
multiview drawing.
BUG=angleproject:1669
TEST=angle_perftests
Change-Id: I2108d7425f7d8f43f333ea9daa6779e42862350b
Reviewed-on: https://chromium-review.googlesource.com/422332
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
acd1898e
|
2017-01-04T10:46:42
|
|
Replace Error(GL_NO_ERROR) with NoError().
In order to make the errors be consistent throughout ANGLE.
BUG=angleproject:1686
Change-Id: I0a2d86091d640aedeac94beae345c1fb6971b00d
Reviewed-on: https://chromium-review.googlesource.com/424835
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d9019838
|
2016-12-20T13:58:23
|
|
Fix cast warning in UniformsPerf.cpp.
BUG=None
Change-Id: I28af0d2be5ef545e78b8283d43d14078c0d1b62a
Reviewed-on: https://chromium-review.googlesource.com/422491
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5cdbda17
|
2016-12-20T11:41:56
|
|
UniformsPerf: Properly limit maximum uniform vectors.
The uniforms check was not correctly validating vector count instead
of uniform count. Fix this, and reduce the maximum maxtrix uniforms
to fix a crash on the perf bots.
BUG=angleproject:1385
BUG=angleproject:1390
BUG=angleproject:1671
Change-Id: I261477c33639ed516ff6a29b38ab87f89309a7f1
Reviewed-on: https://chromium-review.googlesource.com/422533
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fc5aef40
|
2016-12-19T15:23:49
|
|
Add a matrix uniforms perf test.
This test also adds a mode which controls if the uniform data changes
frame-to-frame. Could be useful when we test removing redundant
data checking.
BUG=angleproject:1385
BUG=angleproject:1390
BUG=angleproject:1671
Change-Id: I936702b83f3d7cd97918542b06ecc1372884b412
Reviewed-on: https://chromium-review.googlesource.com/422348
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
922cbfcb
|
2016-11-25T16:23:18
|
|
common: Add a vector arithmetic helper classes
Change-Id: I2f96baedf10d346eaa150bab04f8f6ca3ba573b9
Reviewed-on: https://chromium-review.googlesource.com/414272
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
457aa6c8
|
2016-11-22T18:36:31
|
|
Add a shader compile performance test.
BUG=angleproject:422
Change-Id: I10a2192c5c91360a1b7fe5e4d014bcf1fa84c96e
Reviewed-on: https://chromium-review.googlesource.com/413713
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8f775607
|
2016-11-03T16:45:34
|
|
Introduce a gl::BufferState class.
This state can share vital pieces of information with the impl.
The most elementary state is the buffer size, which then the
impl doesn't need to replicate.
BUG=angleproject:1579
Change-Id: I341393c64a6e49de65c1d53b1bad2fa143209862
Reviewed-on: https://chromium-review.googlesource.com/406644
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f40d235
|
2016-09-23T14:50:29
|
|
Add a perf test for changing texture state.
BUG=angleproject:1386
Change-Id: I44da3a4cb2b23f98978349f26b80d6bb3a6dc8b5
Reviewed-on: https://chromium-review.googlesource.com/388784
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
29639857
|
2016-09-02T15:00:09
|
|
D3D11: Work around Intel uniform buffers bug.
When copying from a staging buffer to a uniform buffer, the first
upload would be incorrect. Work around this by trying to upload
directly to a uniform buffer on the first BufferSubData call.
BUG=chromium:593024
Change-Id: I0df3a1422b962bf3ece5d445f435df01e3544b67
Reviewed-on: https://chromium-review.googlesource.com/368774
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cd1b1226
|
2016-06-16T13:58:54
|
|
perf_tests: Work around stalls in gl_null test teardown.
The Clear command in the draw call benchmark was not being properly
no-op'ed. This would cause the driver to get a huge queue of GL
command, which it would only flush when the test was torn down. This
manifested as a 5+ second stall on test teardown.
Looking at the clear command, it does some work with binding
and then calling GL functions, so properly filtering out the driver
commands would be a bit more complicated. For now, we can hack in a
workaround for the draw call test (the only one that uses the GL
NULL renderer at the moment) to not call clear when it would give
us problems.
BUG=620687
Change-Id: I64a2ed1883e8d3bf0d4c423c8bce0902ae9bf8df
Reviewed-on: https://chromium-review.googlesource.com/352828
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
193c671d
|
2016-06-09T07:09:58
|
|
Add a perf test for render-to-texture.
This perf test focuses on the hotspot we have in Framebuffer::
checkStatus. It's exactly the same as the standard draw call
benchmark, but binds a Framebuffer before rendering.
BUG=angleproject:1388
Change-Id: Icc7a99e399f469d765bf1ac6abe0562977b9a39d
Reviewed-on: https://chromium-review.googlesource.com/348956
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e4857c7d
|
2016-04-21T14:13:53
|
|
Buffer11: Use adaptive threshold for releasing system memory.
The hard-coded threshold of five uses before a release was regressing
the Oort online benchmark, which seems to use an index buffer many
times, then change to a different range of indices, which would need
to check the system memory for index range validation.
Also add a performance regression test, and an update to the perf
runner script which checks for the most recent binary among the search
directories.
BUG=594066
Change-Id: Id09cc32fd00bff1c72cbe9b6fb7c210fd047a551
Reviewed-on: https://chromium-review.googlesource.com/339271
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f4863a45
|
2016-04-12T11:37:23
|
|
Add a perf test for setting uniform data.
BUG=angleproject:1353
Change-Id: Iaae79bb85318583c12b9a939ea27a7f7f7f64faf
Reviewed-on: https://chromium-review.googlesource.com/338441
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
7d712e7d
|
2016-03-29T21:54:33
|
|
Re-land "Clean up Buffer11."
This cleans up some messy stuff from the emulated index buffers, which
were caching variables that didn't need to be cached.
Also add in missing error checks. This touches a lot of code.
Re-land with a fix for clang-win build.
BUG=angleproject:1327
BUG=angleproject:1310
Change-Id: I31ed81c7242782bef7c5f6cde2192552f7ff9403
Reviewed-on: https://chromium-review.googlesource.com/336052
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|