Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 4c19a8a8 | 2017-07-24 11:46:06 | D3D11: Update cached dynamically recompiled programs. This change makes it so that when we need to recompile a program on a draw call, we also update the cache. It also streamlines the internal queries of the dynamic vertex and fragment shaders such that we only update the input and output signatures a single time per draw. This should also facilitate dirty bit implementations for the D3D11 back- end. BUG=angleproject:2116 Change-Id: Iccb0501b700bc894f40a8c68d7f297ff0c8f46bd Reviewed-on: https://chromium-review.googlesource.com/531798 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 4c56c607 | 2017-07-25 13:22:58 | D3D: Make draw call translation check non-virtual. We don't support this call in D3D9, so need for it to be in RendererD3D. In general we want to have as few virtual calls in the hot draw call path as possible. Also rename it to 'drawCallNeedsTranslation' (with inverted condition checks). BUG=angleproject:1393 Change-Id: Ib212ec35aca4b5d45579acec65c20691b5853230 Reviewed-on: https://chromium-review.googlesource.com/584826 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 6caf405c | 2017-07-26 07:50:08 | StateManager11: Fix casing of include BUG= Change-Id: Ib237ce44644dba72bd55487756e0e69b724d30a3 Reviewed-on: https://chromium-review.googlesource.com/586429 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 1da00653 | 2017-06-20 17:16:25 | Remove IndexRange in DrawElements functions This change will remove IndexRange parameter in DrawElements functions. And calculate it until we truly need it. Meanwhile we add direct drawing path to avoid retrieving index range for DrawElements* functions in D3D11 backend. This change may not bring much performance improvement since we still need to retrieve index range in validation at the beginning of every DrawElements* call entry point. BUG=angleproject:1393 Change-Id: I86a8739c0893954c94eb398db62820ced7871565 Reviewed-on: https://chromium-review.googlesource.com/544634 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| a779b610 | 2017-07-24 11:46:05 | Smart caching of VAO input layout. Don't recompute the cached attribute layout for a program if the vertex array info hasn't changed. We can use the Serial class to know when a vertex array has identical state. BUG=angleproject:1156 Change-Id: Ia11f6ac268f63c3299f6d6d80c2866009cb8429c Reviewed-on: https://chromium-review.googlesource.com/529768 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 9603a956 | 2017-07-20 17:24:02 | D3D11: Move applyShaders to StateManager11. This also moves the shader application to happen before any of the other state sync work. In order to do this, we must split off the uniform application to happen after the viewport sync, because the driver uniforms for the viewport size can change. This prepares the D3D11 back-end for updating the programs before a draw call, including refreshing binary cache entries. BUG=angleproject:1156 Change-Id: Ie491e8ddb69ff44ebe076c56ebd39c4b46a4d2b2 Reviewed-on: https://chromium-review.googlesource.com/531797 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 253daa56 | 2017-07-20 17:24:01 | D3D: Split applyTextures into each back-end. This paves the way for a dirty bits implementation for Textures, and also will allow more precise ordering of the state update in D3D11. The latter becomes important when moving the shader application. Because the texture update can affect the built-in driver uniforms, we neeed to update textures before we update the uniforms. BUG=angleproject:1156 BUG=angleproject:1387 Change-Id: I995e095517c598d8672c6400d08a430da0e8339b Reviewed-on: https://chromium-review.googlesource.com/580361 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| b9c53d8d | 2017-07-19 18:55:16 | Remove FormatString And the global static it uses. BUG=angleproject:1644 Change-Id: I6c8b186ef0dce83fe64620729af4d87ea81c77f5 Reviewed-on: https://chromium-review.googlesource.com/577922 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org> | ||
| 222c517f | 2017-07-19 16:15:42 | Control Debug layers in ANGLE_platform_angle. Debug layers seem to be a universal thing among functional back-ends. D3D, OpenGL and Vulkan all need some kind of controls for debugging, so it seems to make sense to make this control part of the base extension. Default the extension to EGL_DONT_CARE, which allows the back-end to have a lot of flexibility in terms of implementation. Also enable the extension in the D3D11 and OpenGL back-ends, and set the extension to enabled for angle_end2end_tests. Remove EGLVulkanEXTTest since it no longer tests anything not tested in the base ANGLETest class. BUG=angleproject:2086 Change-Id: I52d8170effd1846b9afbe6e4052c699fe5cb0de8 Reviewed-on: https://chromium-review.googlesource.com/578369 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> | ||
| a59a1c1e | 2017-07-12 15:46:26 | D3D11: Consolidate shader state application. This consolidates all the state changes for shaders into StateManager11. BUG=angleproject:2052 Change-Id: I64dc3af5b0f1459442369e09f93a9ca8ce3232b3 Reviewed-on: https://chromium-review.googlesource.com/531796 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 95107bc8 | 2017-07-12 15:46:25 | D3D11: Consolidate primitive topology application. BUG=angleproject:2045 Change-Id: Ie1deac50a534ee748518d9ec5e6f749f3c78b53d Reviewed-on: https://chromium-review.googlesource.com/531795 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 6dd06eac | 2017-07-19 13:47:55 | Give StateManager11 internal dirty bits. Intead of checking a series of bools and special variables, organize the state application into a switch with internal dirty bits. This should be faster for no-op, and makes it clear where we have to further optimize the state update to pre-compute certain values. BUG=angleproject:1156 Change-Id: I8eca8716340499085afa170ff45f7788e84fecab Reviewed-on: https://chromium-review.googlesource.com/531794 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| b3f26b9e | 2017-07-19 15:07:41 | Add a zero-filled scratch buffer to Context. We need this in a few places for handling resource init. Centralize this in the context so we don't have to recreate and re-fill a large zero buffer. BUG=angleproject:2107 Change-Id: Icf9ce417e7ee3498f03e47741dfff89e81b49519 Reviewed-on: https://chromium-review.googlesource.com/576057 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 9c335865 | 2017-07-18 11:51:38 | Refactor StateManager11 for dirty bits. This will make iterating over an internal set of dirty bits simpler. This also reorganizes the framebuffer invalidation logic a bit, including how the sample count is pulled from the Framebuffer. BUG=angleproject:1156 Change-Id: I79dbcd11704ab52568c587d836af9c1bff1d2d1f Reviewed-on: https://chromium-review.googlesource.com/529708 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| dde78e8c | 2017-05-22 14:13:27 | ES31: Implement Vertex Attrib Binding on OpenGL This patch intends to implement Vertex Attrib Binding on OpenGL back-ends: 1. Add supports for updating vertex attributes by Vertex Attrib Binding APIs. 2. Refactor the process of updating vertex attribtues in class VertexArray to make it easier to implement this feature. BUG=angleproject:1593 TEST=dEQP-GLES31.functional.vertex_attribute_binding.* Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2 Reviewed-on: https://chromium-review.googlesource.com/510251 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| c7ba85c9 | 2017-07-14 22:17:01 | TexutreD3D: Only update storage level if it exists. This was causing an assertion failure in updateStorageLevel when the storage didn't contain the requested level. Gate the call behind an isValidLevel check. TEST=conformance/misc/type-conversion-test.html BUG=angleproject:1815 Change-Id: Iadf46d232d5a117ae1ae74c6e71677b1e06a5321 Reviewed-on: https://chromium-review.googlesource.com/572705 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| c5af8ba6 | 2017-07-11 12:18:31 | D3D11: Make sure to resolve the storage for CopyTexImage3D. TextureD3D_3D::copySubImage worked around missing functionality in D3D11 for copying a framebuffer directly to a texture storage but didn't handle the case of a texture storage already existing. This caused the image to have out-of-date data before the new data was copied into it. Simply copy the data from the storage back into the image before performing the copy from the framebuffer and then copy back to the storage afterwards. TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html BUG=angleproject:1815 Change-Id: I308d6a1d3ecbc738f7d0e232bece433e6b353638 Reviewed-on: https://chromium-review.googlesource.com/567199 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| d90b214f | 2017-07-12 15:33:35 | D3D11: If an image is dirty, copy it to the storage before copying from a FB. If a storage already existed, it may have old data in it. Check if the image is dirty and copy the initialized memory into the storage before copying data from the framebuffer. TEST=conformance/textures/misc/copy-tex-image-and-sub-image-2d BUG=angleproject:1815 Change-Id: Ic69c5519b2e09e4b62025b1bf413d2a71a4a2afb Reviewed-on: https://chromium-review.googlesource.com/568410 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 34bc315d | 2017-03-29 14:56:01 | ES31: Implement multisampled Textures for D3D part. Implement TexStorage2DMultisample api for d3d part. BUG=angleproject:1590 TEST=angle_end2end_tests --gtest_filter=TextureMultisampleTest* TEST=angle_deqp_gles31_tests --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.fbo_* Change-Id: Icbfba45b9c2965af02b54dd4060b7b49970cb74b Reviewed-on: https://chromium-review.googlesource.com/457161 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 84db5733 | 2017-07-13 08:00:02 | Merge "Fix non statically used fragment input structs on HLSL" | ||
| 1636e1b9 | 2017-07-12 14:29:06 | Merge "D3D11: Clip copy rect to the source framebuffer for copyTexImage3D." | ||
| 06a06f5e | 2017-07-12 12:22:15 | Fix non statically used fragment input structs on HLSL Add static use information to struct fields that mirrors the static use information on the struct itself. This way dynamically generated HLSL doesn't need special handling for initializing fragment inputs if they are structs. This fixes a problem with the previous code where dynamically generated HLSL ended up trying to initialize structs that are not declared in the HLSL output because they were not being referenced. BUG=angleproject:2104 TEST=angle_end2end_tests Change-Id: I21283ce4fe26515d62d95e61f8155dc9a9b44cf1 | ||
| bc5d7add | 2017-07-10 16:17:26 | D3D11: Clip copy rect to the source framebuffer for copyTexImage3D. TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html BUG=angleproject:1815 Change-Id: I146fcf97a9c90f07d6270672c5e44e05602eecf8 | ||
| 340b7b8b | 2017-06-26 13:02:31 | Add support for new internalformats in copyTextureCHROMIUM This adds support in blit11::copyTexture for LUMA, LUMA_ALPHA, and ALPHA formats as destinations. Added is handling for each case to match up the corresponding shader. This required new premultiply and unmultiply D3D11 shaders for some cases. Changed copyTextureCHROMIUM validation to allow new formats. Tests have been created to demonstrate using copyTextureCHROMIUM with the new formats with default parameters, as well as with the unpackPremultiply and unpackUnmultiply parameters. BUG=:angleproject:2101 Change-Id: Id8cd303a46fe70710bc18172fc938552a6e4cfaf | ||
| 88318b44 | 2017-07-05 14:39:01 | Fall back to CPU copies for srgb textures in copy_texture_CHROMIUM. The copied data is not supposed to have sRGB conversions applied to it when written to the destination texture but an sRGB SRV is used by Blit11. Instead of creating multiple sRGB and non-sRGB SRVs for textures, simply fall back to the CPU copy path for this format for now. Clip color channels that should not exist in the destination texture formats in Image11::CopyImage. This works around issues with texture formats with emulated channels. TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte BUG=angleproject:1932 Change-Id: Ieeda3569f80d016fda781e7eb498acd3b97568d0 Reviewed-on: https://chromium-review.googlesource.com/559857 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| caf20889 | 2017-07-05 15:26:44 | Fix incorrect quality level with depth-stencil buffer and MSAA configs. Using a depth buffer format requires that the DSV and RTV have equal quality levels; otherwise, the bound render target will discard writes. BUG=angleproject:1917 Change-Id: Ife25b0a8958fa2b31b43a0d877d27e440916a9bf Reviewed-on: https://chromium-review.googlesource.com/560716 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 95ba174e | 2017-06-22 20:38:04 | Clip TextureD3D_2D::copyImage to framebuffer. WebGL CopyTexImage needs to zero the part of the texture corresponding to area outside the framebuffer, so we zero the whole texture then clip the read area. The clipping also avoids problems with code lower down that isn't prepared for read areas not entirely within the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: Ia7e0243ca72fa7c8f5bacda4d2022061d6a6d4f0 Reviewed-on: https://chromium-review.googlesource.com/551056 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 27a60631 | 2017-06-30 15:12:01 | Re-apply UBO binding workaround on program save. The workaround which was previously defined to only apply on load also seems to affect save on some AMD drivers. BUG=angleproject:1637 BUG=angleproject:1897 Change-Id: Ia01a1420a484f3c2682ce97eaab18baccfb66a50 Reviewed-on: https://chromium-review.googlesource.com/558008 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 739bd8ba | 2017-06-19 21:02:27 | Clip FramebufferD3D::readPixels to framebuffer. In GL, ReadPixels() is allowed to modify memory that corresponds to pixels outside the framebuffer. In WebGL it must not do that, so clip the read area to the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: Ie99401a2102c352ffb1193a57aa66a5b96c184aa Reviewed-on: https://chromium-review.googlesource.com/540556 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 56375021 | 2017-06-21 11:38:04 | D3D11: Fix Buffer11 for GPU-to-CPU storage copy. When copying from a non-mappable NativeStorage to a system memory based storage, a staging buffer storage should be used. Currently this is only done for PackStorage. This covers the missed SystemMemoryStorage and EmulatedIndexedStorage. Also it adds a triggering test case to expose the bug. BUG=angleproject:2076 Change-Id: I278a0eef85751e966c1c48ddd71010092a14a3f7 Reviewed-on: https://chromium-review.googlesource.com/542595 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| ab04e6a7 | 2017-06-22 20:38:04 | Clip TextureD3D_2D::copySubImage to framebuffer. WebGL CopyTexSubImage does not allow touching parts of the texture that correspond to area outside the framebuffer, so we clip the read area to the framebuffer. The clipping also avoids problems with code lower down that isn't prepared for read areas not entirely within the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: I411223669dae2a456dfc3e22acda907b73177988 Reviewed-on: https://chromium-review.googlesource.com/527411 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| c6a34b03 | 2017-06-23 10:51:00 | Add guards around dxgi_support_table.h. BUG=angleproject:2082 Change-Id: I6f20502bac3c664d5ef8c6d65b244c37a5727f26 Reviewed-on: https://chromium-review.googlesource.com/545458 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| db9e5d31 | 2017-06-12 12:05:45 | D3D11: Only apply attachments that are written by the program This works around a bug in the AMD driver that writes 0's to the first attachment if it isn't written by the pixel shader. BUG=angleproject:2048 Change-Id: I384fd60c0e0a37fbc0fd7b69fe1ec74fe4ffac8f Reviewed-on: https://chromium-review.googlesource.com/531630 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| da066657 | 2017-06-21 11:33:48 | Fix invalid storage recovery on FL 9_3. This problem was uncovered when I inadvertently changed TextureD3D to delete its storage before its images. Small mips of compressed textures must use a nullptr argument to CopySubResource, otherwise the runtime complains about un-aligned sizes. Also change the class to delete the Images before the Storage again so we don't wastefully recover the images before deleting them. Also change the Image pointers to use std::array and std::unique_ptr. BUG=angleproject:1156 BUG=angleproject:2077 Change-Id: Idb2e53835b7a9b973285ff0781f70b25f05c77aa Reviewed-on: https://chromium-review.googlesource.com/543438 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 4928b7ca | 2017-06-20 12:57:39 | Proliferate gl::Context everywhere. This gives the D3D back-end access to the GL state almost anywhere. This uses the onDestroy hook for Textures to push errors up from destructors, although they still don't quite make it to the Context. There are places, such as in EGL object (Context/Surface) destruction, where we end up calling through to GL implementation internals without having access to a gl::Context. We handle this via a proxy Context to a Display, basically a null context, that has access to impl-side state like the Renderer pointer if necessary. It does not have access to the normal GL state. Also Pass gl::Context to RefCountObject::release(). Since we're using destroy() methods now, we should not ever call the destructor directly. BUG=angleproject:1156 Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259 Reviewed-on: https://chromium-review.googlesource.com/529707 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 6260b7aa | 2017-06-19 11:07:19 | Fix kResourceTypeNames initialization Due to a missing comma the kResourceTypeNames array contained a single long (concatenated) string instead of NumResourceTypes independent strings. This incorrect initialization caused a crash in out-of-memory situations, but this was only noticed on VC++ 2017 for some reason. This fix adds the missing comma and uses a static_assert to ensure that the array is initialized correctly. BUG=chromium:727671,728226,731089 Change-Id: I9f0f3d3725b9f773505506513afb6c349db3a7fb Reviewed-on: https://chromium-review.googlesource.com/539536 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 30ca54f4 | 2017-06-19 11:45:06 | D3D11: Fix mingw64 build. Two small build errors were breaking ming64. BUG=angleproject:2071 Change-Id: Ia5c8e629e77c09f151b888364e92475b4c3f1709 Reviewed-on: https://chromium-review.googlesource.com/539796 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| fe54834f | 2017-06-19 11:13:24 | Proliferate gl::Context. This enables a few small things: it will enable making the platform a property of the Display rather than a global. The same goes for the global logging annotator. Also it ensures all back-end implementations have access to the GL / EGL state when available. Also introduces a smart pointer helper class to angleutils for objects that prefer to be destroyed with a context (gl::Context/egl::Display) parameter. We were using std::unique_ptr in a few places that would not work well with these objects. BUG=angleproject:1156 Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba Reviewed-on: https://chromium-review.googlesource.com/529706 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 638c7277 | 2017-06-13 15:50:26 | Implement EGL_KHR_surfaceless_context for D3D, GL and NULL backends. Skip all config attributes that have the value of EGL_DONT_CARE. From the EGL 1.5 spec: "If EGL_DONT_CARE is specified as an attribute value, then the attribute will not be checked.". BUG=angleproject:1651 Change-Id: I30c95a1970543fb6f1d4b02d2babf3df61cad543 Reviewed-on: https://chromium-review.googlesource.com/533937 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 97ee6548 | 2017-06-07 17:06:05 | Shunt more code to StateManager11. Previously the Renderer11 would call directly into the state manager sync methods. Instead make a single updateState method, and make several state sync methods private to the manager. Also rename them to clarify they're for syncing state, not for direct use. BUG=angleproject:1156 Change-Id: I94880a744e7ade3895fa2a312a2436ba4ef38dba Reviewed-on: https://chromium-review.googlesource.com/529705 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| fb05bcba | 2017-06-07 15:43:18 | Move the vk Serial class to renderer_utils. This can be useful for other back-ends, for various types of state management. Also redesign the class to use an opaque factory instead of an increment operator. The class maintains the property of being ordered. Also assume we don't overflow with 64-bit serials. We could maybe redesign this to use 32-bit serials for memory constrained situations, and handle overflow more gracefully. I plan to use the serials to track state revisions for the vertex array class, to avoid doing redundant work. BUG=angleproject:1156 Change-Id: I02c78b228bc6e2fb3ee786fe67a4e607baaca18e Reviewed-on: https://chromium-review.googlesource.com/529704 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| c174db3a | 2017-06-13 15:44:00 | D3D11: Apply a non-null blendstate in masked depth clear. In https://chromium-review.googlesource.com/c/453888/, we changed how blendstates were applied in masked clears. This change would apply a null blendstate when all color channels were disabled, but this seems to have an issue on Intel Cherry View drivers. Work around this issue by restoring the prior functionality of making a simple masked blend state. Also clean up some of the code style in the Clear11 class. BUG=chromium:730126 Change-Id: I9a4044201b2f07e9483525513a59e19bb2a8bcd3 Reviewed-on: https://chromium-review.googlesource.com/533684 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| d222d454 | 2017-06-06 17:48:35 | Use HashingMRUCache in InputLayoutCache. This simplifies the state management code inside this manager. Also it should improve the speed of lookups due to using hashing instead of a tree lookup. BUG=angleproject:1156 BUG=angleproject:2044 Change-Id: I19ea8dbac6f2dfd7d30dd403d77b66ba0aa85d73 Reviewed-on: https://chromium-review.googlesource.com/527693 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 34ca4f5b | 2017-06-13 11:49:39 | Remove Shader::getSemanticIndex. This method doesn't really belong to GL, and was only used by the D3D back-end to compute some attribute indexes. Simplify the code by moving it into ProgramD3D. Also add the ability for the ShaderImpl to assert that any pending compiles have resolved. BUG=angleproject:1156 Change-Id: I0af3d3082ff8c908e6a87b9734989efbefd28808 Reviewed-on: https://chromium-review.googlesource.com/526336 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| dd5f27ee | 2017-06-07 10:17:09 | Make VertexBinding's member variables private The patch decorates all members in VertexBinding as private and limits access to them only through getters and setters. This makes it easier to debug and keep track of any assignments to the class members. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Iddd49063d060f136bc9cf11c313a5af0931d433c Reviewed-on: https://chromium-review.googlesource.com/530786 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 9cf9e871 | 2017-06-05 12:59:25 | Move LinkResult to the gl:: namespace. This is a derived type from gl::Error so makes sense to be there. Also makes it more accessible than in ProgramImpl.h BUG=angleproject:1897 Change-Id: Id41b13e5a072745d8c361057f5bef8f152e0452b Reviewed-on: https://chromium-review.googlesource.com/522872 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 83418fb1 | 2017-06-05 12:59:24 | Don't allow for error in ProgramImpl::save. Refactoring cleanup patch only. BUG=angleproject:1897 Change-Id: I6d12de5dab16ead9684886a1cf15b570e3c98156 Reviewed-on: https://chromium-review.googlesource.com/522871 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| c084de14 | 2017-06-05 14:28:52 | ProgramD3D: only broadcast when the GL_EXT_draw_buffers is enabled The behavior is undefined in GL ES when multiple attachments are used with gl_FragColor but WebGL clarifies that: - If the extension is enabled, broadcast happens - If the extension isn't enabled, only the first attachment is written BUG=angleproject:2048 Change-Id: I6d85ba91df77d42fb8863a03f1faa006cd7817bf Reviewed-on: https://chromium-review.googlesource.com/523809 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 0492d447 | 2017-06-07 13:45:15 | Move murmurhash to src/common/third_party Bug: chromium:697758 Change-Id: I8a3a990b14cde0fdd45319d593040bfc571abf3e Reviewed-on: https://chromium-review.googlesource.com/527602 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 60f6eb20 | 2017-05-08 15:34:46 | Add WebGL test that draws to missing attachment. In WebGL one can Clear, DrawArrays, and DrawElements to a framebuffer with a missing attachment with no error. BUG=angleproject:1822 Change-Id: I4dece2fa8fad31c812e24ae18bdc380c2857a1f8 Reviewed-on: https://chromium-review.googlesource.com/502967 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 2cd45629 | 2017-06-08 20:14:13 | D3D11: Consolidate Vertex Buffer application. With this change, IASetVertexBuffers is only called from a single code site in StateManager11. All other classes call through to here. This will make adopting the dirty bits for InputLayouts and VBs much simpler. BUG=angleproject:2052 Change-Id: I6e7b6146deb7f80f5f0e75dd0aff18eb4cc2bfc2 Reviewed-on: https://chromium-review.googlesource.com/524232 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 863b6236 | 2017-06-08 11:18:49 | Refactor redefineImage and track dirty images properly. Several issues showed up in testing with WebGL: * Images should only be forcefully re-defined when there is no data to upload. * After an image is marked dirty, a later call to subImage would cause assertion failures because the texture storage would try to verify that the image was not dirty, don't try to copy directly to storage in this case. BUG=angleproject:1635 Change-Id: I9e5d83850d743b7d4d2db938312ee5c35a3a79ee Reviewed-on: https://chromium-review.googlesource.com/527348 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 982f6e01 | 2017-06-07 14:33:04 | Improvements to the gl::Range class. Make this a proper class, fix the extends method (previously did not work as expected), add a contains method, and add tests. Also add an iterator helper class so we can iterate over the range with range-for loops. This also fixes the shader resource unsetting code, which was not actually unsetting all the possible applied textures. BUG=angleproject:2052 Change-Id: I2a6fa97f96ccb612ad01a5e3f24dc869c54c967b Reviewed-on: https://chromium-review.googlesource.com/527318 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 5ea762a6 | 2017-06-07 14:59:51 | Consolidate base:: imports. This merges the mrucache and numerics into one folder, to prevent having to make two identical versions of logging. BUG=angleproject:2044 Change-Id: Iba6dab05b21eb9ba0de44f27a90579c590a9a7fd Reviewed-on: https://chromium-review.googlesource.com/522870 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| c4d18aac | 2017-03-09 18:45:02 | Use ErrorStream everywhere Eliminates one more usage of FormatString and its static initializer. Add more ErrorStream types and replace gl::Error and egl::Error with them. BUG=angleproject:1644 Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb Reviewed-on: https://chromium-review.googlesource.com/505429 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 79460702 | 2017-06-06 15:30:45 | Don't discard the storage on forceRelease, simply mark the image as dirty. It was overkill to always destroy the storage, especially for cube maps. Instead, just make sure the image thinks it's dirty when robust resource init is enabled so that it is always copied to the storage after redefinition. BUG=angleproject:1635 Change-Id: Ieba065d1873ca66a216bd05f4f8afa9c75349ff9 Reviewed-on: https://chromium-review.googlesource.com/526295 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 966cb898 | 2017-06-05 16:08:27 | D3D11: Don't dirty all uniforms on program change. (2/2) Second patch for addressing missed comments. BUG=angleproject:2053 Change-Id: I1268d571913f8ce7efa7b94a5d4e47cf9a80c3c0 Reviewed-on: https://chromium-review.googlesource.com/526275 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| dcc9b51d | 2017-06-05 15:28:45 | D3D11: Consolidate input layout application. This merges all calls to IASetInputLayout to a single place in StateManager11. This means we no longer have to invalidate the state for D3D11, and can always lazily apply the input layout state. Introduces a new ResourceSerial class to replace the uintptr_t and DirtyPointer design. BUG=angleproject:2052 Change-Id: I76b874218b754395f25a129967c769b1f8f82115 Reviewed-on: https://chromium-review.googlesource.com/523025 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 07b36365 | 2017-06-05 16:08:27 | D3D11: Don't dirty all uniforms on program change. Only dirty the uniforms if the uniforms are dirty. This gives about a 20% reduction in ANGLE overhead on a targeted micro-benchmark. It probably won't have that large of an impact on most real-world applications, but it was strictly unnecessary work. Something that came up when investigating the internal program binary cache in ANGLE D3D11. BUG=angleproject:2053 Change-Id: I2d55c010c29ce9627a9001dd2abe6e549f0b7e8c Reviewed-on: https://chromium-review.googlesource.com/524297 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 10bed9fc | 2017-06-05 12:59:22 | Minor optimizations to DynamicHLSL. This makes us use std::ostringstream in more places, instead of string concatenation. BUG=chromium:697758 Change-Id: Ifdcaa2e7e119664fc9cfdc566ea13b519a294714 Reviewed-on: https://chromium-review.googlesource.com/521729 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| f2a06035 | 2017-06-05 14:07:36 | Force-release images on redefine when robust resource init is enabled. If the user repreatedly calls glTexImage with null data and the same size, it is expected that the texture would re-fill itself with zero'd data. TextureD3D and ImageD3D would no-op these calls when the texture is already the right size. TEST=conformance2/rendering/blitframebuffer-filter-outofbounds BUG=angleproject:1635 Change-Id: I810b15922759a4acfc0ef7da198f068b81e9efc4 Reviewed-on: https://chromium-review.googlesource.com/524436 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 93a540fc | 2017-06-05 14:26:47 | D3D11: Reset the TF binding offsets when glBeginTransformFeedback is called. BUG=angleproject:2051 Change-Id: I09e8548ef76b7d824743d06b0bba21633bc40a24 Reviewed-on: https://chromium-review.googlesource.com/523671 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| bd044ed8 | 2017-06-05 12:59:21 | Defer shader compiles when possible. When using the program binary memory cache inside ANGLE, this will give a potential fast path. If the user doesn't query the shader compile status or info log before calling LinkProgram, then we can check the program cache before translating the program, and if it finds a hit, we don't even need to call the translator. To preserve the shader settings at compile time, a reference to the current shader translator is kept in a binding pointer on the call to compile. This mirrors a similar implementation in Chromium's command buffer. Also the compile options and source are cached at compile to preserve the correct shader state. BUG=angleproject:1897 Change-Id: I3c046d7ac8c3b5c8cc169c4802ffe47f95537212 Reviewed-on: https://chromium-review.googlesource.com/517379 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 63fa2e94 | 2017-06-01 17:11:41 | D3D11: Consolidate Query allocation. This compiles the resource refactor for D3D11. The only remaining non-smart handles are for things like SwapChains and ID3D11Blob. This might be more easily managed by using angle::ComPtr or similar smart pointers instead of the Resource Manager class. BUG=angleproject:2034 Change-Id: I53c753a1c19b05c4e72859dd5046e3ed10866847 Reviewed-on: https://chromium-review.googlesource.com/506777 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 0fd806f1 | 2017-06-01 17:11:40 | D3D11: Consolidate Shader allocation. Similar to the InputLayout init, this adds a small helper type to act as a wrapper around shader init data (binary and size). This also adds error trapping to the blit shader compilation. It also removes the LazyResource2 class, and the CompileXS helper methods. BUG=angleproject:2034 Change-Id: I3fd718393c8a0250e4263890f00d0e9147ec9567 Reviewed-on: https://chromium-review.googlesource.com/506776 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 5978e28d | 2017-06-02 11:49:31 | D3D11: Consolidate InputLayout allocation. This introduces a helper type to act as the initialization data type for input element arrays. A WrappedArray class acts as a helper class to wrap a C array and size into a C++ class, similar to std::array but without the data storage. Also move resource deallocation memory counting into a single code path. BUG=angleproject:2034 Change-Id: I5e108254777f0df65f5f60fe26e760c71b95b542 Reviewed-on: https://chromium-review.googlesource.com/506775 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| b7d5e303 | 2017-06-01 16:04:46 | D3D11: Default init all textures. The resource manager factory methods will use ClearView or zero-filled buffers to set initial data. It assumes there are no 3D depth/stencil textures. This will lead to some wasteful re-creation of RTVs in some cases. This is a temporary measure until we can implement more efficient lazy resource init strategies. BUG=angleproject:1635 Change-Id: I590e76587d3d96a359beedb79e21d24930e5f2e0 Reviewed-on: https://chromium-review.googlesource.com/503254 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| c564c070 | 2017-06-01 12:45:42 | Pass gl::Context to impl methods instead of ContextImpl. In some cases we might have to call back into the GL layer, passing the Context, and if we just have a ContextImpl pointer this isn't possible. It also removes the need for SafeGetImpl. BUG=angleproject:2044 Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6 Reviewed-on: https://chromium-review.googlesource.com/516835 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 948bbe51 | 2017-06-01 13:10:42 | Redesign robust resource init as a display extension. Also correct the enum allocation to values that are available to ANGLE. BUG=angleproject:1635 Change-Id: I443f5654aa6a5049b4a1ae4c253cd6473b4e446e Reviewed-on: https://chromium-review.googlesource.com/520002 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| cd930cf0 | 2017-05-31 13:36:32 | EGLDevice: Fix edge-case memory leak. This could happen if there was an error on device init. Reported by Microsoft. BUG=None Change-Id: I059fd9308d0536b4120c28e684e37567d14b3fd5 Reviewed-on: https://chromium-review.googlesource.com/519642 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| ea19b4ac | 2017-05-25 14:48:34 | Don't store Renderer in RenderStateCache. Instead pass it around via methods. This makes the code a bit nicer. BUG=angleproject:2044 Change-Id: I721e190a2ecde2b1a65e57debf419ee06a5dce29 Reviewed-on: https://chromium-review.googlesource.com/516385 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 9216a6e2 | 2017-05-24 15:53:20 | Introduce MRUCache. This library comes from Chromium's base, and is useful for many use cases in ANGLE. It can replace the custom MRU code we use in the RenderStateCache. It will also be useful for implementing a program binary cache. BUG=angleproject:2044 Change-Id: Iba166fe380d7ed4e3123428b0227b9d299f756d1 Reviewed-on: https://chromium-review.googlesource.com/516384 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 0a82f2fa | 2017-05-30 15:42:00 | D3D11: Don't copy SharedSRVs around. This was causing a very large performance regression in Texture re-binding. Instead pass by const &, which should be fine, since values in std::map (and unordered_map) are not reallocated when the map changes. Also make the SharedResource type non-copyable, and add an explicit makeCopy method for when we need to clone the shared pointer. BUG=angleproject:2034 BUG=chromium:727318 Change-Id: I39508a6ca4b41e4da31fe68899caa4464138cada Reviewed-on: https://chromium-review.googlesource.com/517670 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 63d8c266 | 2017-05-29 13:35:09 | Re-use std::hash in RenderStateCache. This will allow us to more easily take advantage of Chromium's MRUCache class. BUG=angleproject:2044 Change-Id: I3fad82fc825861dc1c2095f25da83159da76e76b Reviewed-on: https://chromium-review.googlesource.com/517359 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| aa0a5446 | 2017-05-25 13:30:23 | Ensure gl State structs are zero filled. In some cases we would hash or memcmp against structs with bools or other non-filled data. This could have implementation differences, and may have been causing cache errors on Clang. BUG=chromium:721648 BUG=angleproject:2044 Change-Id: I981a1e6e8d50a33f7fade568497b72b919accfce Reviewed-on: https://chromium-review.googlesource.com/516383 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 80616218 | 2017-05-17 15:40:03 | Support CHROMIUM_copy_texture for all formats on D3D11. Adds a CPU readback and conversion path when the destination texture is not renderable. BUG=angleproject:1932 Change-Id: I71461ca991dc10dd636ff38e1ae20db2be0f8d63 Reviewed-on: https://chromium-review.googlesource.com/508308 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 20805650 | 2017-05-25 12:20:59 | D3D11: Consolidate state allocation. This cleans up the allocation and deallocation of Blend, DepthStencil, Rasterizer, and Sampler states. This patch introduces a LazyResource2 class, basically a replacement for LazyResource, which will be removed once the refactor is done. BUG=angleproject:2034 Change-Id: I4fa759ae479807ff69a629f89a08b01800ba3f66 Reviewed-on: https://chromium-review.googlesource.com/503627 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| bdc1e2a2 | 2017-05-24 14:40:27 | D3D11: Consolidate Buffer allocation. We now allocate and release all buffer resources from a single place, allowing us to allocate junk memory, clear on init, and track the currently allocated buffer memory. BUG=angleproject:2034 Change-Id: Id60b63a7f77bc369dfc494a7587ab06c8d34a8e2 Reviewed-on: https://chromium-review.googlesource.com/503253 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 2c479d6e | 2017-05-24 14:37:22 | D3D11: Use TextureHelper11 everywhere. This consolidates all texture allocation into ResourceManager11. It removes a lot of error checking and resource management code. In a few places we're storing some redundant information, like in TextureStorage11, we might store the Format pointer in two places, or the Texture's size. BUG=angleproject:2034 Change-Id: I9369e76925a67632c444c662e5667c5ed7875547 Reviewed-on: https://chromium-review.googlesource.com/503252 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 6811a316 | 2017-05-24 16:50:06 | Use GetPlatformDisplay instead of GetPlatformDisplayEXT. This will allow us to use EGLAttrib and pass pointers as Display init parameters if necessary. BUG=angleproject:2042 Change-Id: Ib0f85d71bc9d3dff2db9453012f40303f3c3bd7c Reviewed-on: https://chromium-review.googlesource.com/513518 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 9d7d719c | 2017-05-24 14:35:59 | D3D11: Move CreateStagingTexture to Renderer11. This will make staging texture tracking easier. BUG=angleproject:2034 Change-Id: I2f0418cc5784100bf6fba59b4bda1b2dd9dc18d1 Reviewed-on: https://chromium-review.googlesource.com/503251 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 4f0e003e | 2017-05-01 16:04:35 | Implement the new formats/features of the ES3 CHROMIUM_copy_texture. Some non-renderable texture formats remain unimplemented. BUG=angleproject:1932 Change-Id: Id206432d6e26a70fc0e84478a4e43e9eefadcf2f Reviewed-on: https://chromium-review.googlesource.com/491948 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| caafd890 | 2017-05-19 14:31:25 | D3D11: Don't store device in InputLayoutCache. We will need the Renderer pointer for resource allocation, so pass it around instead of storing the device and context. BUG=angleproject:2034 Change-Id: Iaf271913f88c5402895aa81de310aa22fcd72cc4 Reviewed-on: https://chromium-review.googlesource.com/509930 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e0e009fe | 2017-05-19 14:13:03 | D3D11: Consolidate SRV allocation. This change also moves all SRV storage to use the custom smart pointer classes in ResourceManager11. Every single SRV is now allocated in ResourceManager11. For TextureStorage11 and RenderTarget11, we use a shared pointer type since the SRVs use shared ownership by both classes. BUG=angleproject:2034 Change-Id: I90666fbbbc23ff10870b7401f3da09ef79258136 Reviewed-on: https://chromium-review.googlesource.com/503250 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 39b826fc | 2017-05-24 09:47:44 | Reduce warning spam for failed D3D shaders. This prevents Chrome's about:gpu from being filled with bad shaders, and instead only prints the relevant error lines. BUG=None Change-Id: I75fcd2ef920d2ed7b98e8668c487b0921faf4c0b Reviewed-on: https://chromium-review.googlesource.com/513417 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 764a1e76 | 2017-05-18 11:11:47 | D3D11: Consolidate DSV allocation. This uses the new classes introduced in ResourceManager11. Smart pointers mean we can use ANGLE_TRY in more places, and don't need to manually release these views. There is now a single point in the D3D11 back-end where depth stencil views are allocated. BUG=angleproject:2034 Change-Id: If0de2529ece1298e8babf24c07cc4be9849cc4de Reviewed-on: https://chromium-review.googlesource.com/503249 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 403c1682 | 2017-05-18 11:11:46 | D3D11: Add resource manager classes. The resource manager tracks the allocations and deallocations of all D3D11 resources that have device memory: Buffers and Textures (which are either 2D or 3D). It also tracks the number of active Views (DSV, RTV, and SRV, potentially UAV with ES 3.1). A new smart pointer type will wrap the resource deallocation so that the object notifies the manager when ANGLE is done with the resouce. This allows us to track precisely how much GPU memory we think we're using at any point, and will help prevent resource leaks for these object types. It also makes initialization and releasing much more trivial. The base class for a resource uses a template template parameter so that we can use a unique or shared pointer depending on if the object in question needs unique or shared ownership. For some resources (in our case, SRVs are shared between the TextureStorage11 and RenderTarget11 classes, and Textures are shared in many places) we need to have the ability to have shared ownership. Unique ownership is a little bit more efficient so supporting both can be helpful. In this patch RenderTargetView allocation is moved to use the unique smart pointer. BUG=angleproject:2034 Change-Id: Idb1245c24cd66733b8b5ca524c727350b2d2c745 Reviewed-on: https://chromium-review.googlesource.com/503248 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 231c7f56 | 2017-04-26 13:45:37 | Apply clang-format to many files. This cleans up the formatting in many places. BUG=None Change-Id: I6c6652ebc042f1f0ffecced53582d09d66b4f384 Reviewed-on: https://chromium-review.googlesource.com/487884 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 73badc07 | 2017-03-29 19:14:53 | ES31: Implement glDispatchCompute for D3D backend BUG=angleproject:1955 TESTCASE=angle_end2end_tests Change-Id: I69b4df83d67017d39df67753d6d17fc15ececebf Reviewed-on: https://chromium-review.googlesource.com/462067 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 995c2ed2 | 2017-05-15 13:31:45 | Initialize currentValueAttrib->binding in updateCurrentValueAttribs This patch intends to fix a crash issue in the win-clang build of ANGLE by adding the missing currentValueAttrib->binding assignment in StateManager11.cpp::updateCurrentValueAttribs(). In D3D11 all vertex attributes (VertexAttribute and its VertexBinding) should be treated as a whole, so we should always ensure these two parts are availabe. This patch also add ASSERTs before using *translated->attrib and *translated->binding to prevent a TranslatedAttribute object having a null attrib or binding. BUG=chromium:721783, angleproject:1593 Change-Id: Id11d6f1d4c37daabad2265e01ea38eb51046b9cb Reviewed-on: https://chromium-review.googlesource.com/505928 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 62a416d5 | 2017-04-28 09:59:56 | Re-enable the RGB10A2 backbuffer format. BUG=angleproject:1662 Change-Id: I9bd830a3021a0cfa9010c5e58d3a284cc3eeca26 Reviewed-on: https://chromium-review.googlesource.com/490346 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| aa7203ef | 2017-05-03 23:32:29 | Inherit privately from angle::NonCopyable. Make all inheritance from angle::NonCopyable private so the compiler complains about this (admittedly unlikely) code: class Foo: angle::NonCopyable { virtual ~Foo() { ... } }; angle::NonCopyable *p = new Foo; delete p; In the above code ~Foo() is not called, only ~NonCopyable(), because the latter is not virtual. Making it virtual would add overhead to all derived classes which don't already have a virtual method. Also tighten access in NonCopyable, because we can. BUG=angleproject:2026 Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0 Reviewed-on: https://chromium-review.googlesource.com/495352 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 6ba99e3d | 2017-05-03 13:10:46 | Re-generate pre-compiled D3D shaders. BUG=angleproject:1932 Change-Id: I927eb5adc73bcede220ec56a9634783edd735d18 Reviewed-on: https://chromium-review.googlesource.com/494706 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 5416f753 | 2017-03-09 22:02:43 | Clear11 Shader Optimizations and Shader Management Rework - ClearShader made into a class that manages all required shaders and input layouts for clears - ClearShader reuses VS for all clear types. This reduces shader compilation time and memory usage significantly - Use constantBuffer for color/z values instead of VB to decouple VB & VS from clearType and allowing for the same VS to be used for multiple clear types - FL10+ Devices: Generate positions using SV_VertexID in VS to avoid having to bind VB. - FL93 Devices: Use an immutable VB containing only position data (SV_VertexID not supported) - Implement CB cache. Incoming color/Z values checked against cache and CB/cache only updated if there is a mismatch. Significantly reduces the frequency of expensive CB map/rename operations especially in common scenarios where most/all clears use the same color/z values BUG=angleproject:1935 Change-Id: I2015fbdcc135ba08b65dbecbe9c62499c2801037 Reviewed-on: https://chromium-review.googlesource.com/453882 Commit-Queue: Shahmeer Esmail <shahmeer.esmail@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 876429b7 | 2017-04-20 15:46:24 | Update gl2.h and update entry points. Some method signatures were updated. Types like GLclampf and GLvoid were replaced with other equivalents. BUG=angleproject:1309 Change-Id: I05e8e2072c5a063d87ad96a855b907424661e680 Reviewed-on: https://chromium-review.googlesource.com/475011 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 25e297e9 | 2017-04-20 17:01:20 | D3D11: Alias dirty buffer channel bindings. The types for this were a bit disorganized. Clean this up. BUG=angleproject:1635 Change-Id: I669d347697e0c7c5b06ed7165fa0997c375e876e Reviewed-on: https://chromium-review.googlesource.com/483315 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 66c5e619 | 2017-04-25 11:40:03 | TextureD3D: Mark images dirty after deleting the texture storage. When a texture storage is deleted, it copies its mip levels back into images and marks them clean. Marking the images dirty before deleting the texture storage would have no effect. BUG=705865 Change-Id: Ib4c0fc9bea1236fc31963d1b7db814785bc54abc Reviewed-on: https://chromium-review.googlesource.com/486107 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| f81ce4a3 | 2017-04-24 10:49:17 | Refactoring: replace NULL by nullptr for pointers (3rd CL). This CL mainly handles passing/returning NULL to/from a function. BUG=angleproject:2001 Change-Id: I34802f792e710e3d7ff697cbe4701dc1bf5ab009 Reviewed-on: https://chromium-review.googlesource.com/485060 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| d75dd26c | 2017-04-20 17:01:19 | Make ImageSibling inherit from FramebufferAttachment. Only currently Renderbuffers and Textures can be bound with images. This makes the relationship explicit, and also ensures that an image sibling can determine if it's been initialized or not, which is important for the robust resource init extension with Textures and EGLImages. BUG=angleproject:1635 Change-Id: Ie05319cfbfda50f1497cab3f0b9ca64e1bff8955 Reviewed-on: https://chromium-review.googlesource.com/469154 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 151d5de6 | 2017-04-13 09:52:23 | Enable MSAA for texture client buffers Enhancement to the EGL_ANGLE_d3d_texture_client_buffer extension to allow use of a shared D3D texture that can be multi-sampled. BUG=angleproject:1917 Change-Id: Iaf59bbd575a5dfb29345f55b549bc4017bf2d7d0 Reviewed-on: https://chromium-review.googlesource.com/446907 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> |