- 13 Jul, 2018 1 commit
-
-
Nicolas Capens authored
Despite being a 'client resource', the window can become invalid due to events outside of the client code's control, which causes XGetWindowAttributes to fail because it retrieves servers-side data that is no longer available. Hence it is something we should expect to see happen, and not (always) an indication of a bug that needs fixing. Also, we should be able to safely continue with an invalid window. At this point it's up to the client code to catch the X error and handle it appropriately. The EGL spec does not indicate that it should catch it instead and generate an error (eglSwapBuffers can generate EGL_CONTEXT_LOST but that's reserved for power management events). Bug chromium:861882 Bug chromium:824522 Change-Id: I78a364516b9466f652c94de68553369935590bde Reviewed-on: https://swiftshader-review.googlesource.com/19868Reviewed-by:
Antoine Labour <piman@chromium.org> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
- 09 Jul, 2018 1 commit
-
-
Nicolas Capens authored
Subzero x86-64 call instruction operands can be 64-bit now and require a register. Bug chromium:860533 Change-Id: I4446be34f57ef73e24718252210bdaa81995c8be Reviewed-on: https://swiftshader-review.googlesource.com/19848Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Corentin Wallez <cwallez@google.com>
-
- 06 Jul, 2018 4 commits
-
-
Nicolas Capens authored
MemorySanitizer doesn't automatically work with dynamically generated code or inline assembly, since it can't instrument it to know what memory it touches. We can help it by marking all the memory that is written to by Reactor with the Subzero back-end as initialized by calling __msan_unpoison. Note that writes to memory don't guarantee proper initialization. It could be copying or writing other uninitialized values. See also https://sites.google.com/a/chromium.org/dev/developers/testing/memorysanitizer Bug chromium:860533 Change-Id: Idf64e43c6ab9b8f71f64723fc7e3653f6ea2fb30 Reviewed-on: https://swiftshader-review.googlesource.com/19789Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
The x86-64 call instruction only supports 32-bit IP-relative direct calls or 64-bit indirect calls. So handle 64-bit direct calls by storing the value into a register and making an indirect call. Bug chromium:860533 Change-Id: I3781d1e8a489ce9ab7c17b098ffe830cae62477e Reviewed-on: https://swiftshader-review.googlesource.com/19828Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
Avoid accessing null pointers when an X11 call fails. Since EGL doesn't own the X11 window, we expect it to be valid for the duration of the EGL surface. Fail hard if that's not the case. Bug chromium:833229 Bug chromium:824522 Change-Id: Iba5e3832fe312fb50232a13e2163a022f5048a76 Reviewed-on: https://swiftshader-review.googlesource.com/19788Reviewed-by:
Corentin Wallez <cwallez@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Alexis Hetu authored
Chromium's memory sanitizer doesn't work with JIT compiled code, so we have to skip blitReactor when using MSAN, otherwise most uses of glReadPixels() will cause MSAN to detect a false use-of-uninitialized-value, since it doesn't instrument the inside of JIT compiled code. Bug chromium:848035 chromium:860533 Change-Id: Idfa194ce0fcd41eb7acf7868cbcebfc04d598f5b Reviewed-on: https://swiftshader-review.googlesource.com/19808Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 05 Jul, 2018 3 commits
-
-
Nicolas Capens authored
glCopyTexImage2D() with an framebuffer format of GL_RGB10_A2 and internalformat of GL_LUMINANCE_ALPHA was hitting the UNIMPLEMENTED() assert. The spec states that: If an effective internal format exists that has * the same component sizes as, * component sizes greater than or equal to, or * component sizes smaller than or equal to those of the source buffer's effective internal format (for all matching components in <internalformat>), that format is chosen for the new image array and this is the effective internal format of the new texel array. There is no unorm luminance+alpha format that has all components either greater or smaller, so this operation is invalid. Also see https://www.khronos.org/members/login/bugzilla/show_bug.cgi?id=9807#c56 Bug chromium:853424 Change-Id: Ia79a50bf7411a3f2aa87cf7f9bdbcbf971bdd7ce Reviewed-on: https://swiftshader-review.googlesource.com/19768Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
While all symbols except for the ones in the version script are hidden, the exported ones can still be overridden by other libraries which export the same symbols. Using -fvisibility=protected or the equivalent attribute fixes this. Protected visibility used to not work because of https://bugs.llvm.org//show_bug.cgi?id=30960, but that doesn't appear to be an issue any more. Bug chromium:852537 Bug swiftshader:64 Change-Id: Id0b1197b90baa5f5c68bf2aa107d12f8a9856796 Reviewed-on: https://swiftshader-review.googlesource.com/19728Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
Texture::releaseTexImage() is a virtual method called by libEGL but defined by libGLESv2, so prevent LTO from treating it as undefined. This fixes running Chromium swiftshader_unittests with an 'is_official' build. Bug chromium:720933 Change-Id: I58c4441f9bd32b96703a28267837cc79b6087659 Reviewed-on: https://swiftshader-review.googlesource.com/19708Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 04 Jul, 2018 4 commits
-
-
Nicolas Capens authored
GL_UNIFORM_BUFFER_SIZE and GL_UNIFORM_BUFFER_START can't be queried using glGetIntegerv(). They're only valid for glGetInteger64i_v(). This prevents a potential null dereference. Bug chromium:859775 Change-Id: Ic66f33a582805b021a2d4bd08ff627f704d42aa7 Reviewed-on: https://swiftshader-review.googlesource.com/19748Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
While all symbols except for the ones in the version script are hidden, the exported ones can still be overridden by other libraries which export the same symbols. Using -fvisibility=protected fixes this. We can only apply it to the shared library targets because of ld linker issues. Bug b/110884149 Change-Id: I98222420eabbb9ea0873816f52e1354625b9a3a8 Reviewed-on: https://swiftshader-review.googlesource.com/19688Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
Exported symbols with protected visibility (change made in the next patch) have a relocation type that is incompatible with passing their address to dladdr(). Instead we can use a static local variable. Bug b/110884149 Change-Id: I3e38280276ec00913b28ff97b007490619a99f58 Reviewed-on: https://swiftshader-review.googlesource.com/19710Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
EQUAL compares numeric values. Use STREQUAL instead. Also clarify the macro for setting the export map / version script. Bug b/110884149 Change-Id: If30c31d17ad35684a8c637b3619bdd0b90be6f2d Reviewed-on: https://swiftshader-review.googlesource.com/19709Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
- 28 Jun, 2018 2 commits
-
-
Nicolas Capens authored
For seamless cube maps the pitch (in pixels) differs from the width, due to the border. Also renamed identicalFormats() to identicalBuffers() since much more than the format is compared to determine if the buffers should be identical. Bug swiftshader:45 Change-Id: I295557b2cb039615a624c106be3e74588463b102 Reviewed-on: https://swiftshader-review.googlesource.com/19668Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
Clang treats conversion of an unsigned constant to a signed one that doesn't fit its range as an error. Make Visual Studio also produce an error. Change-Id: I2d392d5ba7765b72aa9e9478c5eee02102bdf286 Reviewed-on: https://swiftshader-review.googlesource.com/19648Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 27 Jun, 2018 1 commit
-
-
Nicolas Capens authored
Bug swiftshader:104 Change-Id: I037fcb69131906b52e0c1919f36fea61b2e1c621 Reviewed-on: https://swiftshader-review.googlesource.com/19628Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 26 Jun, 2018 2 commits
-
-
Nicolas Capens authored
Bug chromium:853424 Change-Id: I9b2de054baf6b042bcd04c5d023099a39ca20d2a Reviewed-on: https://swiftshader-review.googlesource.com/19569Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
The EGL spec allows that on context creation, a newer, compatible version is returned. OpenGL ES 3.0 is stated to be backward compatible with OpenGL ES 2.0, so we can stop creating a context that is limited to OpenGL ES 2.0 features, and always return an OpenGL ES 3.0 context. This simplifies our code and maintenance a bit and reduces the risk of incorrect validation. Note that Appendix F of the OpenGL ES 3.0 specification lists changes in behavior that aren't entirely backward compatible with OpenGL ES 2.0: * OpenGL ES 3.0 requires that all cube map filtering be seamless. OpenGL ES 2.0 specified that a single cube map face be selected and used for filtering. See section 3.8.9.1. * OpenGL ES 3.0 specifies a zero-preserving mapping when converting back and forth between signed normalized fixed-point values and floating- point values. OpenGL ES 2.0 specified a mapping by which zeros are not preserved. See section 2.1.6. * OpenGL ES 3.0 requires that framebuffer objects not be shared between contexts. OpenGL ES 2.0 left it undefined whether framebuffer objects could be shared. See appendix D. Additional differences can stem from new extensions being exposed (e.g. GL_EXT_color_buffer_float), and framebuffer configurations that are newly supported or no longer supported (in particular we allowed separate depth and stencil attachments, which OpenGL ES 3.0 expressly disallows). See also https://gitlab.khronos.org/opengl/API/issues/82 Bug swiftshader:45 Change-Id: I90d72698d509b4f03263edcf7c67e44fcef0beb6 Reviewed-on: https://swiftshader-review.googlesource.com/19388Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 22 Jun, 2018 4 commits
-
-
Alexis Hetu authored
Early returns were erroneous and were causing memory leaks Change-Id: Ifd6e37d79b6abd3f7d8d8899c951f1a0b4a66fb0 Reviewed-on: https://swiftshader-review.googlesource.com/19588Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Alexis Hetu authored
The use of std::unordered_map was the main source of slowdowns in the optimizer code, so it was re-written without any maps. In order to do so, the information originally carried by the maps was moved to user-defined information stored within Subzero classes. The optimizer now manages the memory used to store this information. Bug swiftshader:69 Bug b/67872293 Change-Id: I2757169f0d3d467766317af6e00e149b4317fb9c Reviewed-on: https://swiftshader-review.googlesource.com/19508Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
Previously we were only attempting to obtain a handle to an already loaded sibling library residing in the same directory. If it wasn't already pre-loaded, we only loaded the library by name without any directory prefix. This could lead to not finding the correct library. Also, it's fine if the directory prefix is empty, so there's no need for duplicate loops. Bug b/110407478 Change-Id: Ia55b426e58b9f4039064bba9253dae80e4fdf5cf Reviewed-on: https://swiftshader-review.googlesource.com/19549Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
Added MSAN, ASAN, TSAN, and UBSAN build options. Disabled use of --no-undefined if a Santizer is used, since by design they leave some symbols unresolved until run time. UBSAN required blacklisting of our old copy of LLVM. Bug swiftshader:108 Change-Id: Iab94b6815bc188c2a7f07d5b7a461234fb1035f3 Reviewed-on: https://swiftshader-review.googlesource.com/19548Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 21 Jun, 2018 1 commit
-
-
Adrienne Walker authored
BUG=chromium:854817 Change-Id: Icd81848fbbf3691eca46c9582b3c053ba1b00353 Reviewed-on: https://swiftshader-review.googlesource.com/19528Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Adrienne Walker <enne@chromium.org>
-
- 20 Jun, 2018 2 commits
-
-
Alexis Hetu authored
ChromeOS runs tests on some bots which run on Linux, but do not support X11. In order to allow SwiftShader to successfully build on these bots, all X11 dependencies are #ifdefed behind the USE_X11 flag, which is already supplied by the Chromium build system. Change-Id: I6b914b1e662d9fbf101eb7caea7ac59e43cc7b56 Reviewed-on: https://swiftshader-review.googlesource.com/19488Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
Bug b/110185979 Bug b/72330874 Change-Id: I593e975dca0798d027c8c5476e384eeca0fd1f7f Reviewed-on: https://swiftshader-review.googlesource.com/19428Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 18 Jun, 2018 1 commit
-
-
Alexis Hetu authored
Whenever a cube map was being used, these asserts would fire as soon as any border computation would happen. Fixed the asserts to allow cube maps to work properly. Change-Id: Iedc2661e63db37e5b4e77e08f97ce044e9f88837 Reviewed-on: https://swiftshader-review.googlesource.com/19468Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Alexis Hétu <sugoi@google.com>
-
- 15 Jun, 2018 2 commits
-
-
Nicolas Capens authored
When clear operations fall back to the slow path (i.e. neither fastClear nor blitReactor is used), we were copying a rectangle the size of the destination image. It should only sample within the 1x1 source pixel instead. Bug chromium:852641, chromium:851707 Change-Id: I9f247483f6167f92be8308b8470c021f5641b657 Reviewed-on: https://swiftshader-review.googlesource.com/19448Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Tom Anderson authored
After [1], a manual dependency on exe_and_shlib_deps is no longer necessary since it's automatically added. This CL removes all remaining manual references to exe_and_shlib_deps. [1] https://chromium.googlesource.com/chromium/src.git/+/d7ed1f0a9c28c932fddc834ca5de44f28266c7f5 BUG=chromium:845700 R=capn Change-Id: I20a88d716ed4cddd55047529f87267b5383366bc Reviewed-on: https://swiftshader-review.googlesource.com/19348Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Tom Anderson <thomasanderson@google.com>
-
- 14 Jun, 2018 2 commits
-
-
Alexis Hetu authored
Optimizer::optimizeStoresInSingleBasicBlock() was taking an extremely long time due to looping through all the instructions of a single basic block at every iteration. By creating a much smaller list of only load/store operations the first time a single basic block is encountered and reusing that list when the same block is encountered again, this function now runs ~10X faster. In my test case: out/Default/cc_unittests --gtest_filter=ImageBackgroundFilter.BackgroundFilterRotated_GL The sw::optimize function went from taking almost 16s to roughly 1.5s. Bug b/67872293 Change-Id: I7e2e2aa8dc1bf2663988fb59b58d72d9ee986e36 Reviewed-on: https://swiftshader-review.googlesource.com/19408Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Alexis Hetu authored
SwiftShader should be able to build on Fuchsia, but it would hit a collision error if added as a dependency in Fuchsia, so the same logic currently used on MacOS could also be used to avoid the collision on Fuchsia. Change-Id: I9ac216dfc2180165a82bd5ae81c843ee4aea7ce6 Reviewed-on: https://swiftshader-review.googlesource.com/19328Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Sergey Ulanov <sergeyu@chromium.org> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
- 08 Jun, 2018 1 commit
-
-
Nicolas Capens authored
The parameters of the matrix constructor form an aggregate node that was passed directly to the constructor of the structure, instead of creating a one-element aggregate containing the matrix. https://github.com/mc-imperial/shader-compiler-bugs/issues/74 Bug swiftshader:56 Change-Id: Iff9a2d8dc60d79a0dde28f2aad76407028486ec8 Reviewed-on: https://swiftshader-review.googlesource.com/19308Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 05 Jun, 2018 4 commits
-
-
Alexis Hetu authored
It appears that not only render targets, but also samplers that use IOSurfaces require SwiftShader to perform synchronized draws, otherwise it seems like using a shared IOSurface's CPU memory is unsafe and can cause crashes in Layout Tests. Bug chromium:846693 Change-Id: I0ce24700d34c657ac2447ceb2f6f837bfa3a9a58 Reviewed-on: https://swiftshader-review.googlesource.com/19288Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
Change-Id: If953be0cce3cd11b833d9646e10ede0b31732729 Reviewed-on: https://swiftshader-review.googlesource.com/19248Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
Nicolas Capens authored
Change-Id: I0984f43de3846428c30232192c7ba83342b1debd Reviewed-on: https://swiftshader-review.googlesource.com/19228Reviewed-by:
Krzysztof Kosiński <krzysio@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
Bug chromium:849217 Change-Id: I69d2269c117500d21e5d0860aed0acea212948ba Reviewed-on: https://swiftshader-review.googlesource.com/19268Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-
- 04 Jun, 2018 2 commits
-
-
Alexis Hetu authored
Added missing function declaration. Change-Id: I52ddb666d70733187242906d298fb986f413756a Reviewed-on: https://swiftshader-review.googlesource.com/19208Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Alexis Hétu <sugoi@google.com>
-
Alexis Hetu authored
Because of the way SwiftShader is integrated into Chromium on MacOS, a synchronization issue exists when Chromium attempts to use an IOSurface before SwiftShader is done rendering into it. In order to solve this, all draw calls that end up rendering into an IOSurface must be synchronized within SwiftShader and can't yield to Chromium until rendering is complete. Bug chromium:847094 Change-Id: If2dba4fa998e7437ec414d3b4aff9e8b19ecc128 Reviewed-on: https://swiftshader-review.googlesource.com/19188Tested-by:
Alexis Hétu <sugoi@google.com> Reviewed-by:
Nicolas Capens <nicolascapens@google.com>
-
- 02 Jun, 2018 2 commits
-
-
Nicolas Capens authored
Fixes "error: conditional expression is ambiguous; 'sw::Float' can be converted to 'RValue<sw::Float>' and vice versa". Change-Id: I2bd21036803dc54ce212df61a7520b7276b94b2a Reviewed-on: https://swiftshader-review.googlesource.com/19168Reviewed-by:
Nicolas Capens <nicolascapens@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
Nicolas Capens authored
The numeric imprecision can accumulate quickly and cause visible sampling errors. Bug chromium:848238 Change-Id: Ie41c10a0462e5b5e5c3ed5f7329ece00dab3f7f9 Reviewed-on: https://swiftshader-review.googlesource.com/19148Reviewed-by:
Alexis Hétu <sugoi@google.com> Tested-by:
Nicolas Capens <nicolascapens@google.com>
-
- 01 Jun, 2018 1 commit
-
-
Nicolas Capens authored
On Windows, GLAPI defaults to __declspec(dllimport), while GLAPICALL is empty, leading to declaration mismatches. Either should be empty for the unit tests since we link statically, for all platforms. Change-Id: I2dde0ca35108678fd9767895e0120ee4b0d7030f Reviewed-on: https://swiftshader-review.googlesource.com/19128Tested-by:
Nicolas Capens <nicolascapens@google.com> Reviewed-by:
Alexis Hétu <sugoi@google.com>
-