src/libANGLE/renderer/d3d/ProgramD3D.h


Log

Author Commit Date CI Message
Jamie Madill f9327d33 2015-06-22T13:57:16 D3D11: Optimize ProgramD3D::sortAttributesByLayout. We can use pointer math here, instead of copying values. BUG=angleproject:959 Change-Id: I3b87956224d0846c9011f5d8edb811bc5e4f2b85 Reviewed-on: https://chromium-review.googlesource.com/277119 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 0ca53786 2015-05-07T13:49:39 Fix issues with ProgramGL. * Don't re-create the native GL program every link, some program state should persist between re-linking such as bound attribute locations. * Forward glBindAttribLocation calls to the ProgramImpl, fixes some chromium rendering issues because chromium always binds attribute locations, sometimes with gaps. * Query the real attrib location before inserting it into the list of attribs. It was unsafe to rely on the attrib having the same location as its index into the active attributes. BUG=angleproject:882 Change-Id: If14b4c4c2f5ebcdaa4f7c5a890b9519d6d4e6e43 Reviewed-on: https://chromium-review.googlesource.com/269991 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1377689c 2015-04-28T12:39:06 Cache validate samplers result. This gives ~23% increase in the validation-only draw call perf test. BUG=angleproject:959 Change-Id: I384a5c4fbb1c2cd47483bd7cf4bc1d39447a99bc Reviewed-on: https://chromium-review.googlesource.com/267750 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Gregoire Payen de La Garanderie 68694e99 2015-03-24T14:03:37 Add UBO offset support for D3D11.1. Also fixes the uniform count upper limit in glGetActiveUniformsiv, as well as an assert hit with used but unbound uniform buffer. BUG=angleproject:507 BUG=angleproject:962 Change-Id: I096fe1c9b4f0f398f3a638cd8311278987dfb7dc Reviewed-on: https://chromium-review.googlesource.com/263404 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Gregoire Payen de La Garanderie <Gregory.Payen@imgtec.com>
Geoff Lang 90a09b56 2015-04-01T18:21:24 Revert "Add UBO offset support for D3D11.1." Failed on 32-bit builds. See: https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Builder/builds/24828/steps/compile/logs/stdio angle\src\libangle\validationes.cpp(1461) : error C2220: warning treated as error - no 'object' file generated angle\src\libangle\validationes.cpp(1461) : warning C4018: '<' : signed/unsigned mismatch This reverts commit 381f969315c0c70bacf183e58de7194f42486112. Change-Id: I05f09f19e40046994d34809c5b79095458f56148 Reviewed-on: https://chromium-review.googlesource.com/263474 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Gregoire Payen de La Garanderie 381f9693 2015-03-24T14:03:37 Add UBO offset support for D3D11.1. Also fixes the uniform count upper limit in glGetActiveUniformsiv, as well as an assert hit with used but unbound uniform buffer. BUG=angleproject:507 BUG=angleproject:962 Change-Id: I263b14df41d4e45a67304c1d145646398721cf0a Reviewed-on: https://chromium-review.googlesource.com/263412 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Gregoire Payen de La Garanderie <Gregory.Payen@imgtec.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Gregoire Payen de La Garanderie 3917f578 2015-04-01T15:17:21 Revert "Add UBO offset support for D3D11.1." Was ignoring the uniform block bindings. This reverts commit 7159ea6778eb73c233736cc2fa59ae9177b75e4b. Change-Id: Ie7d2b40d3fb2adedd309f1162fb6fd33ab0b4c3c Reviewed-on: https://chromium-review.googlesource.com/263420 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill f0d10f89 2015-03-31T12:56:52 Replace non-copyable macro with a helper class. This class provides a simpler scheme for blocking default copy and assignment operators. It also reduces the amount of code needed since it's inherited to child classes. This also fixes the conflict between our macro and the same-named macro in Chromium code. BUG=angleproject:956 Change-Id: If0dc72aa3f63fbc7b8fa34907418821c64c39e2f Reviewed-on: https://chromium-review.googlesource.com/263257 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Gregoire Payen de La Garanderie 7159ea67 2015-03-24T14:03:37 Add UBO offset support for D3D11.1. Also fixes the uniform count upper limit in glGetActiveUniformsiv. BUG=angleproject:507 Change-Id: Icfc90ed64cf94b1bab2d4cc93a8fb5e11b28d666 Reviewed-on: https://chromium-review.googlesource.com/261874 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 7a26a1ad 2015-03-25T12:29:06 Cache std::vectors in ProgramD3D to avoid allocations during draw calls. BUG=angleproject:959 Change-Id: Ie08e68ae27372a97bd118e61478201b0d3dad955 Reviewed-on: https://chromium-review.googlesource.com/262337 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nicolas Capens <capn@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Arun Patole 44efa0b8 2015-03-04T17:11:05 Conditionally enable IEEE strictness for isnan() ANGLE's ESSL3 built-in function isnan() implementation just uses HLSL intrinsic function isnan(). For HLSL intrinsic function isnan() to work properly, IEEE strictness needs to be enabled for D3D compiler. This change detects use of isnan() in shaders and passes compiler flag D3DCOMPILE_IEEE_STRICTNESS whenever isnan is used in shaders. This change also moves existing workarounds in D3DWorkaroundType to D3DCompilerWorkarounds. BUG=angle:927 TEST= dEQP tests dEQP-GLES3.functional.shaders.builtin_functions.common.isnan.* Change-Id: I1ce5b1a7a825fdd720a37dc9aeb71320e55162d9 Reviewed-on: https://chromium-review.googlesource.com/255834 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Tested-by: Jamie Madill <jmadill@chromium.org>
Daniel Bratell 73941deb 2015-02-25T14:34:49 Disable the HLSL code in Angle if it is not being used. We're only using the HLSL code in Windows so it's not necessary to compile and distribute it on other platforms. This adds a defined ANGLE_ENABLE_HLSL that can be checked in files that are used by non-HLSL code as well. Mostly the HLSL code is just not include by the build system. Details of the space savings (heavily truncated) Total change: -165717 bytes =========================== -606 - Source: angle/src/common/utilities.cpp -627 - Source: angle/src/compiler/translator/FlagStd140Structs.cpp -695 - Source: /usr/include/c++/4.8/bits/stl_algo.h -710 - Source: angle/src/compiler/translator/TranslatorHLSL.cpp -713 - Source: angle/src/compiler/translator/IntermNode.h -863 - Source: /usr/include/c++/4.8/bits/stl_map.h -935 - Source: angle/src/compiler/translator/blocklayout.cpp -1515 - Source: angle/src/compiler/translator/BuiltInFunctionEmulator.cpp -1655 - Source: angle/src/compiler/translator/UnfoldShortCircuit.cpp -2375 - Source: /usr/include/c++/4.8/bits/vector.tcc -3135 - Source: angle/src/compiler/translator/RewriteElseBlocks.cpp -4656 - Source: angle/src/compiler/translator/UtilsHLSL.cpp -5265 - Source: angle/src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp -6505 - Source: /usr/include/c++/4.8/bits/stl_tree.h -11480 - Source: angle/src/compiler/translator/UniformHLSL.cpp -13580 - Source: angle/src/compiler/translator/StructureHLSL.cpp -18964 - Source: ?? (constant strings and a few vtbls) -89332 - Source: angle/src/compiler/translator/OutputHLSL.cpp Change-Id: I23ccc98abd0a21f847dd34f9482800b3ba679d56 Reviewed-on: https://chromium-review.googlesource.com/251528 Tested-by: bratell at Opera <bratell@opera.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9236b418 2015-02-02T16:51:52 Add generic Impl casting helper methods. GetAs and GetImplAs are template helpers that can replace all of our custom "makeTextureD3D", etc methods. This will help save code across different back-ends. Change-Id: Ib3215c005bfac5a819c5d8f7d60a73a725241332 Reviewed-on: https://chromium-review.googlesource.com/245390 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin e6664f06 2015-01-09T16:22:24 Added PointSprites Support for renderers that do not support Geometry Shaders Change-Id: Iae9ac5f8fbba68dba5e49ccda7bb7eebb05c8e9a Reviewed-on: https://chromium-review.googlesource.com/240450 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 359ef269 2015-01-05T14:42:29 Rename ShaderExecutable to ShaderExecutableD3D and move it to the D3D folder. BUG=angle:681 Change-Id: I097d6591be4e873c9a6f210cc91e3f4eb60f036b Reviewed-on: https://chromium-review.googlesource.com/238473 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 97399235 2014-12-23T12:31:15 Enable conditional InfoLog for HLSL link failures. We don't always have an InfoLog available for dynamic shaders, but we can still capture data in some cases for default shaders. Change-Id: Iccd022f24d5c2b8922e9254580705675cd4e405f Reviewed-on: https://chromium-review.googlesource.com/237328 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Geoff Lang 492a7e43 2014-11-05T13:27:06 Encapulate the ESSL compiler into a GL object that is per-context. * Allows for multiple contexts have to have different client versions, caps and extensions without causing shader compilation failures. BUG=angle:823 Change-Id: I523679e90be031b0b7fa385d46d6839b1cf3029f Reviewed-on: https://chromium-review.googlesource.com/227710 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 437d2662 2014-12-05T14:23:35 Move some D3D-specific stuff into ProgramD3D. BUG=angle:773 Change-Id: I48b42e7a3e82a43d3dde16a8d1016d28280eae39 Reviewed-on: https://chromium-review.googlesource.com/232968 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2db1fbbc 2014-12-03T10:58:55 Make compile optimization level hidden outside D3D. BUG=angle:773 Change-Id: Ia6f16d2e4644c02d94cf99b73f70d05486886925 Reviewed-on: https://chromium-review.googlesource.com/232696 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Geoff Lang 7dd2e10d 2014-11-10T15:19:26 Merge the ProgramBinary class into Program. BUG=angle:731 Change-Id: I2ee97155841dc62f04bb71c1f2035d210fd3883c Reviewed-on: https://chromium-review.googlesource.com/232694 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 21329414 2014-12-02T20:50:30 Revert "Merge the ProgramBinary class into Program." Issues appeared on the FYI waterfall, content_gl_tests hangs. This reverts commit 2195a6d6032883ed05468d5ecd019e7cb9a27bce. Change-Id: I9fe1a53cf40887ae5a98fd77b4872f41085fcea7 Reviewed-on: https://chromium-review.googlesource.com/232386 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2195a6d6 2014-11-10T15:19:26 Merge the ProgramBinary class into Program. BUG=angle:731 Change-Id: Ia0a356c0684f3a3576c71dfd04b00874318dd084 Reviewed-on: https://chromium-review.googlesource.com/228701 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0a73dd85 2014-11-19T16:18:08 Fix include guards. BUG=angle:733 Change-Id: I08b2c11c4831f1161c178c1842b10e807185aced Reviewed-on: https://chromium-review.googlesource.com/230831 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2b5420c0 2014-11-19T14:20:15 Merge libGLESv2 and libEGL classes into libANGLE. BUG=angle:733 Change-Id: Ic491c971411fe82c56cd97c5c8325ac14ec218df Reviewed-on: https://chromium-review.googlesource.com/230830 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>