|
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>
|
|
e34deaa3
|
2016-03-30T01:50:40
|
|
Revert "Clean up Buffer11."
Fails Clang-win because of std::forward
..\..\third_party\angle\src\libANGLE/Error.h(60,40): error: no matching function for call to 'forward'
BUG=598944
BUG=angleproject:1327
BUG=angleproject:1310
This reverts commit 041d678b4764484386f934df927f00a5df48a351.
Change-Id: I9fb0685cd01090b1faf8417ffa3c9b49eeb4510e
Reviewed-on: https://chromium-review.googlesource.com/336040
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
041d678b
|
2016-03-29T17:00:47
|
|
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.
BUG=angleproject:1327
BUG=angleproject:1310
Change-Id: Icd722d57d9449388fbabc62c7ea37f0526a568ff
Reviewed-on: https://chromium-review.googlesource.com/334731
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
022315de
|
2016-03-13T08:18:03
|
|
D3D: Add perf test for dynamic buffer promotion.
Drawing with a DYNAMIC usage array or element array buffer should
eventually lead to internally switching to a static usage, if the app
doesn't modify the data very often. This perf test simply renders a
bunch of random indexed triangles where both buffers are specified as
DYNAMIC. It should perform just as well as the static usage after a
warm-up period.
BUG=angleproject:1334
Change-Id: Ibe432d2122feaefc82d3c11cdf227f93ada82eda
Reviewed-on: https://chromium-review.googlesource.com/332578
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d8fa9215
|
2016-03-02T11:51:43
|
|
D3D: Refactor VertexBuffer::getSpaceRequired.
By making this a virtual call to BufferFactoryD3D (aka RendererD3D),
we can also stop having side-effects in the BufferD3D class of
creating a static buffer storage when we only want to know the space
required for some vertex elements.
This refactoring will aid implementation of VertexArray11 dirty bits.
BUG=angleproject:1327
Change-Id: I0e34c6e9f5da35edebc179d578ad9392dc0166db
Reviewed-on: https://chromium-review.googlesource.com/329741
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
534bf87b
|
2016-02-09T11:33:29
|
|
Implemented instanced rendering for emulated point sprites
Non-instanced PointSprite emulation for lower feature levels is
implemented using D3D DrawIndexedInstanced and an instanced vertex
buffer containing a pointsprite quad.
GL instanced rendering using glDrawArraysInstanced and
glDrawElementsInstanced with pointsprite emulation is performed using
a for-loop. The loop iterates over each instance to render and adjusts
the buffer offsets accordingly. This is not performant and is only used
and required by this chosen pointsprite emulation method.
Indexed instanced (glDrawElementsInstanced), uses the same offset loop
because the vertex buffer containing the data to be rendered has already
been expanded using getEmulatedIndexedBuffer(). Expanding the buffer
makes the two rendering operations similar enough to share code.
BUG=angleproject:1279
TEST=angle_end2end_tests
Change-Id: If46cc9f158e29f5518c70ad630b3228f474a9f8b
Reviewed-on: https://chromium-review.googlesource.com/321407
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f83cbc65
|
2016-01-22T15:27:21
|
|
Use std::random functions for test and samples RNG.
These standard functions are much more powerful than the C random()
routines. Use them to improve the random utils, and use a class
to clean things up further.
This fixes a problem I was having using random_utils where I was
having trouble generating random 32 bit unsigned integers.
BUG=angleproject:1290
Change-Id: I5081764053d0667a4e323553b7dea531256aa778
Reviewed-on: https://chromium-review.googlesource.com/323440
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
82e3f3de
|
2016-01-22T17:55:44
|
|
Cast display parm for eglGetPlatformDisplayEXT.
The native display parameter to eglGetPlatformDisplayEXT has type void*.
When building with -DUSE_OZONE the native display type is intptr_t so
a cast is needed.
BUG=angleproject:1297
Change-Id: I947f5f9016926b6e3d590a2e29b5ee1fc883384d
Reviewed-on: https://chromium-review.googlesource.com/323471
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Tested-by: Frank Henigman <fjhenigman@chromium.org>
|
|
e1743f37
|
2016-01-06T05:24:22
|
|
Clang warning fixes
This fixes member initialization order and unused private member
warnings that broke the Clang build after the last Angle roll.
BUG=82385
Change-Id: If866f352bda6d66093c180fdbec6c16bf902b628
Reviewed-on: https://chromium-review.googlesource.com/320466
Reviewed-by: Nico Weber <thakis@chromium.org>
Tryjob-Request: Nico Weber <thakis@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Nico Weber <thakis@chromium.org>
|
|
7ee40d1a
|
2016-01-04T08:37:00
|
|
Fix compilation failures on OSX standalone builds
BUG=
Change-Id: Ifd40ae30d601227caf550546fcffc286cf533a73
Reviewed-on: https://chromium-review.googlesource.com/320290
Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
465b3a5f
|
2015-12-15T12:08:24
|
|
Add texture sampling perf test
The test generates a texture containing random data and then blurs it in
a fragment shader using nearest neighbor sampling. The test is
specifically designed to test overhead of GLSL's builtin texture*()
functions that may result from how ANGLE translates them on each backend.
BUG=angleproject:1261
TEST=angle_perftests
Change-Id: I188fa8c07e609b7f371e587358f913b506bd7d44
Reviewed-on: https://chromium-review.googlesource.com/319382
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
8047f065
|
2015-12-15T17:54:42
|
|
Improve perf testing framework
The ANGLERenderTest subclasses have a parameter "iterations". Previously
most of these tests would perform iterations^2 iterations, since the
looping was done both in ANGLERenderTest and in the individual test
classes. Do the looping only in the individual test classes instead.
This enables getting rid of separate beginDrawBenchmark() and
endDrawBenchmark() functions.
Some other unused code is also removed:
1. stepBenchmark function
2. unused parameters to step()
This makes the core loop of running tests simpler.
The perf testing framework also now has shared logic for deciding when
to end a given test.
The score calculation for tests is also changed. Instead of reporting
just the number of operations done, it is reported relative to the actual
run time of the test. This should make the test results more accurate,
since run time of the tests may have some variation. It also enables
changing the run time of the tests without rebaselining them.
In the tests that use GPU, GPU operations are also waited to finish
before stopping the timer.
BUG=angleproject:1261
TEST=angle_perftests
Change-Id: I69e9aad8afd2d9dedd60e144f0a5d4203618feef
Reviewed-on: https://chromium-review.googlesource.com/319381
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
fecbed9f
|
2015-12-17T12:01:12
|
|
Fix code style in perf tests
1) Format switch/case with git cl format
2) Change NULL -> nullptr
3) Change int to GLint where appropriate
4) Use more appropriate variants of asserts
BUG=angleproject:1261
TEST=angle_perftests
Change-Id: I97d6260dbd72ef3897fff145682b7043bf323b76
Reviewed-on: https://chromium-review.googlesource.com/319380
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
90c253a6
|
2015-12-15T15:14:08
|
|
Add an instancing perf test.
BUG=526217
BUG=angleproject:1164
Change-Id: Ia353a3b2fa0ab0e8b7fd15d72bb63e5ecb7833b1
Reviewed-on: https://chromium-review.googlesource.com/301469
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
84b0c3b7
|
2015-11-05T15:15:28
|
|
Re-land "In D3D, cache static vertex buffers to prevent wasteful recreation"
BUG=angleproject:197
Changes since first failed patch:
- Optimized BufferD3D::getStaticVertexBuffer()
- Removed loop to commit static buffers
- Out-of-date static buffers (which are much rarer anyway after this patch)
are marked for deletion at the *next* draw call, rather than searched for
before each draw call. That search was expensive.
The change should see a net improvement to DrawCallPerfBenchmark for D3D null.
Change-Id: If4942e0afd9e8fefadce8820a1305e13636547ef
Reviewed-on: https://chromium-review.googlesource.com/311115
Tested-by: Austin Kinross <aukinros@microsoft.com>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4dd1e55f
|
2015-11-06T14:23:24
|
|
D3D11: Implement basic primitive restart.
D3D11 handles primitive restart similarly to OpenGL's fixed index,
with a couple differences. It can't be toggled off, so we need to
restrict the max element index (handled in a prior patch), and
for smaller buffer types we need to rewrite the index data.
BUG=angleproject:597
Change-Id: Ib890ce9b3f5511784138ea3953a384b1c483ca9e
Reviewed-on: https://chromium-review.googlesource.com/309639
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
5b58cae2
|
2015-11-05T14:51:47
|
|
Revert "In D3D, cache static vertex buffers to prevent wasteful recreation"
Perf bisect traced performance regression to this CL:
8.1% regression in angle_perftests/DrawCallPerf_d3d9_null/score
6.2% regression in angle_perftests/DrawCallPerf_d3d11_null/score
BUG=angleproject:197
This reverts commit 868651d334d060458af13c7ff9211c2f72be0cad.
Change-Id: Iaba7eb4e574eb886496361e61fd5fe78ca14dcb8
Reviewed-on: https://chromium-review.googlesource.com/311150
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
0984d111
|
2015-10-29T14:06:04
|
|
Replace _countof with ArraySize
This macro only exists on MSVC
BUG=None
Change-Id: I23204d1307279840a7f85a005da9ed5c324e7dae
Reviewed-on: https://chromium-review.googlesource.com/309800
Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
868651d3
|
2015-08-31T15:31:18
|
|
In D3D, cache static vertex buffers to prevent wasteful recreation
BUG=angleproject:197
Change-Id: I66cd10609b2edbcf12b99530eafe1727511fe515
Reviewed-on: https://chromium-review.googlesource.com/296503
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Austin Kinross <aukinros@microsoft.com>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
3edfe034
|
2015-09-04T16:38:24
|
|
Support primitive restart in RendererGL.
Store index ranges in a new struct that tracks how many real indices were
seen. Update index caching to key on primitive restart being enabled and
update index counting functions to skip primitive restart indicies when
needed.
Passes dEQP-GLES3.functional.primitive_restart.*
Change-Id: Id1e25a5adcdcd4e998836e8ff6679c64be4c3066
Reviewed-on: https://chromium-review.googlesource.com/297770
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
4a693565
|
2015-09-10T09:48:13
|
|
Fix the named parameter for the IndexConversion perftest
It seems that the compiler didn't resolve the overloaded operator<< with
the structure's grandparent structure. Fix it by explicitely casting to
the grandparent before calling operator<<. Also provides slightly more
information on the number of iterations/triangles.
This wasn't caught with local testing as IndexConversion isn't compiled in
angle_perftests on Linux.
BUG=angleproject:1153
BUG=530226
Change-Id: Ifa602eb0728d052bc651f0dd030f9f880c00dc51
Reviewed-on: https://chromium-review.googlesource.com/298860
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
5ade8459
|
2015-09-02T11:00:30
|
|
Properly check for EGL_KHR_create_context before creating ES3 context.
Mark EGL_KHR_create_context as supported in the DisplayGLs.
BUG=angleproject:1149
Change-Id: I20671535680eb2c3b9c08205cee243b3aa5c5821
Reviewed-on: https://chromium-review.googlesource.com/297080
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
f3357ee2
|
2015-07-22T14:10:19
|
|
EGLWindow: remove the unused width and height
EGLWindow does nothing with it per se, but some code was relying on it
to store it. Add width and height to ANGLETest and SampleApplication
instead. Also fix a typo in PerfTestParams, widowWidth -> windowWidth.
BUG=angleproject:1105
Change-Id: I26da607a2e6342864b508a50ee3cf8944608f868
Reviewed-on: https://chromium-review.googlesource.com/287379
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
d3dfda2b
|
2015-07-06T08:28:49
|
|
Refactor how we store vertex formats.
Instead of storing a vertex format as a struct with the full info,
instead use an enum, and look up the info when we need it. This
saves a lot of constructor initialization time, operator comparison
time, and storage. It also will allow us to look up D3D format info
more quickly.
BUG=angleproject:959
Change-Id: I202fd1ea96981073bc1b5b232b1ec3efa91485cb
Reviewed-on: https://chromium-review.googlesource.com/277289
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
558f2b5a
|
2015-06-02T09:34:11
|
|
Added emulated indexed pointsprite rendering support.
This emulation is for renderers that do not support Geometry Shaders.
BUG=angleproject:949
Change-Id: I7acf003e83ea6661f10a703486e6d07eb28786f8
Reviewed-on: https://chromium-review.googlesource.com/274851
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Cooper Partin <coopp@microsoft.com>
|
|
5a0edc62
|
2015-06-30T12:36:07
|
|
Change intializer list order to match field order.
BUG=505304
Change-Id: I38149e72732f0b4eb7d398f90b5d11660e2a7fbc
Reviewed-on: https://chromium-review.googlesource.com/282465
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
9e582b93
|
2015-06-22T11:18:32
|
|
perf_tests: Normalize MS counts in EGL init test.
The un-normalized values depend on the number of frames rendered, so
if we optimize down one time, the other ms values all increase,
because we are rendering more frames. This generates spurious perf
alerts from the perf dashboard.
BUG=None
Change-Id: I1bc480141a8cad7eee96bcdf4d6747a3cbae30f2
Reviewed-on: https://chromium-review.googlesource.com/280980
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
f0c1d029
|
2015-06-18T18:37:09
|
|
Fix compilation errors and Mac and some try bots
BUG=angleproject:892
Change-Id: I9a449889109b7df9c69776573b0fc2098cd06199
Reviewed-on: https://chromium-review.googlesource.com/280565
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
6ffeb744
|
2015-06-10T14:54:06
|
|
Add more detailed captures to EGL init perf test.
We can use the ANGLE platform to capture more specific information
than total number of iterations. We can also capture time spent
initializing DLLs, calling D3D11CreateDevice and allocating some
default resources.
BUG=angleproject:1014
Change-Id: If0f4965e7aac22eb09dfa0d2300ff449e7481f6e
Reviewed-on: https://chromium-review.googlesource.com/276631
Reviewed-by: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
b76e350f
|
2015-06-11T16:01:45
|
|
Fix the broken draw call perf test.
This was broken by the angle test platforms refactor patch,
https://chromium-review.googlesource.com/#/c/276460/. It was
leading to the wrong tests be executed for the perf tests, and
also had bugs with supporting a default platform.
BUG=None
TEST=angle_perftests
Change-Id: Ib99342d4189fd98bf93dce088d15afcecc4a7e37
Reviewed-on: https://chromium-review.googlesource.com/277036
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
|
|
dd323e95
|
2015-06-09T15:16:31
|
|
Only run tests that the current hardware can support.
For each config, determine if a context can be created at test
instantiation time. This allows skipping of ES3 tests when the hardware
does not support ES3.
Updated the perf_tests to use the EGLPlatformParameters struct so that
they can be filtered in the same way.
Change-Id: If664604b057cec4005eb4b63bebd83cd4964b7b2
Reviewed-on: https://chromium-review.googlesource.com/276460
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
39fcf263
|
2015-06-08T14:39:07
|
|
Use both null and real renders for draw call perf.
Introduce a "null" GL renderer for this specific benchmark, which
does not do any work on drawArrays and drawElements. We could use
the same kind of trick for buffer and texture updates, if we need
it. This gives us a good baseline for comparing GL and D3D perf.
BUG=angleproject:1040
Change-Id: I4bf7c75df01932de45ddd0a4e42e8fc82f15e37e
Reviewed-on: https://chromium-review.googlesource.com/276192
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ce232678
|
2015-05-28T13:26:02
|
|
Add a perf test for eglInitialize.
Also shutdown performance, since it's not easy to only test one.
BUG=angleproject:1014
Change-Id: I9d06426788ed336031271f8876589b111f1294b7
Reviewed-on: https://chromium-review.googlesource.com/273974
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
|
|
80a50949
|
2015-05-21T10:54:14
|
|
Add perftest parameters for OpenGL
BUG=angleproject:892
Change-Id: Ia22b8ab48456d6fbccb159404e943f9ef2650bdc
Reviewed-on: https://chromium-review.googlesource.com/272610
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
b45a80db
|
2015-05-21T10:39:43
|
|
Make perftests use ANGLE_INSTANTIATE_TEST
This also moves ANGLE_INSTANTIATE_TEST to its own header and makes it
generic over the type of test parameter.
BUG=angleproject:892
Change-Id: Id4e3929d7ad06964b3259015915be84a8ee414f9
Reviewed-on: https://chromium-review.googlesource.com/272553
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
71632d0c
|
2015-05-12T17:14:56
|
|
Fix crash in IndexDataManagerPerfTest.
Since the gl::Buffer doesn't know about its data, the index range needs to
be computed on the raw indices instead of through the buffer.
Change-Id: I3f53822033a1a25bf5fae9132ee2ceb312eaa283
Reviewed-on: https://chromium-review.googlesource.com/270498
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
fe5f54f5
|
2015-05-12T17:06:05
|
|
perf_tests: Reduce iteration counts in some tests.
This gives the tests more room to breathe, and report more
precision in the final scores. Hopefully this will clear up the
issues on the bots where some tests appear to fluctuate between a
high and low value.
BUG=468852
Change-Id: Ie2793e0a89e5ded63ba4217828076df46c393a92
Reviewed-on: https://chromium-review.googlesource.com/270497
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
520c4ae2
|
2015-05-05T13:12:36
|
|
Add a Buffer::getIndexRange function.
Instead of exposing the index range cache, add a more generic method that
allows the buffers to handle their own caching of index ranges.
BufferImpl::getData can be hard to implement for BufferGL because there
isn't a way to tell the buffer to unmap and glGetBufferSubData can be very
expensive, requiring an extra copy of the data.
BUG=angleproject:881
Change-Id: Idec645219056132e0d72a410fbe7b971fa02c9e9
Reviewed-on: https://chromium-review.googlesource.com/261892
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Geoff Lang <geofflang@chromium.org>
|