Граф коммитов

10196 Коммитов

Автор SHA1 Сообщение Дата
Jonah Ryan-Davis 32d718f3e8 NVIDIA Shield workaround for IsNVIDIA() detection
NVIDIA Shield do not implement Vulkan, which is used to populate
vendor IDs in SystemInfo. The vendorIDs are used to check IsNVIDIA().
This CL adds a workaround so IsNVIDIA() returns true for NVIDIA
Shield.

Bug: angleproject:3541
Change-Id: Ib36dd376207163acfc8d3a0e341f07a7d6aa3122
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663080
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-06-18 20:34:57 +00:00
Sunny Sachanandani f9686af021 Add support for D3D11 texture backed EGLImages
Implement EGL_ANGLE_image_d3d11_texture extension.  Images created with
this extension might not be renderable based on bind flags and resource
usage of the client provided texture in which case attaching them to a
framebuffer won't succeed.

The intended use case is to bind the front and back buffers of a swap
chain to GL textures that can be used for rendering in the case of the
back buffer and as a shader input for the front buffer.

Bug: chromium:939655
Change-Id: Ic3328e831880292217b88be84740740df6031fa6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646732
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-06-18 20:14:17 +00:00
Jonah Ryan-Davis eee67c6ec2 Fix Platform.h integration with ANGLE
A function was renamed which broke the platformMethods table strings.
This CL reverts the rename (originally from crrev/c/1660952)

Bug: angleproject:1621
Change-Id: I8121a4956ba1d3e3c5036f72f6f1fdf5509dc491
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664792
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
2019-06-18 19:05:07 +00:00
Jamie Madill 124f78c2ff Remove gl::Context parameter from Observer functions.
It was only used in exactly one instance in VertexArray. Instead we can
cache a bool and avoid needing to pass it around.

Will make signaling dirty easier in the Vulkan back-end.

Bug: angleproject:3539
Change-Id: Ia570aec051a24a5280df49edc4345c54022b46ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663838
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-18 18:06:17 +00:00
Jonah Ryan-Davis 81b6acfb86 Roll SPIRV Tools and Headers into ANGLE
SPIRV-Tools roller did not roll the correct headers version.

Change-Id: Ifa1c9e2ee92e11a5e84ba78249e422884f5b6582
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1663840
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
2019-06-18 15:02:28 +00:00
Kimmo Kinnunen b8252fdbc6 Remove unused WidenString function
The removed function had incorrect Windows implementation,
the return value was checked incorrectly.

Last use was removed in commit 573f76b3ee
https://chromium-review.googlesource.com/c/1042785

Bug: angleproject:2532
Change-Id: I66907fcb33041b097062208d53ca88752c05f9cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1664153
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
2019-06-18 12:40:15 +00:00
Mohan Maiya 141a23f64f Add support for OES_depth24
Allow 24-bit depth as a valid Renderbuffer format.

Bug: angleproject:3229
Test: angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.DepthBuffer/*
Change-Id: I166639ec0e000595dc55848e4b8b7bef627b6471
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661050
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-18 12:32:35 +00:00
Kimmo Kinnunen a4c639c416 D3D: Add a wrapper to Image11 that enables ASAN/MSAN to catch the errors on map operations
The wrapper should be a no-op on builds with assertions disabled.
The wrapper should be useful on ASAN and MSAN builds.

gn args out/release-asan --args="is_debug=false is_asan=true"
ninja -C out/release-asan angle_end2end_tests ^
 out\release-asan\angle_end2end_tests ^
 --gtest_filter=Texture2DArrayCopy.SnormFormats* --gtest_catch_exceptions=0 ^
 --gtest_repeat=-1

Output when the fix payload of angleproject:2865 is removed:

...

Repeating all tests (iteration 1) . . .

Note: Google Test filter = Texture2DArrayCopy.SnormFormats*
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from Texture2DArrayCopy
[ RUN      ] Texture2DArrayCopy.SnormFormats/ES3_D3D11
=================================================================
==500==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x12b2c4777040 at pc 0x7fff9602216b bp 0x00c0eaafd090 sp 0x00c0eaafd0d8
READ of size 1 at 0x12b2c4777040 thread T0
    #0 0x7fff9602216a in angle::R8G8B8A8::readColor c:\Users\kkinnunen\angle\src\image_util\imageformats.cpp:333
    #1 0x7fff9618dbf0 in rx::CopyImageCHROMIUM c:\Users\kkinnunen\angle\src\libANGLE\renderer\renderer_utils.cpp:377
    #2 0x7fff96186bb2 in rx::Image11::CopyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:113
    #3 0x7fff95e90410 in rx::Renderer11::copyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Renderer11.cpp:3009
    #4 0x7fff9617b447 in rx::TextureD3D_2DArray::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\TextureD3D.cpp:3293
    #5 0x7fff95afd7e1 in gl::Texture::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\Texture.cpp:1196
    #6 0x7fff95977f19 in gl::Context::copyTexture3D c:\Users\kkinnunen\angle\src\libANGLE\Context.cpp:4347
    #7 0x7fff9568b04a in gl::CopyTexture3DANGLE c:\Users\kkinnunen\angle\src\libGLESv2\entry_points_gles_ext_autogen.cpp:57
    #8 0x7ff7d1d8fc97 in angle::CopyTexture3DTest::testCopy c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:90
    #9 0x7ff7d1dadd10 in angle::Texture2DArrayCopy_SnormFormats_Test::TestBody c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:1272
    #10 0x7ff7d2c22891 in testing::Test::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2522
    #11 0x7ff7d2c243c0 in testing::TestInfo::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2698
    #12 0x7ff7d2c253e8 in testing::TestSuite::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2828
    #13 0x7ff7d2c3f33e in testing::internal::UnitTestImpl::RunAllTests c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:5285
    #14 0x7ff7d2c3e72d in testing::UnitTest::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:4873
    #15 0x7ff7d2bf10a2 in main c:\Users\kkinnunen\angle\src\tests\angle_end2end_tests_main.cpp:15
    #16 0x7ff7d2d27897 in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283
    #17 0x7ff801ec7973 in BaseThreadInitThunk+0x13 (C:\WINDOWS\System32\KERNEL32.DLL+0x180017973)
    #18 0x7ff804cea270 in RtlUserThreadStart+0x20 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x18006a270)

0x12b2c4777040 is located 0 bytes to the right of 256-byte region [0x12b2c4776f40,0x12b2c4777040)
allocated by thread T0 here:
    #0 0x7ff7d2c6d574 in malloc C:\b\s\w\ir\k\src\third_party\llvm\projects\compiler-rt\lib\asan\asan_malloc_win.cc:68
    #1 0x7fff95af47b2 in angle::MemoryBuffer::resize c:\Users\kkinnunen\angle\src\common\MemoryBuffer.cpp:40
    #2 0x7fff9648c9a6 in rx::MappedSubresourceVerifier11::wrap c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\MappedSubresourceVerifier11.cpp:51
    #3 0x7fff961864b5 in rx::Image11::map c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:648
    #4 0x7fff9618676c in rx::Image11::CopyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Image11.cpp:93
    #5 0x7fff95e90410 in rx::Renderer11::copyImage c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\d3d11\Renderer11.cpp:3009
    #6 0x7fff9617b447 in rx::TextureD3D_2DArray::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\renderer\d3d\TextureD3D.cpp:3293
    #7 0x7fff95afd7e1 in gl::Texture::copyTexture c:\Users\kkinnunen\angle\src\libANGLE\Texture.cpp:1196
    #8 0x7fff95977f19 in gl::Context::copyTexture3D c:\Users\kkinnunen\angle\src\libANGLE\Context.cpp:4347
    #9 0x7fff9568b04a in gl::CopyTexture3DANGLE c:\Users\kkinnunen\angle\src\libGLESv2\entry_points_gles_ext_autogen.cpp:57
    #10 0x7ff7d1d8fc97 in angle::CopyTexture3DTest::testCopy c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:90
    #11 0x7ff7d1dadd10 in angle::Texture2DArrayCopy_SnormFormats_Test::TestBody c:\Users\kkinnunen\angle\src\tests\gl_tests\CopyTexture3DTest.cpp:1272
    #12 0x7ff7d2c22891 in testing::Test::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2522
    #13 0x7ff7d2c243c0 in testing::TestInfo::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2698
    #14 0x7ff7d2c253e8 in testing::TestSuite::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:2828
    #15 0x7ff7d2c3f33e in testing::internal::UnitTestImpl::RunAllTests c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:5285
    #16 0x7ff7d2c3e72d in testing::UnitTest::Run c:\Users\kkinnunen\angle\third_party\googletest\src\googletest\src\gtest.cc:4873
    #17 0x7ff7d2bf10a2 in main c:\Users\kkinnunen\angle\src\tests\angle_end2end_tests_main.cpp:15
    #18 0x7ff7d2d27897 in __scrt_common_main_seh f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283
    #19 0x7ff801ec7973 in BaseThreadInitThunk+0x13 (C:\WINDOWS\System32\KERNEL32.DLL+0x180017973)
    #20 0x7ff804cea270 in RtlUserThreadStart+0x20 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x18006a270)

Bug: angleproject:2865
Change-Id: I6c8fc203d075014ba8ce31c728982eed73812d04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1640212
Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-06-18 12:32:05 +00:00
angle-autoroll 2d223552e3 Roll ./third_party/glslang/src def9662348b0..11805e41d992 (5 commits)
def9662348..11805e41d9


Created with:
  gclient setdep -r ./third_party/glslang/src@11805e41d992

The AutoRoll server is located here: https://autoroll.skia.org/r/glslang-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jonahr@google.com

Change-Id: Idf29d79ea4e9f65e239604225af391de7640f313
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1662959
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-18 10:05:45 +00:00
Shahbaz Youssefi b1c8dbf3fa Vulkan: Correct synchronization for buffer readback
When mapping buffer memory, a flush is performed if the buffer has
pending operations followed by a finishToSerial to make sure the buffer
is no longer in use by the GPU.

This also implements GLES 3.0 buffer mapping flags:

GL_MAP_INVALIDATE_RANGE_BIT: No-op. Vulkan's vkMapMemory doesn't have
such a feature.

GL_MAP_INVALIDATE_BUFFER_BIT: Same

GL_MAP_FLUSH_EXPLICIT_BIT: Vulkan automatically flushes host memory
writes on vkQueueSubmit, so this is no-op as well.

GL_MAP_UNSYNCHRONIZED_BIT: The flush+finishToSerial call is skipped in
this case.

Bug: angleproject:3213
Change-Id: I6bdb460dffbb57170649f4c9678afbfae331926c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661252
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
2019-06-18 04:26:18 +00:00
Clemen Deng c211c2f5b5 Make proc table autogen use gl.xml data
Instead having the proc table be generated from proc_table_data.json
which needed to be manually updated with changes, the proc table is now
generated from data in gl.xml and egl.xml

Bug: angleproject:3533
Change-Id: I773ea7615cc4ec1c9901def629b089d8d17328eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-17 23:04:37 +00:00
James Dong 3f8975e121 Debug: suppress INFO log level in tests
Disables INFO level log messages in tests, including GL errors.

Bug: angleproject:3525
Change-Id: Ib16871b9faaff54964dd2770e1791372b1b79361
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1656293
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: James Dong <dongja@google.com>
2019-06-17 21:31:21 +00:00
Jamie Madill 875509e93a Vulkan: Minor cleanup to ContextVk::setupIndexedDraw.
This removes VertexArrayVk::updateIndexTranslation. Turns out this
helper function wasn't that helpful.

Bug: angleproject:3539
Change-Id: Ia4573219073261767e9d215ed4227233c23cbfaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660639
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-17 20:42:21 +00:00
Jonah Ryan-Davis beb0eb2d8c Clean up workarounds/features to single location.
Rename all workarounds structs to features, and move the lists to a
shared location in include/platform (to help with documentation,
see:
https://cs.chromium.org/chromium/src/ui/gl/gl_switches.cc?sq=package:chromium&g=0&l=69)

Bug: angleproject:1621
Change-Id: I4069f08131db5e886047a007efb5d7764dfee5f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660952
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-17 19:44:51 +00:00
Tobin Ehlis d7013c033c Merge ESSL pre-processsor token errors
In both the ESSL 1.00 & 3.00 specifications having an extension directive
after a pre-processor token is an error. Merging those two enum cases to
be a single case. WebGL is handled as a separate warning case for any
shader version before 3.00.

Also this change now correctly marks 1.00 shaders that break this rule
to be invalid so the ExtensionAfterNonPreProcessorTokenESSL1 test no
longer expects handleExtension() to be called.

BUG=chromium:971660

Change-Id: I37b10cc0fb3a0efd6200a478171e005a96478255
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661395
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
2019-06-17 19:12:21 +00:00
Shahbaz Youssefi e962b6a641 Vulkan: Enable previously failing clear tests
These tests crashed in FramebufferVk::clearWithAttachment, which no
longer exists.

Bug: angleproject:3081
Change-Id: I6b01c311c4caed21a920e5d5db1195c2dbfb905a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661554
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-17 18:52:40 +00:00
James Dong 08b5629336 Vulkan: add LINE_LOOP with primitive restart
Adds support for GL_LINE_LOOP with primitive restart.

Bug: angleproject:3215
Change-Id: Ief1bdf15ef9b108dba025eaf4ce580bba54af623
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1649351
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-17 18:46:00 +00:00
Jamie Madill 2c49d0b093 Suppress Bindings perf test on Win/Intel/GL.
BindingsBenchmark.Run/gl_100_objects_allocated_every_iteration

This test was timing out on the bots. Conservatively skip the benchmark
on Intel/GL/Windows.

Bug: chromium:974083
Change-Id: I4a254bff8b43e5a47b5905ee6b9bc1a659129684
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660951
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
2019-06-17 14:30:54 +00:00
Jamie Madill e1849ee1fb Remove obsolete WinRT files.
These were no longer used in the build.

Bug: angleproject:3162
Change-Id: I715bb3e6f14ed8c97523dec5b0b58bf9a89be0f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660716
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-17 13:22:05 +00:00
angle-autoroll 67d8b6f63c Roll ./third_party/spirv-tools/src 42830e5a68c3..59983a601091 (2 commits)
42830e5a68..59983a6010


Created with:
  gclient setdep -r ./third_party/spirv-tools/src@59983a601091

The AutoRoll server is located here: https://autoroll.skia.org/r/spirv-tools-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jmadill@google.com

Change-Id: Iaa7e68def85004ca1ec5275d048d26495825faeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661577
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-17 08:16:14 +00:00
angle-autoroll 5262bc70d4 Roll ./third_party/glslang/src 96ee92f09b7c..def9662348b0 (2 commits)
96ee92f09b..def9662348


Created with:
  gclient setdep -r ./third_party/glslang/src@def9662348b0

The AutoRoll server is located here: https://autoroll.skia.org/r/glslang-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jmadill@google.com

Change-Id: Ibe9c223bc7043607929ed1164b56ecdb9b0ec2d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1661576
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-17 08:14:24 +00:00
Clemen Deng 95ac7b7cee Autogen gles2+ declarations
Added autogeneration of method declarations for GLES2+ and extensions

Bug: angleproject:3526
Change-Id: I9c7263452146098512d9584deae8ea3f15f62c46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660949
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-14 22:02:38 +00:00
Shahbaz Youssefi bf82648154 Update glslang_validator binary for Windows.
This binary was updated using update_glslang_binary.py.
Please see instructions in tools/glslang/README.md.

Bug: angleproject:3432
Change-Id: Iefed7d2ab1a0a7f7118b83037329fe608c85ba1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1658848
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-14 16:13:16 +00:00
Shahbaz Youssefi a7271d35e5 Update glslang_validator binary for Linux.
This binary was updated using update_glslang_binary.py.
Please see instructions in tools/glslang/README.md.

Bug: angleproject:3432
Change-Id: Idc02086cf0e1985efd7bf194adf311c85b21e33e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657712
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-14 16:11:06 +00:00
Jamie Madill 8118265a34 Add more DrawCallPerf offscreen configs.
I thought these might have different performance characteristics when
compared to the main configs. It's possible they would also need to
forego using SwapBuffers to get different profiles. Right now perf is
pretty similar to with the default FBO.

Bug: angleproject:3117
Change-Id: Ic03b4ebd8c606af5121854565525e37e66f91435
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650785
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-06-14 15:46:33 +00:00
Jamie Madill 12f38c49d0 Vulkan: Use dynamic buffer for driver uniform updates.
This should reduce the number of descriptor sets we need to allocate.
We only allocate a new descriptor set when the underlying buffer is
reallocated. We pass in the buffer offset via the dynamic offsets
parameter.

Bug: angleproject:3504
Change-Id: I40d031cd7295a8d002caff4f331f4a311f07505c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646757
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
2019-06-14 15:03:12 +00:00
angle-autoroll 9520a2464c Roll ./third_party/glslang/src 9866ad9195ce..96ee92f09b7c (1 commits)
9866ad9195..96ee92f09b


Created with:
  gclient setdep -r ./third_party/glslang/src@96ee92f09b7c

The AutoRoll server is located here: https://autoroll.skia.org/r/glslang-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jmadill@google.com

Change-Id: I6d4817a07bb789d4973baf13b60c80bff4c18a0b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660056
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-14 10:17:01 +00:00
Yuly Novikov 853ebacf99 Suppress Mac 10.13.6 Intel OpenGL dEQP failures
Bug: angleproject:3531
Change-Id: I246144beb9c12b2df74612831262c7d263698db4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1658718
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
2019-06-14 00:04:28 +00:00
James Dong 2806a898ac Vulkan: implement primitive restart
Implements ES 3.0 feature GL_PRIMITIVE_RESTART_FIXED_INDEX,
which allows the application to use a fixed "restart" index
to restart the primitive during a single draw call.

This change does't handle GL_LINE_LOOP primitives,
which requires a bit of special handling.

Bug: angleproject:3215
Change-Id: I2388852683fd17328a6a76c48d70a24d67ce8b67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650301
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
2019-06-13 22:19:28 +00:00
Shahbaz Youssefi 4316e0644e Vulkan: Output render pass loadOp in graph dump
Bug: angleproject:3205
Change-Id: I7ad99bd2f8ddeb899c5fa86fd39296e5fc96d2c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657708
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-13 21:33:38 +00:00
Jamie Madill 88596beab3 Vulkan: Implement a texture descriptor cache.
We noticed a significant hotspot in vkAllocateDesctiptorSets. The app
was repeatedly cycling through a few combinations of active textures.
For each state change in ANGLE we were allocating a new desctiptor set.
This in turn would trigger internal driver memory allocation and cause
jank. Using a cache avoids allocations entirely since the application
is rotating through a stable set of textures.

The descriptor cache is stored in each program. It is indexed by a set
of 32-bit serials. Each texture generates a unique serial for every
combination of VkImage and VkSampler that the texture owns. The texture
descriptor is refreshed every time a texture changes or is rebound.

The descriptor cache is accessed via an unoredered map with the texture
serial sets as the hash key. We also store the maximum active texture
index in the cache key so we don't need to hash and memcmp on all 64
active textures.

This will currently fail if more than MAX_UINT serials are generated.
But that number is high enough that it shouldn't be possible to hit
in practice in a practical amount of time.

Requires shifting the texture sync to ContextVk so we can get the new
serial after the textures are updated. And to make sure to update the
image layouts even if the descriptors are not dirty.

Improves performance of the T-Rex demo. Also improves the score of the
texture state change microbenchmark by about 40%.

Bug: angleproject:3117
Change-Id: Ieb9bec1e8c1a7619814afab767a1980b959a8241
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642226
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-13 19:58:45 +00:00
shrekshao 954283317e Enable floatBlend for D3D9
Although according to
https://docs.microsoft.com/en-us/windows/desktop/direct3ddxgi/format-support-for-direct3d-feature-level-9-1-hardware
D3D9 doesn't have full blending capability for RGBA32F. But turns out it could provide
correct blending result in reality. As a result of some regression reports by client app, we
decided to turn floatBlend on for D3D9.

I tried to make a native D3D9 program to detect float blending capability.
But turns out it needs quite some effort on Win10 for a D3D newbie.
Considering the fact that D3D9 backend is not fully passing conformance test anyway.
I don't think it worth the effort. Seems to be okay to just turn it on.

Bug: chromium:970532
Change-Id: I66bec120be6eaaa62a5472b8521a97b4d23e924a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652731
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
2019-06-13 19:44:45 +00:00
James Dong 0d3cf7085c Vulkan: fix array size for internal shaders
Previously array sizes were calculated as the OR of all flag and enum
masks, equal to 2^(number of bits used for flags and enums) - 1, which
could be less than the actual needed array size.

This fix moves array size calculation to the autogen script and changes
the size to one more than the maximum potential value.

Bug: angleproject:3524
Change-Id: Ia4eb2a83fc7deea84e18958efcda8b57632035f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655954
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-13 18:52:54 +00:00
Jamie Madill 05ba83a00c Refactor DrawCallPerfParams.
Makes it a bit easier to work with. In prep for adding offscreen
configs.

Bug: angleproject:3117
Change-Id: Ie2497574b2687592b7b3df2f7b933a19e83b6d16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650784
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
2019-06-13 18:11:54 +00:00
Michael Spang b08d53d3c1 Reland "Vulkan: Build validation layers with asserts only"
This reverts commit d187d45ede.

Reason for revert: The correct thing to revert was https://chromium-review.googlesource.com/c/chromium/src/+/1657512

Original change's description:
> Revert "Vulkan: Build validation layers with asserts only"
> 
> This reverts commit 85fef1bc62.
> 
> Reason for revert: This actually seems to break the fucshia_x64 bot:
> 
> Exception: Some files were excluded with --exclude-file, but not found in the deps list: lib/libVkLayer_parameter_validation.so, lib/libVkLayer_core_validation.so
> 
> See https://analysis.chromium.org/waterfall/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyRAsSDVdmU3VzcGVjdGVkQ0wiMWNocm9taXVtLzk0ODYyNWNjNDE2NmE3NjRkYWM2NTRlNjlmZDA3MGFjMDE3MzNkNTMM
> 
> Original change's description:
> > Vulkan: Build validation layers with asserts only
> > 
> > Adding ANGLE to the build includes the validation layers, which are only
> > for development. We don't want any development or debugging code to be
> > included by default in release builds, so tie building the validation
> > layers to enablement of asserts.
> > 
> > Bug: angleproject:2475
> > Test: gn gen out/fuchsia_rel --args='target_os="fuchsia" is_debug=false use_goma=true'
> >   gn desc out/fuchsia_rel //fuchsia/engine:web_engine runtime_deps
> > 
> > Change-Id: I6d195c680255dcbc81e95f8e6f80e1e8ace169a2
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1656306
> > Reviewed-by: Jamie Madill <jmadill@chromium.org>
> > Commit-Queue: Michael Spang <spang@chromium.org>
> 
> TBR=spang@chromium.org,geofflang@chromium.org,jmadill@chromium.org
> 
> Change-Id: Ia74efcce2b3dda02dc0c0d292bdeb5ea7c5c3530
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: angleproject:2475
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657711
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>

TBR=spang@chromium.org,geofflang@chromium.org,jmadill@chromium.org

Change-Id: Iab669210c23823b403e3fff7f5199a7aadd032bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2475
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1658411
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
2019-06-13 16:01:29 +00:00
Jonah Ryan-Davis 78a51911da Clean up and expose frontend features to egl.
gl::Workarounds was used to hold frontend features. Change ownership of
this struct from Context to Display, so it can be exposed to egl. Also
rename to features and clean up for consistency.

Bug: angleproject:1621
Change-Id: I82e98e53873abb7a402c93e60f8a662a7263e0d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655772
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2019-06-13 15:24:17 +00:00
angle-autoroll 94eb189b64 Roll ./third_party/spirv-tools/src 9c0830133b07..42830e5a68c3 (2 commits)
9c0830133b..42830e5a68


Also rolling transitive DEPS:
  ./third_party/spirv-headers/src de99d4d834ae..8b911bd2ba37

Created with:
  gclient setdep -r ./third_party/spirv-tools/src@42830e5a68c3

The AutoRoll server is located here: https://autoroll.skia.org/r/spirv-tools-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jmadill@google.com

Change-Id: I2d968186e25d6b28b3c4105b2e50799e585eb85a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657458
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-13 14:53:37 +00:00
Jamie Madill 444aa0fe64 Vulkan: Prefer immediate present mode for benchmarking.
This should give the highest possible scores. Note that immediate is
not always available.

Bug: angleproject:3163
Change-Id: Ifedabd39819625b57feda71ed83a7bee8fa0a42b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638904
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-13 13:28:47 +00:00
Jamie Madill d187d45ede Revert "Vulkan: Build validation layers with asserts only"
This reverts commit 85fef1bc62.

Reason for revert: This actually seems to break the fucshia_x64 bot:

Exception: Some files were excluded with --exclude-file, but not found in the deps list: lib/libVkLayer_parameter_validation.so, lib/libVkLayer_core_validation.so

See https://analysis.chromium.org/waterfall/culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyRAsSDVdmU3VzcGVjdGVkQ0wiMWNocm9taXVtLzk0ODYyNWNjNDE2NmE3NjRkYWM2NTRlNjlmZDA3MGFjMDE3MzNkNTMM

Original change's description:
> Vulkan: Build validation layers with asserts only
> 
> Adding ANGLE to the build includes the validation layers, which are only
> for development. We don't want any development or debugging code to be
> included by default in release builds, so tie building the validation
> layers to enablement of asserts.
> 
> Bug: angleproject:2475
> Test: gn gen out/fuchsia_rel --args='target_os="fuchsia" is_debug=false use_goma=true'
>   gn desc out/fuchsia_rel //fuchsia/engine:web_engine runtime_deps
> 
> Change-Id: I6d195c680255dcbc81e95f8e6f80e1e8ace169a2
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1656306
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Michael Spang <spang@chromium.org>

TBR=spang@chromium.org,geofflang@chromium.org,jmadill@chromium.org

Change-Id: Ia74efcce2b3dda02dc0c0d292bdeb5ea7c5c3530
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2475
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657711
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-13 11:56:29 +00:00
angle-autoroll 3a42286a70 Roll ./third_party/spirv-headers/src 9cf7c3a7d2d2..de99d4d834ae (1 commits)
9cf7c3a7d2..de99d4d834


Created with:
  gclient setdep -r ./third_party/spirv-headers/src@de99d4d834ae

The AutoRoll server is located here: https://autoroll.skia.org/r/spirv-headers-angle-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


TBR=jmadill@google.com

Change-Id: I9c323b572ede8944ba6429dcc724916f68200558
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1657731
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
2019-06-13 09:49:57 +00:00
Qin Jiajia 3f2b4e7f6f Fix the crash in angle_deqp_gles31_tests
This crash only happened on a compute test which following a render test.
This root case was that after the render test, mVertexArray11 became an
invalid pointer. However, compute test still went to the common path to
use mVertexArray11. mVertexArray11 is never updated since compute
shader doesn't need to triger DIRTY_BIT_VERTEX_ARRAY_BINDING.

This patch adds checking to avoid compute test to use mVertexArray11.
Besides, more ASSERT checking are added to convenient debugging.

Bug: angleproject:3518, angleproject:1663, angleproject:2619
Change-Id: I446214110d762fc259899cef7635f369fa1f59a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652866
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2019-06-13 04:10:01 +00:00
Michael Spang 85fef1bc62 Vulkan: Build validation layers with asserts only
Adding ANGLE to the build includes the validation layers, which are only
for development. We don't want any development or debugging code to be
included by default in release builds, so tie building the validation
layers to enablement of asserts.

Bug: angleproject:2475
Test: gn gen out/fuchsia_rel --args='target_os="fuchsia" is_debug=false use_goma=true'
  gn desc out/fuchsia_rel //fuchsia/engine:web_engine runtime_deps

Change-Id: I6d195c680255dcbc81e95f8e6f80e1e8ace169a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1656306
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
2019-06-13 01:04:03 +00:00
Clemen Deng ebddd1a288 implement core egl image entry points
Bug: angleproject:2467
Change-Id: Ica943a3972333e90a516aa6960f333cc9c378be2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1653714
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-12 23:49:11 +00:00
Jamie Madill 169ef353ce Vulkan: Fix build with custom secondaries disabled.
We should also add a compile-only target that verifies the build works
as expected.

Bug: angleproject:3117
Change-Id: Ib55969cdd0e670c123cdbe98bd0decf2204e7267
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1650789
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
2019-06-12 22:31:41 +00:00
Jamie Madill 9728643bf6 Roll SPIR-V headers and Tools.
A dependency was breaking the auto-roller.

Bug: angleproject:3527
Change-Id: Iec3980a1d51c000b7a902e1d61d4d84e5f885000
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655773
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-12 21:51:41 +00:00
James Dong 13ac9422cf Vulkan: add support for shadow samplers.
Adds support for ES 3.0 shadow samplers.

Test: ./angle_deqp_gles3_no_gtest --deqp-egl-display-type=angle-vulkan -n 'dEQP-GLES3.functional.texture.shadow.2d.*'

Bug: angleproject:3211
Change-Id: Ic82ecfe19290fb952fcb0ba423691b5bac87c4a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652021
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-12 20:13:49 +00:00
Jonah Ryan-Davis fce1e2d1e2 Extend eglGetPlatformDisplay to allow feature overrides.
Add EGL_FEATURE_OVERRIDES_ENABLED_ANGLE and
EGL_FEATURE_OVERRIDES_DISABLED_ANGLE to submit lists of strings naming
the features that should be overridden (either enabled or disabled) on
display creation.

Bug: angleproject:1621
Change-Id: I4bb75c5dbab0e3b701a72069c38f8c60ecfffad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646595
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-12 14:01:50 +00:00
Clemen Deng 2589cdcc88 GLSLTest stack overflow bug fix
Bug: angleproject:3514
Change-Id: Id02bdb230dce0435b0b33db101d196596d6e8c93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652435
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2019-06-11 20:38:02 +00:00
Clemen Deng a029ce47a9 removed msvs_projects from devsetup
Bug: angleproject:3516
Change-Id: I127f702112d68e24bdc9810e5a7ee117190efad5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1652210
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-11 17:51:56 +00:00
Jamie Madill 9aa865a6f9 Vulkan: Add missing command pool reset.
We were still calling destroy in checkCompletedCommands. We can
instead call reset.

May not significantly impact performance.

Bug: angleproject:3489
Change-Id: I61a2cb154faac56dc78a49678dd822d81ce16ad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1647029
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2019-06-11 16:11:43 +00:00