Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 03bc3db8 | 2019-06-05 13:48:43 | Vulkan: Minor cleanup to UtilsVk. Renames "ContextVk *context" to "ContextVk *contextVk" for consistency. Also adds an "allocateDescriptorSet" helper function. Bug: angleproject:3117 Change-Id: Id03e30432d8e5e35b682350a8e98fd2e62cdf89a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1644776 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 5643afc0 | 2019-06-04 15:37:58 | Vulkan: add GLSL placeholder for transform feedback output Bug: angleproject:3205 Change-Id: Id3941b6953e03e7b2183acc57b2c6db4a6439352 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643424 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| ac8bafc0 | 2019-06-03 14:59:39 | Remove unused bindGenericBuffer from TransformFeedback* Bug: angleproject:3205 Change-Id: I6dc29b48155cd3c0ef98248076cf02e70c9310d9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643423 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 3c219171 | 2019-05-31 16:23:23 | Add ARM vendor id This fixes a crash when run with asserts on ARM GPU: [2089630:1566159375:0531/202059.262200:ERROR:angle_platform_impl.cc(47)] GetVendorString(133): ! Assert failed in GetVendorString (../../third_party/angle/src/libANGLE/renderer/driver_utils.cpp:133): vendorId == 0xba5eba11 Bug: angleproject:3492 Change-Id: I786edc459b1567a3eee0034a0d8ae7050ac31952 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642331 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 44063c80 | 2019-06-04 15:20:30 | Vulkan: Store array buffer conversions in BufferVk. The intent of this CL is to call convertVertexBuffer*PU only when we have new data to convert. If the app unbinds and rebinds a vertex buffer without changing the data we can now retrieve the cached vertex buffer info from the BufferVk class. Previously we would always reconvert the data on a rebind. This was slowing down applications and benchmarks. To achieve this we add a conversion cache to BufferVk. Each cache entry stores a key based on the vertex info. Also we store a ring buffer for each cache entry and a flag to indicate if the entry is dirty. The cache is dirtied on a bufffer data update or a map call. Improves performance in the T-Rex benchmark. Bug: angleproject:3495 Change-Id: Ia999c9187510748ba95bc98362eb332e1990d270 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638903 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> | ||
| e431aaa1 | 2019-06-04 11:36:43 | Rename EGL_ANGLE_workaround_control to EGL_ANGLE_feature_control. For consistency, call these ANGLE "features", a subset of which may be workarounds. Also, whether the feature is enabled/disabled should be publically visible as "status". Bug: angleproject:1621 Change-Id: I0de90a932fbfe1fc9b59138153d616d29fa7268b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643410 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> | ||
| 071d2a44 | 2019-06-03 11:49:13 | Vulkan: Process dirty framebuffers first The currently bound framebuffer affects some dirty bits. This means that processing those dirty bits temporarily use data from a framebuffer that's about to be changed. At best, that creates unnecessary dirty bits in the Vulkan pipeline description. Bug: angleproject:3204 Change-Id: Ie001d6c8fcc61af2e78cf2cb58a1691d8b735ff3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639750 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| de70a713 | 2019-06-03 17:05:16 | Vulkan: Rename Resolve* shaders to BlitResolve In preparation for adding blit functionality. Bug: angleproject:3200 Change-Id: I77b6b6cbe90b26ee23c25edebaa2b130f3c2987a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1641626 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 2dd40a44 | 2019-05-30 16:40:13 | Add eglQueryDisplayAttribANGLE to query workarounds count. Add eglQueryDisplayAttribANGLE based on eglQueryDisplayAttribEXT to add behavior for quering the count of all workarounds available. Used externally to build a list of workarounds. Bug: angleproject:1621 Change-Id: I793acedc76111fd018600169d58bf5d8cf4a63ee Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1637817 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 20d380fa | 2019-06-03 15:21:47 | Print stack backtrace on critical failure. We reuse code from Skia to walk the stack on Posix platforms. See: https://github.com/google/skia/blob/master/tools/CrashHandler.cpp On Windows we use a BSD-licensed tool called StackWalker. See: https://github.com/JochenKalmbach/StackWalker This allows us to get high quality stack traces on Win/Linux/Mac. Bug: angleproject:3162 Change-Id: I9c50ede2c6a41ed0ee85a0507372df42a487bcef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1632950 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 5993d899 | 2019-06-03 13:05:38 | Vulkan: Use storage buffers for index conversion shader. This allows us to use the shader regardless of driver support for texel buffer views. It also allows us to convert indices on the GPU unconditionally. We add a new internal compute shader that converts pairs of indices into a packed single uint value that stores two 16-bit values. In the future we could add support for converting primitive restart indices. Should speed up benchmarks on systems which didn't have R8_UINT support for compute shader buffers. Bug: angleproject:3490 Change-Id: I56ca0cabb094e97f36ab4edc779e6c8ad2d2601e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639058 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> | ||
| 4a757416 | 2019-06-03 14:04:01 | D3D: Fix heap corruption when copying texture arrays Do not use depth dimension when copying normal 2D textures of a 2d texture array. It copies past the end of the buffer obtained via ID3D11DeviceContext::Map(). Fixes a case which can be reproed with the payload disabled: gn args out\debug --args="is_debug=true" ninja -C out\debug angle_end2end_tests out\debug\angle_end2end_tests ^ --gtest_filter=Texture2DArrayCopy.SnormFormats* --gtest_catch_exceptions=0 ^ --gtest_repeat=-1 Bug: angleproject:2865 Change-Id: Id9bc5489fa41749d1b1d2e87992166b1a0af76fc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1641247 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 12a52423 | 2019-06-03 10:39:54 | Sharpen GL test skip condition for NVIDIA The skip condition for GLSLTest_ES3.VaryingStructNotInitializedInVertexShader is modified to not skip NVIDIA on windows. Bug: angleproject:3413 Change-Id: I126d9fa9e36c3b6c07abfd24bdaf6feb76ac4f6f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1640208 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 0730e630 | 2019-05-31 14:25:37 | Fix needStructMapping In previous logic, we didn't check the structure field member type. So when passing the non-struct member of a structure to a function, it would think that struct mapping was needed. In this patch, we add more checking so that struct mapping only happens when there are structure copy or passing a structure to a function. BUG=angleproject:2967 Change-Id: Ic98e884c8f8540e180cdf40a0e036ffef18c1689 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638227 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 98f21671 | 2019-05-31 15:34:39 | Vulkan: Refactor index buffer convert functions. This is a prepratory refactor for converting index buffers on the GPU using a more generic compute shader. No functional change. Bug: angleproject:3490 Change-Id: Iadf4b1429314db6850320aee33c4113f38577378 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639057 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| c104b2d2 | 2019-05-31 16:25:02 | Re-enable WGL perf test configs. These were accidentally dropped in https://crrev.com/c/1574674 . Re-enable so we can gather better perf stats on Windows machines. Bug: angleproject:3494 Change-Id: I92e9ba7e7783fddde1a47c0ffe056da7750d2c3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1639063 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| f7106d16 | 2019-05-30 17:34:42 | Revert "Revert "Vulkan: Use atomics in SerialFactory."" This reverts commit 35fa85ba2fafa583bd706b64d181f3f95094325d. Reason for revert: This commit was an innocent bystander. The bugs are intermittent, requiring multiple runs to verify. Bug: angleproject:3492 Change-Id: Idc9dcb1631cfca5fea342266c732732c6f2bd2d5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1636263 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| cc9bc655 | 2019-05-31 12:00:25 | Vulkan: Fix synchronization with current surface Since a6242e4d4 ("Vulkan: Support submitting multiple semaphores"), semaphores are not generated because the function generating checks for non-empty command graph right after flushing. Bug: angleproject:3492 Change-Id: I03db4a77fe24fdfdf39ba535b235451ae0275a0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638579 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org> | ||
| bc30e72c | 2019-05-30 13:30:33 | Vulkan: Recycle command pools with vkResetCommandPool. vkDestroyCommandPool has worse performance than reset. Instead of destroying and creating new command pools for every batch of work we can instead recycle unused command pools. This seems to improve performance on most systems. Bug: angleproject:3489 Change-Id: I7f8fe7f9385ca481e04f226a26426c3e92da19ff Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1636410 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> | ||
| 0a56f0e3 | 2019-05-14 17:07:27 | Vulkan: Update front face mode during syncState() When handling DIRTY_BIT_DRAW_FRAMEBUFFER_BINDING in syncState(), the call to update the front face was missing, so culling could be enabled for the wrong front faces. Bug: angleproject:3237 Test: Verify 3D apps render (more) correctly Test: New SimpleStateChangeTest end2end tests Change-Id: I1d94a977bea9e48d90b5346861e5565d2371cadd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1611753 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 35fa85ba | 2019-05-29 15:59:13 | Revert "Vulkan: Use atomics in SerialFactory." This reverts commit 1b0f79ee92b51122634fca6342876db196b85e3c. Reason for revert: Breaks a number of applications on Android Original change's description: > Vulkan: Use atomics in SerialFactory. > > This allows serials to be generated from multiple threads without locking for > very little/no cost. > > BUG=angleproject:2464 > > Change-Id: Id61d170e7a985c3100da0057156859ffcb083dad > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1516514 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> TBR=geofflang@chromium.org,syoussefi@chromium.org,jmadill@chromium.org Change-Id: I52011f294d68490998869fa898e929fd41eaa51c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1636272 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com> | ||
| 6d9b8908 | 2019-05-29 13:18:31 | Vulkan: Merge Color and Depth/Stencil resolve shaders There is a good deal of overlap in the way these shaders calculate offsets, flip etc. This change merges the two shaders together, as well as the UtilsVk functions that invoke them. This is in preparation for adding blit functionality to the same shader. Bug: angleproject:3200 Change-Id: Id7c2cf12e05db1802ae497766fb361fe4bef6479 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635750 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 172e5d37 | 2019-05-29 10:00:50 | Vulkan: Implement universal stencil resolve This is done by resolving stencil into a temporary buffer and copying that into the stencil aspect of the resolved image. Bug: angleproject:3200 Change-Id: I29111b44db2cb093acc4544034fbe61178f055a1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635709 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> | ||
| ab6a59b2 | 2019-05-21 21:26:26 | Vulkan: Submit semaphores from glWaitSemaphoreEXT & glSignalSemaphoreEXT Implement submission of client semaphores passed to glWaitSemaphoreEXT & glSignalSemaphoreEXT. This also relaxes the expectation that we will not flush() if there are no commands. Signaling semaphores in particular requires queue submission irrespective of whether there are any command buffers to submit. If there are neither commands nor semaphores, we can still skip queue submission. WebGL runs in Chrome with ANGLE & Vulkan interop as of this patch, albeit with incorrect synchronization due to texture barriers not being implemented yet. Quite a few flags are needed to try this: GN args: angle_vulkan_conformant_configs_only=true chrome \ --enable-features=UseSkiaRenderer,UiGpuRasterization \ --enable-gpu-rasterization \ --enable-oop-rasterization \ --enable-vulkan \ --use-gl=angle \ --use-angle=vulkan Bug: angleproject:3289 Change-Id: I3d49c230a2fbf0cd2a2b943b05ded0e4604cc313 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623815 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| d3e7a41b | 2019-05-29 14:40:52 | Vulkan: fix buffer copy barriers Bug: angleproject:3362 Change-Id: Ibf6520fb73bb1a9b76714cddd786569789c70430 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635752 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| f52f2637 | 2019-05-23 13:52:52 | Add EGL_ANGLE_workaround_control extension. This extension is used to query strings from an array based on index, which will be used to query all the information about workarounds in ANGLE. Bug: angleproject:1621 Change-Id: I27157f278f7f17c92c8b4fd7753e2a5ecd0528f6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1627723 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 06055b5e | 2019-05-29 14:31:42 | Update Windows AMD suppression. Should have been specified for OpenGL instead of D3D11. Bug: chromium:967796 Change-Id: I099ab51709f69e7abb7fe698e6010241bdccb4bf Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635751 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| a6242e4d | 2019-05-22 15:15:09 | Vulkan: Support submitting multiple semaphores With GL_EXT_semaphore, the client can create and submit semaphores to synchronize with an external vulkan instance. We need to be able to submit semaphores from both the current surface as well as the client. In order to support glWaitSemaphoreEXT, make ContextVk hold a vector of semaphores that will be submitted with the next batch. In order to support glSignalSemaphoreEXT, make ContextVk::flush() build a vector of semaphores to submit, rather than just one. Submissions that result from a client signal operation will need to signal both the client semaphore as well as a semaphore from the surface's semaphore chain. Bug: angleproject:3289 Change-Id: I52b07c4c2a7bf52300d3107f028aa64585c6c4db Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623814 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 2008c8ff | 2019-05-21 20:38:59 | Vulkan: Reuse flushImpl() from finishImpl() Reuse flushing logic in finish() as there's an increasing amount of logic needed to submit work in order that would otherwise be duplicated. Bug: angleproject:3289 Change-Id: Ia489e285615ebaa48b01d8a202871bebf7de0ac2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623813 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org> | ||
| f2a1c384 | 2019-05-21 16:32:49 | Vulkan: Implement multisampled framebuffers Simultaneously implements ANGLE_framebuffer_multisample and ES3 multisampled framebuffers. Additionally, implements ES3 framebuffer blitting where multisampled framebuffers are involved. Bug: angleproject:3203 Bug: angleproject:3204 Bug: angleproject:3200 Change-Id: I5694a30f71168e807688a9568e3742b81d907918 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1622667 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| e0956a16 | 2019-05-06 10:34:27 | Vulkan: Rename getSubmitFence to getNextSubmitFence. Now that getLastSubmittedFence exists, the new name is more specific. BUG=angleproject:2464 Change-Id: I0bce1387b95b7b7b739e311d37e35e7d162d8f2d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595435 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 262e2824 | 2019-05-20 14:24:40 | Use D3D11 GetDimensions driver workaround for 3D textures Some NVIDIA D3D11 drivers are buggy and interprets the level passed to GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip. This affects all integer format textures, because the dimensions are used for sample position calculations with integer format textures, which leads to sampling outside texture when the base level is non-zero. Bug: angleproject:3441 Change-Id: Ic54328e3d712e28a40efb4e63b8fce0baeb4ef42 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1619785 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| ded5f903 | 2019-05-01 13:58:27 | Vulkan: Make the Vulkan renderer thread safe. Gate all access to the queue and caches with mutexes. Does not handle sharing of resources in share groups across threads yet. BUG=angleproject:2464 Change-Id: I297f8f1a535b99efca663cf72bac3d90df8b5d97 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1592253 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 1b0f79ee | 2019-02-28 11:08:21 | Vulkan: Use atomics in SerialFactory. This allows serials to be generated from multiple threads without locking for very little/no cost. BUG=angleproject:2464 Change-Id: Id61d170e7a985c3100da0057156859ffcb083dad Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1516514 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 29ac274f | 2019-05-28 15:53:00 | D3D11: Suppress failing Texture test on AMD. Bug: chromium:967796 Change-Id: I48280909db9c927c12d3c0d97f1ad451dffb849e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1632949 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| ee244c77 | 2019-05-06 10:30:18 | Vulkan: Move command graph and garbage to ContextVk. To support multithreading, contexts should manage their own command graphs and garbage. This allows safe access to vulkan resources such as command pools without thread synchronization. BUG=angleproject:2464 Change-Id: I930149bc9f0793028761ee05ab50b8c0a4dec98a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1516515 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 5a808b86 | 2019-05-27 13:22:32 | GL: Allow BlitGL to copy from external textures. BUG=967410 Change-Id: I503dda6f2493b56123a8bd369e2f1305971abb4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1364110 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 44462cd6 | 2019-05-27 17:12:21 | D3D: Use the ProgramD3D::GetExecutableTask context for loading program binaries ProgramD3D::GetExecutableTask is a d3d::Context type itself so that errors can be recorded in a thread-safe maner. Use the task context when loading program binaries in ProgramD3D. Fix up incorrect casts in RendererD3D::loadExecutable in both D3D9 and D3D11 backends to stop incorrectly assuming the context type. BUG=962439 Change-Id: I5b29372a7254f709e1bbb67ee322ef4109f73e48 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1630294 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| ce9be8c7 | 2019-05-24 09:35:06 | Vulkan: Have a cubemap as 2D-array view handy Previously, only texture copies used a shader that performed texelFetch(). To support cubemaps, a hack was used to temporarily create a 2D array view. With upcoming support for multisample resolve, more shaders will be using texelFetch() all requiring this workaround. This change instead makes sure that a separate view is created for cubemaps for the purpose of being used with these shaders. As a result, we have three logical views on textures and render targets: - Draw: a view that can be used as a color/depth/stencil attachment - Read: a view that can be used to sample from - Fetch: a view that can be used to fetch from The fetch view is generally the same as the read view, except for cube maps. Bug: angleproject:3200 Change-Id: I21547f728c16f0aa8f0fcae152c400b5cc1565da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1628585 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 46fe0e4b | 2019-05-22 13:13:50 | Cleanup Features headers. Cleanup redundant angle:: prefix in Features headers. Cleanup workaround descriptions. Bug: angleproject:1621 Change-Id: I4325d3603877efee9c6a035cd5b5bbbbc4f5c169 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1625609 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> | ||
| 69d04939 | 2019-05-20 14:04:13 | Use D3D11 GetDimensions driver workaround for 2D array textures Some NVIDIA D3D11 drivers are buggy and interprets the level passed to GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip. This affects all integer format textures, because the dimensions are used for sample position calculations with integer format textures, which leads to sampling outside texture when the base level is non-zero. Bug: angleproject:3441 Change-Id: Ic012cac94ce0a627221087ecb2ee6aa3665900d1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1617780 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 1b6aded6 | 2019-05-20 12:56:34 | Test D3D11 GetDimensions driver workaround for textureProjOffset Some NVIDIA D3D11 drivers are buggy and interprets the level passed to GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip. This affects all integer texture formats because the dimensions are used for sample position calculations on integer format textures, which leads to sampling outside the texture when the base level is non-zero. Bug: angleproject:3441 Change-Id: I9d2f8fa8e66caca704cbc46d4933d3f97aaf93ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1617779 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 3fe06eb3 | 2019-05-21 17:37:25 | D3D: Make sure Lod0 functions are never referenced in non-fragment shaders. The lod0 functions would not be declared but could still be referenced by vertex shaders. BUG=angleproject:3471 Change-Id: I635a8465ce68dc22a6f7387b30bf7e93b14dd67d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1622741 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> | ||
| 6722009e | 2019-05-20 11:12:53 | Vulkan: Handle dirty RTs with state messages. Prior to this CL we were handling dirty state change notifications by flushing the RT Images just prior to use or just after they were changed. This could lead to a few redundant checks in several places. It also meant we needed an owner pointer from the RT to the parent Image. This pointer would be null for Surfaces and Renderbuffers. This cleans up the image flushing logic to be handled by dirty bit notifications. When an app updates an attached Texture with TexSubImage or related calls it will send a notification to the Framebuffer. The Framebuffer then sets a dirty contents bit that is handled in the implementation. In Vulkan this means flushing the dirty bits. Requires adding a flag to the FramebufferImpl class to determine if we need to syncState before we checkStatus. Adding the option allows us to only call syncState for the GL back-end. Not calling syncState allows the robust resource init operation to happen *before* we syncState. Which in turn allows FramebuffeVk to initialize the VkImages in one go. Added new regression tests for Texture updates. This might not cover all cases. I found it was very hard to trigger some of the resource update staging in TextureVk. Bug: angleproject:3427 Change-Id: Idfa177436ba7fcb9d398f2b67922e085f778f82a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601552 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 3f3a05d4 | 2019-05-27 09:08:46 | Fix KHR dEQP test data dir. Had an extra "gl_cts" appended. Bug: angleproject:3353 Change-Id: I962cd0196b898e5fdd631790d88bfb1d478d16b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1630292 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 40757b28 | 2019-05-22 15:23:22 | Use ConvertToGLBoolean instead of ternary operator in Context Clean up Context by replacing foo ? GL_TRUE : GL_FALSE by ConvertToGLBoolean(foo); Change-Id: I6a6ee9c23bb30d8b4ef43371c04a94578758145e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1626309 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org> | ||
| d68aff6c | 2019-05-22 13:01:50 | Fix the crash when the array size is not big enough. Previously, we used IMPLEMENTATION_MAX_DRAW_BUFFERS(8) as the array size of 'previouslyBound' which is used to record whether more than two different blocks are bound to a single buffer. However, when the underlying driver is d3d11_1, the max allowed shader storage blocks will be 64 which is larger than 8. An assert error will be met in push_back like below: Test case 'dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.45'.. ERR: push_back(250): ! Assert failed in push_back (../../src\common/FixedVector.h:250): mSize < N So we use 64 as the upper limit of max shader storage blocks. Bug: angleproject:3447 Change-Id: Ie76bfd15486c1ed02afca4283d6e70bdb4298cb6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623794 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 431ef2fd | 2019-05-21 17:13:08 | Add support for EXT_blend_minmax This is to add additional modes (MIN, MAX) to "BlendEquation". - add cases for "GL_MIN" and "GL_MAX" into "PackGLBlendOp()" in vk_cache_utils.cpp - add enabling "blendMinMax" codes into vk_caps_utils.cpp And, AUTHORS and CONTRIBUTORS are updated. BUG=angleproject:2897 Tests: dEQP-GLES3.functional.fragment_ops.blend.*min* dEQP-GLES3.functional.fragment_ops.blend.*max* Change-Id: I13a1d6d28a104b18e21697f9f23d77e4eda2d1a6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1621582 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| e794ddc8 | 2019-05-10 11:05:10 | OpenGL: Remove all attachments before executing internal clear This patch fixes a bug in BlitGL::clearRenderbuffer() by removing all the attachments of mScratchFBO before attaching the real target of clear to keep mScratchFBO always being incomplete. Without this fix, the WebGL CTS tests mentioned in issue 2760 will fail on Intel OpenGL drivers when Chromium is using pass through command buffer because when a multisampled depth renderbuffer is attached to mScratchFBO, mScratchFBO will sometimes become incomplete because it may already have a non-multisampled color attachment. Bug: angleproject:2760 Test: angle_end2end_tests Change-Id: Id206fb4b338545ab46aba118e80d288158dcd8ec Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1612305 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| d2683459 | 2019-05-23 16:11:19 | Skip Texture2DIntegerTestES3.IntegerTextureNonZeroBaseLevel on Win AMD OpenGL Bug: angleproject:3478 Change-Id: I8f0ffeb0da31d08f4f4f45048d295c847cf095bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1626328 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> | ||
| 6bb193c8 | 2019-05-22 16:32:21 | Vulkan: Implement glImportSemaphoreFdEXT Allow importing file descriptors into semaphores on linux. This can be used to synchronize ANGLE's GL renderer with respect to vulkan composition in chromium. Bug: angleproject:3289 Change-Id: I04ba3bbb2e343baa000ff89c21c03ca36163a713 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623812 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| d9fa0744 | 2019-04-25 14:57:26 | Emit OVR_multiview2 on ESSL/GLSL outputs. Add ARB_shader_viewport_layer_array support to SH_SELECT_VIEW_IN_NV_GLSL_VERTEX_SHADER. Bug: angleproject:3404 Change-Id: Ia89517d0cc92400ce47c9118e8c1abf8285aec41 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1585452 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 344ecaa6 | 2019-05-21 11:17:55 | D3D: Return Incomplete when failing to load a program binary. When Stop is returned, the ProgramD3D::GetExecutableTask attempts to pop an error that has not been set. Returning Incomplete matches the other error cases in program binary loading. BUG=962439 Change-Id: I70895ddc706045620e3df219681982357b7b63e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1620914 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 8224a58b | 2019-05-20 12:39:29 | Normalize fragment color in Texture2DIntegerTestES3 The sampler returns colors with components in the range 0-255. Bug: chromium:963595 Change-Id: I7030ab9da6e0803e3aaf8aef4691ce7276636b10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1617778 Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 5093ba67 | 2019-05-14 17:36:36 | Implement resource management for GL_EXT_semaphore This implements glGenSemaphoresEXT, glDeleteSemaphoresEXT, and glIsSemaphoreEXT. It's not possible to do anything useful with them yet. Bug: angleproject:3289 Change-Id: I20ad90dbcd3fc573a4650c8531d6e1b8ccf7ca9b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623811 Commit-Queue: Michael Spang <spang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 215b2191 | 2019-05-21 21:35:31 | Add packed enum for GL_EXT_semaphore image layouts Add a new packed enum gl::ImageLayout which consists of the following enum values: GL_LAYOUT_GENERAL_EXT GL_LAYOUT_COLOR_ATTACHMENT_EXT GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT GL_LAYOUT_SHADER_READ_ONLY_EXT GL_LAYOUT_TRANSFER_SRC_EXT GL_LAYOUT_TRANSFER_DST_EXT GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT Bug: angleproject:3289 Change-Id: Idc1615717d54fb1193e2f27c84a24993f6007d7b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1623810 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org> | ||
| e4452440 | 2019-05-09 13:29:49 | Fix integer cube map sample HLSL calculation This patch fixes two issues in the HLSL generated to sample an integer cube map. The first issue was that an inappropriate major axis was selected when sampling from corners of the cube map. In particular, the added test case demonstrates a situation where a major axis of length 0 was selected, which lead to an infinite LOD being calculated. The fix was to adjust inequalities such that always exactly one of xMajor, yMajor and zMajor is true. The second issue was that the derivative functions ddx and ddy were being used on values that depended on the choice of major axis, which is not continuous at the corners of a cube map. This lead to a finite but incorrect LOD being calculated. The fix was to make sure major axis choice is not included when estimating the scaling factor. Bug: angleproject:3442 Change-Id: Ia3eb8c89f47d1bfdadc18aec989e8cbebc088ec0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601515 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| fb8e1b25 | 2019-05-17 13:18:40 | Vulkan: Fix multisampled clear UtilsVk::clearFramebuffer was not setting the sample count. Bug: angleproject:3204 Change-Id: Iab7d385ec58b12f21d888c5dfc9e94b7846ac40c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1616858 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 01f98cbf | 2019-05-21 12:21:36 | Skip failing MultisampleTest on Nexus 6P and NVIDIA Shield TV Bug: angleproject:3464, angleproject:3470 Change-Id: Ie864118ceebfc0d72aa95928a02ef0939be5b89a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1620992 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> | ||
| b86e73da | 2019-05-21 10:23:23 | Vulkan: Update glslang_validator binary for Linux The new binary has the ability to optimize SPIR-V code. Bug: angleproject:3432 Change-Id: I5953be6f207f153baaf2efe17380448aff374d60 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1620913 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| e8247a57 | 2019-04-25 18:54:24 | Add scripts/export_targets.py. $ export_targets.py <out_dir> <targets...> Flattens all library targets under <targets...> and checks that all includes in 'sources' are known to the build. Firefox can use this as the first half of our ANGLE vendoring process. Included additions to src/libGLESv2.gni were found with: $ export_targets.py out //:libEGL Eventually, it would be nice to have this as a presubmit check. Bug: angleproject:3403 Change-Id: I0f455e8c37c4b0a9e17e9f843843422b6a32f588 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1584652 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> | ||
| 08146a27 | 2019-05-17 10:40:44 | Remove non-source sources from binary targets No behavior changes. BUG=chromium:964411 Change-Id: I843757e65f110882c01514fe6bf4aed28e07dd21 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1617011 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 7a026133 | 2019-05-20 10:34:08 | Fix Android data dir for KHR dEQP tests. Also includes a fix for case list paths on developer machines. Also includes a test expectation update for GLES2. Bug: angleproject:3353 Change-Id: Idb01eb8d806067739253a6676a6d2d8ee1199929 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1616853 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 70958d15 | 2019-04-17 13:59:45 | Let attribute aliasing logic detect overflow Checking against the max attribute count is not needed as aliasing is implemented correctly below. If not enough locations are available, linking will fail. This works for backends that support aliasing (Vulkan, GLES), but not for D3D11, which asserts. To handle this, add a limitation that informs the frontend of aliased attribute support. Bug: angleproject:3252 Bug: chromium:964404 Change-Id: Ib9ae5d381bbb2e6bf496272fc3d9e88467c17290 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1572817 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| b16d69c3 | 2019-05-13 16:28:27 | Vulkan: Add support for surface multisampling A multisample image is created for the surface if multisampling is enabled. Prior to present, this multisample image is resolved into the swapchain image. FramebufferVk::readPixelsImpl similarly has got the ability to resolve the region of interest into a temporary image prior to readback. Tests are added to render a point, line and a triangle on a 4x multisampled surface. Bug: angleproject:3204 Change-Id: I34aca502fa1918b5cbf000ff11521c350372e051 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610188 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 6a4cad87 | 2019-05-01 13:04:00 | Vulkan: Tighten descriptor stage usage hints Per-stage uniform buffers are marked with the specific stage. Program uniform buffers and images are specified to be used in all graphics stages. Descriptors used in internal shaders are marked for use in either compute or fragment stages. Bug: angleproject:3220 Change-Id: Ifcac36a1224f0392ba5fba50660514e498256401 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595439 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> | ||
| 09eabed9 | 2019-04-03 19:20:21 | Allow attribute linking for ES2 * Pipe webGL compatibility down to allow attribute aliasing. * Reject aliasing if shader level is too high, or webGL is in use. Bug: angleproject:3252 Change-Id: I3378fe707e3795a4b8a424989afccff42bc84344 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1556538 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> | ||
| cafd7736 | 2019-05-17 09:33:41 | Fix KHR-GLES dEQP test paths. Our GN was using the incorrect path for the new test sets. This was showing up as an isolate_tests failure when running the new tests. Also fixes incorrect search paths for the case list directory when used in a Chromium checkout. And adds a few other missing data dependencies. Bug: angleproject:3353 Change-Id: I602db1e5debdad88b6eace76416fc2c10c059f8b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1616021 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 06de90c6 | 2019-05-16 12:46:54 | Vulkan: Re-enable a handful of suppressed ES3 tests Few features are already implemented but the suppressions were not removed. Bug: angleproject:2392 Bug: angleproject:2394 Bug: angleproject:3199 Bug: angleproject:3219 Bug: angleproject:3423 Change-Id: Iefd6c10f5ec774e174901114b35410c0d397085f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1614428 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 0febee5b | 2019-05-15 17:03:52 | Break debugger on assertion failure. This adds a few simple system utility functions. We can check if a debugger is attached and break into the debugger. Most of the code is adapted from Chromium's base/debug. Bug: angleproject:3162 Change-Id: I9cb39d42865a543fbf3201222dd8227318b32ad5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1615353 Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| aefbea29 | 2019-05-16 13:33:27 | Fix Clang warning in dEQP-KHR tests. Due to complex and slow process of upstreaming it's easier to disable this warning than to fix it upstream. Only happens in a Chromium build because Chromium uses a specialized standard library. Bug: angleproject:3353 Change-Id: I01607a00e469110c87458458d3b205fd59ea3db3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1614426 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| cfffc138 | 2019-05-16 11:35:01 | Add KHR-GLES dEQP tests. This reorganizes the dEQP build targets to allow for better reuse with the new KHR test set. It also adds a single new test target called "angle_deqp_khr_tests" that houses all the new test sets. The new test targets can be compiled now but cannot yet be executed. That new functionality will follow in a subsequent CL. Along with test expectations and integration. Uses a new template type in the build to conslidate GN customization. Adds the GLES 2.0 and 3.0 tests for now. We can follow up with additional work for the GLES 3.1+ tests. Also adds test expectations. Bug: angleproject:3353 Change-Id: Ib0673e97f679c8aa46e27dfa616845a2014a75fe Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1604070 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 04e389d1 | 2019-05-14 07:14:25 | Vulkan: make sure default uniforms are in std140 Bug: angleproject:3199 Change-Id: I29fdf33ea5af37a66c2cfd5b3355d7ff32105d63 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1614781 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 60cc751a | 2019-05-06 09:25:27 | Use D3D11 GetDimensions driver workaround for integer cube maps Some NVIDIA D3D11 drivers are buggy and interprets the level passed to GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip. This affects integer cube maps because the dimensions are used for sample position calculations, which leads to sampling outside the cube side textures when the base level is non-zero. Bug: angleproject:3441 Change-Id: I151f9336b9c6d8ec7012bf5010a2d45fb2951e73 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595688 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 311e8086 | 2019-05-15 13:25:56 | Do struct mapping under conditions Struct mapping consumes lots of time when the array lengh is very large. And it's done unconditionally. This CL does struct mapping only if it's a struct assignment or passing the struct to a function. In the next step, we can use a function to do struct mapping instead of struct array initialization. Bug: angleproject:2967 Change-Id: Ie5a74fa05dbc0255ad664d6265dbb880a624f01e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1612978 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> | ||
| 6ddb7768 | 2019-05-15 15:25:36 | Remove angle:: prefix in angle_deqp_gtest. Refactor and cleanup only. Bug: angleproject:3353 Change-Id: I2a01ddf71ba44b8f1a1fc2c4ccbac9edc7c80174 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1613893 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| b4ca09ac | 2019-05-15 15:23:12 | Add IsDirectory helper function to system_utils. This was previously a method in dEQP only. Cleanup change only. Bug: angleproject:3353 Change-Id: I9ac58ab52516f75efbb08bddb39466a40c07cbb8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1613892 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| 38ff3c70 | 2019-05-15 10:07:09 | Vulkan:Allow same-named var in nested scope ESSL 1.00 spec allows for variable with same name to override outer variable inside of a nested scope. This change adds new scope to symbol table inside of a function defintion, but after function parameters for ESSL 1.00 shaders (but not webGL). This prevents an error while parsing. This also includes some new code in translator to rename any vars that are redefined between the function body and the function parameters. This prevents an error later on when the translated shader is then parsed as a desktop GLSL version. Bug: angleproject:3287 Change-Id: I3f025805cf8d65bf912283bb15e6dad6e5e9b967 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601553 Commit-Queue: Tobin Ehlis <tobine@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| af6a51e0 | 2019-05-15 15:08:00 | dEQP: Make deqp_path GN variable public. This allows us to reuse it in our other BUILD.gn files. Bug: angleproject:3353 Change-Id: Ic88f7781010d7319dfe3bb8f2f942fa08d37e4dc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1614097 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> | ||
| 36f47169 | 2019-05-15 15:36:06 | Suppress flaky OpenGL ES3 test. Texture2DIntegerTestES3.IntegerTextureNonZeroBaseLevel/ES3_OpenGL Bug: chromium:963595 Change-Id: I6cdd845a5b7bc1a4b5a16029eaf170db40f1787c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1613894 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 32a1b0f7 | 2019-05-15 15:00:20 | Update dEQP build config to use GN templates. Templates make it easier to override parts of test configs. Instead of if statements we can use forwarded variables to override specific settings. This refactor makes it easier to integrate the "KHR" tests. Bug: angleproject:3353 Change-Id: Ia6e9c6d01864e5253db5d28dc087bf954aee226c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1612297 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e77f63a2 | 2019-05-09 10:37:42 | Use clamp cast for stencil mask in all versions. dEQP only covers this behaviour in ES2.0 tests and they fail when running with an ES3.1 context. BUG=angleproject:3425 Change-Id: I339b83901434da92ae6dd6273460b0725644cdf5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1602177 Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| eaf2d928 | 2019-04-18 16:31:25 | Add support for OES_depth_texture Note: Includes workaround for http://anglebug.com/3452 - some Android devices do not indicate filtering support on VK_FORMAT_D16_UNORM. Bug: angleproject:3103 Test: angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.DepthTexture/* angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.PackedDepthStencil/* angle_end2end_tests --gtest_filter=DepthStencilFormatsTest.DepthTextureRender/ES2_VULKAN Change-Id: Ic325fb94ab0e619a17c2e149e0e0865fa4142f3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1575426 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| bff32703 | 2019-05-14 18:08:50 | D3D11: Disable B5G6R5 on AMD drivers. Texture data corruption has been seen with this format, specifically on AMD Radeon R7 240 cards with the 15.201.1301.0 driver. BUG=941620 Change-Id: I42d0d86a8319afdfaf17b44e142c6414092c647d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610681 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| b783fbc7 | 2019-05-10 23:16:17 | Vulkan: Fix matrix uniforms A piece of code shared with d3d was used to implement this feature. However, we store the uniform data transposed and row-major in d3d to accomodate the fact that matrix indexing in HLSL is the opposite of GLSL (mat[row][col] in HLSL as opposed to mat[col][row] in GLSL). There were two functions that copied the source matrix fields either as column-major or source-major (corresponding to `transpose` false or true respectively in glUniformMatrix*) into a row-major destination. These functions are refactored into one, which copies from any-major source to any-major destination. The HLSL backend uses the "to row-major" variant and the Vulkan backend uses the "to column-major" variant. Bug: angleproject:3198 Change-Id: I7254da4fbe6916af78c5906abcb82ca01674ab9f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1607541 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| f7033c55 | 2019-05-13 09:48:06 | Vulkan: Request at least 3 images for MAILBOX. The glmark2 benchmark score went down (on Android with Pixel devices) when ANGLE changed VkSwapchainCreateInfoKHR::minImageCount from 3 down to 2, when using VK_PRESENT_MODE_MAILBOX_KHR. In experimenting, this was confirmed. This CL changes minImageCount back to 3. Vulkan spec issue #1671 was filed in order to understand whether this is a good/bad approach for other drivers/platforms. Test: glmark2 on Pixel2. Bug: angleproject: 3400 Change-Id: Ia4a72733eb648e4f53feeb8833b174d653fa5766 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610242 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 7d798558 | 2019-05-13 13:40:09 | Skip validating draw buffers when RASTERIZER_DISCARD is enabled. Bug: 962555, 962636 Change-Id: I4a22f83689252b7b7e51bbb3fc80e8f0d601a43f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610701 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shrek Shao <shrekshao@google.com> | ||
| 0a1eeb80 | 2019-05-13 13:53:18 | Call robust resource init before object sync. This should let the Vulkan back-end only need to sync the Image data once before we use them. Bug: angleproject:3427 Change-Id: I8c6e8794e861f855bddbf651997351e8415e3479 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1602912 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| cc5199af | 2019-05-13 09:44:40 | Roll dEQP (May 2019) Removes the EGL 1.5 overrides now that they are upstreamed. Bug: angleproject:3446 Change-Id: I4b17354518534ea821bba83a4b1e00f83f80ac37 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1605786 Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 9d519ab1 | 2019-05-09 23:09:46 | Vulkan: Rework layout block storage conversion Previously, a pass over the shader was made, converting shared and packed interface blocks with block storage to std140. This resulted in link success between interface blocks with different storage as they were all translated to std140. With this change, this pass is removed. The link step proceeds with the block storage specifiers as seen by GLES, and only upon Vulkan GLSL shader generation "shared" and "packed" are converted to std140. Bug: angleproject:3199 Change-Id: I069415ab9c9b4e1034bc00f64cd2d9e2d73f5956 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1605262 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 0ae59f2a | 2019-05-10 15:45:27 | Add test to verify uniform matrix upload Bug: angleproject:3198 Change-Id: Icb63d036a756b849c44d36342c7ba2fc2db0f910 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1604069 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Tobin Ehlis <tobine@google.com> | ||
| e1de1ab3 | 2019-05-13 10:53:47 | D3D: Store error message by std::string instead of const char*. These error strings are stored for recording later we can't depend on them still being alive so make a copy. BUG=962439 Change-Id: Ie9156c99b9ce79df4a11087bdcab92d980e959a4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610078 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 3dbe480b | 2019-05-06 15:59:07 | Validating draw buffers now also considers color mask settings It will always return true if all 4 channels of color mask are set to false. This should only apply to WebGL. Will fix this in a later patch. Bug: chromium:958374 Change-Id: I46befaf3ae1b63027dfbb309ac32724c616025d3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1594629 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| e4faae21 | 2019-05-10 08:27:00 | Rename state change notification messages. This makes the style use CamelCase instead of ALL_CAPS. It also cleans up some of the naming. It also changes some uses of the messages in some of the objects to hopefully be more consistent. See the comments added to the enum SubjectMessage in Observer.h for more details. Bug: angleproject:3427 Change-Id: I6dff4f6d335ecf1a27e48df65743b1490bd3025a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1600411 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| fdbece20 | 2019-05-09 18:06:34 | Vulkan: Support unsigned int uniform types Bug: angleproject:3198 Change-Id: Iac5d1389f4f466b7886246d8ca529e8f26a6a5bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1603629 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 7b08d381 | 2019-05-09 00:52:04 | Vulkan: Enable EXT_frag_depth Natively supported with GLES3 dEQP tests already enabled and passing. Bug: angleproject:3218 Change-Id: I5ff94e3b16d2025a58d5a448383049f9330dd46f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1600864 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 7ef73a52 | 2019-05-08 10:48:15 | Vulkan: Support flat and centroid qualifiers Bug: angleproject:3219 Change-Id: I2e0b60bda9c3af2b9eadf2efd3899250925897f4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1600335 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 5517ce95 | 2019-05-07 00:27:06 | Vulkan: fix qualifier erase for unused vertex attributes Bug: angleproject:3219 Change-Id: I8f8f5572eed5126ab03702953883b313f022a264 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1598548 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 9fa248e1 | 2019-05-06 14:55:18 | Vulkan: Implement EXT_draw_buffers In GLES, color attachments are referenced by their indices. These indices match between the API and GLSL. For example, if a shader has: layout(location=0) out color; layout(location=3) out roughness; Then GLES would bind and enable GL_COLOR_ATTACHMENT0 and GL_COLOR_ATTACHMENT3. In Vulkan, the framebuffer object and the corresponding renderpass define the color attachments, and they don't allow gaps in color attachments as GLES does. A render subpass creates the mapping between the color attachments as defined in the framebuffer and the attachments used by the shader (with possible gaps). This change packs the enabled GL color attachments for the sake of the framebuffer, and sets the subpass up in such a way that the shaders continue to use the same color output indices as GLES. In the example above, we have the attachment indices as follows: Status | GLES | GLSL | RenderPass | Subpass enabled 0 0 0 0 disabled 1 - VK_ATTACHMENT_UNUSED disabled 2 - VK_ATTACHMENT_UNUSED enabled 3 3 1 1 That is, the array of color attachments in the Vulkan framebuffer/renderpass is: [0] = GL color attachment 0 [1] = GL color attachment 3 And the array of color attachment references in the Vulkan render subpass is: [0] = 0 (index 0 of the renderpass attachment array) [1] = VK_ATTACHMENT_UNUSED [2] = VK_ATTACHMENT_UNUSED [3] = 1 (index 1 of the renderpass attachment array) Bug: angleproject:2394 Change-Id: Ib6cd2b60882643ea152986eee453270d09cd4aed Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595442 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> | ||
| 776694cd | 2019-05-08 10:28:55 | Change all ANGLE workarounds to use struct definition with info. Change each workaround from a simple bool to a struct with info including name, workaround set, description, and bug IDs. This will help with future workaround integration with Chrome. Bug: angleproject:1621 Change-Id: Ia27c180abaf845e280060c803e5994cc3152a057 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1593917 Commit-Queue: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> |