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

3967 Коммитов

Автор SHA1 Сообщение Дата
Gregoire Payen de La Garanderie 381f969315 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>
2015-04-01 17:33:49 +00:00
Geoff Lang eb62916960 Enable the OpenGL renderer in some basic end2end tests.
Change-Id: I5c224fe779aed90332d14e463abedf8926516156
Reviewed-on: https://chromium-review.googlesource.com/263337
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2015-04-01 15:51:50 +00:00
Geoff Lang 60f8119dae Name all windows created by the WGL backend.
When running from within the chrome test harness, calls to CreateWindow*
in debug builds would return null when the title was an empty string.

Change-Id: I0d5dfb1eb824ff2a1470e7d66d850602e73988a0
Reviewed-on: https://chromium-review.googlesource.com/263430
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-04-01 15:30:34 +00:00
Geoff Lang 1a506957a8 Rename SurfaceWGL to WindowSurfaceWGL.
BUG=angleproject:890

Change-Id: I72f28583e3903b273578abb6ed487c0a8d696746
Reviewed-on: https://chromium-review.googlesource.com/261359
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-04-01 15:29:14 +00:00
Geoff Lang 1aca922a55 Track more information at the egl::Surface level.
Many of the members of SurfaceImpl could be stored in egl::Surface
instead.  This makes SurfaceImpl a pure interface and makes Surface
constructors much simpler.

BUG=angleproject:795

Change-Id: Ifa797b4bef84afe66f9fb3f3a6be260f726ca55c
Reviewed-on: https://chromium-review.googlesource.com/261358
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-04-01 15:28:47 +00:00
Gregoire Payen de La Garanderie 3917f578c7 Revert "Add UBO offset support for D3D11.1."
Was ignoring the uniform block bindings.

This reverts commit 7159ea6778.

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>
2015-04-01 14:20:22 +00:00
Jamie Madill a79fac985f Fix uninitialized member in BufferD3D.
BUG=angleproject:956

Change-Id: I853f3cf3171b85143e490ef9678aae7d38de0b1f
Reviewed-on: https://chromium-review.googlesource.com/262778
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
2015-04-01 13:38:53 +00:00
Jamie Madill 514df7f704 Remove uses of std::unique_ptr in perftests.
This is disallowed in Chromium because it isn't currently portable.
We can put it back later if the rules change.

BUG=angleproject:956

Change-Id: I5be28590f494719b8cc995739dde26726283fced
Reviewed-on: https://chromium-review.googlesource.com/262777
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
2015-04-01 13:38:36 +00:00
Jamie Madill 2d1eea098f Remove shared_utils.h, use angle_common instead.
*re-land with fix for Chromium compile*

This saves us from needing to replicate the same code in two places.

BUG=angleproject:956

Change-Id: I68dffee715df03bd25685e3ed5c0506ffc41c3b9
Reviewed-on: https://chromium-review.googlesource.com/263258
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
2015-04-01 13:38:15 +00:00
Jamie Madill f0d10f8967 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>
2015-04-01 13:38:13 +00:00
Olli Etuaho e8e530bade Implement drawRangeElements
Implement drawRangeElements simply by calling drawElements internally. The
start and end parameters passed to the function will be checked against results
from index validation and an error is generated if indices fall outside the
claimed range.

Most dEQP-GLES3.functional.draw.draw_range_elements.* tests pass after this
change. The remaining failures seem to be related to instanced attributes.

BUG=angleproject:957
TEST=dEQP-GLES3.functional.draw.*

Change-Id: Id3923eb8114461b441e593357bc49babfd6b5c15
Reviewed-on: https://chromium-review.googlesource.com/262420
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-04-01 08:11:21 +00:00
Geoff Lang 4b07348bb6 Revert "Enable the OpenGL renderer in some basic end2end tests."
Failures on Win 7/8 Debug NVIDIA bots.

This reverts commit 1cb0a213a0.

Change-Id: Ifb6b538e1b784a78c562a4d43d907bd0cdd59abf
Reviewed-on: https://chromium-review.googlesource.com/263310
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 21:17:37 +00:00
Geoff Lang 1cb0a213a0 Enable the OpenGL renderer in some basic end2end tests.
Change-Id: Iee9d9837c6021ad0c9d4f5749402c5d183e90f2a
Reviewed-on: https://chromium-review.googlesource.com/263269
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 19:48:09 +00:00
Geoff Lang 167dceb3c0 Check for the extension before creating compressed textures in SwizzleTest.
Change-Id: Ia561fc7bb0262ab6974517d9796e4828db5b511c
Reviewed-on: https://chromium-review.googlesource.com/263251
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 16:55:09 +00:00
Geoff Lang 35d315c398 Disable UNIMPLEMENTED in ProgramGL::validateSamplers.
Removing this allows many angle end2end tests to run without hitting any
UNIMPLEMENTEDs.

BUG=angleproject:882

Change-Id: Idb55fae7b6fc7b23bc85d0bf376499f28669d771
Reviewed-on: https://chromium-review.googlesource.com/263250
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 16:52:48 +00:00
Jamie Madill 61a5b33878 Revert "Remove shared_utils.h, use angle_common instead."
Causing a build conflig with Chromium's DISALLOW_COPY_AND_ASSIGN.

http://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Builder/builds/24738

This reverts commit 3ad467df28.

Change-Id: I0cf13e3bc3af90303a123813052cced0ba086515
Reviewed-on: https://chromium-review.googlesource.com/263159
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-31 15:35:21 +00:00
Geoff Lang 7afd461709 Disable vsync for perf tests and don't report the total time.
BUG=angleproject:955

Change-Id: I8223349622531c8fff7c7cd45bdf4754d7619ae2
Reviewed-on: https://chromium-review.googlesource.com/263062
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2015-03-31 15:30:50 +00:00
Olli Etuaho fc7cfd1cf5 Fix array function parameter syntax in HLSL equality function
The fact that passing shaders to the platform compiler is deferred until
linking is performed allowed this bug to pass undetected in earlier manual
testing.

TEST=WebGL conformance tests
BUG=angleproject:941

Change-Id: Ic12b5d0c5547057551df90086453e897a161d559
Reviewed-on: https://chromium-review.googlesource.com/263221
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Nicolas Capens <capn@chromium.org>
2015-03-31 15:26:43 +00:00
Geoff Lang 6d5463bda1 Always sync the texture sampler state.
The sampler state may have changed even if the texture is already bound.

BUG=angleproject:884

Change-Id: I591f493099397bb07608096cf30ff46ed5090224
Reviewed-on: https://chromium-review.googlesource.com/263147
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 15:18:03 +00:00
Jamie Madill 3ad467df28 Remove shared_utils.h, use angle_common instead.
This saves us from needing to replicate the same code in two places.

BUG=angleproject:956

Change-Id: Ibc80997eec184d0d5aa9c6c076c9d4507fbf8caa
Reviewed-on: https://chromium-review.googlesource.com/262776
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-31 15:16:26 +00:00
Jamie Madill 9bd4dbef19 Split ANGLEPerfTest into a Render and basic test.
The basic test we can use for perf testing internal classes with
mocks. The render tests are more specific to doing draw calls.

BUG=angleproject:956

Change-Id: Iade393facc30c8d7288b1b94a159ce3afe993021
Reviewed-on: https://chromium-review.googlesource.com/262775
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-31 15:16:14 +00:00
Jamie Madill fd1bf4e6fc Add an BufferFactoryD3D class to help mocking.
This D3D-only class has one method, used to generate the D3D
IndexBuffer/VertexBuffer. This can help us mock up
IndexDataManager.

At a later point we can refactor the VertexFormat queries
from Renderer into a Caps struct that mirrors our Texure
Caps.

BUG=angleproject:956

Change-Id: Id8b1220a763873ee871ce92365bbee03633789c7
Reviewed-on: https://chromium-review.googlesource.com/262774
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-31 15:16:02 +00:00
Geoff Lang 7dcd2c7b42 Add stubs for EGL pixmap surface creation.
BUG=angleproject:795

Change-Id: I76b44e837eb6919f9d3c1eb56c2d3af84bc5ab09
Reviewed-on: https://chromium-review.googlesource.com/260943
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-31 14:44:59 +00:00
Olli Etuaho 3d5f268779 Remove unused streamOffset from IndexRangeCache
This value is now redundant - it is always the same as regular offset.

TEST=angle_end2end_tests
BUG=angleproject:956

Change-Id: If4b6c8bcbebf24fbf84723fe081fd058916cc504
Reviewed-on: https://chromium-review.googlesource.com/262423
Reviewed-by: Nicolas Capens <capn@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-03-31 08:58:41 +00:00
Olli Etuaho ff5e7374ae Recompute stream offset instead of fetching a cached value
Recomputing the stream offset is relatively cheap now after recent changes.
Remove caching it to make the code less complex.

TEST=angle_end2end_tests
BUG=angleproject:956

Change-Id: Icb9cc4e4ffd685a78b7f8a45958992a471ebb0f5
Reviewed-on: https://chromium-review.googlesource.com/262422
Reviewed-by: Nicolas Capens <capn@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-03-31 08:58:12 +00:00
Jamie Madill 5f3f372abf Remove unused tests folder.
This is now located in src/ and Chromium no longer refers to it.

BUG=None

Change-Id: I64fd302629ca28aa367d8714bfbac2657774fc3b
Reviewed-on: https://chromium-review.googlesource.com/262920
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2015-03-30 20:45:52 +00:00
Maks Naumov f1bd2d900c Fix maxVertexUniformComponents initialization in GenerateCaps()
Change-Id: Ie10398e148dc0b88e5d7a5330307dc49553c6665
Reviewed-on: https://chromium-review.googlesource.com/263092
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2015-03-30 20:36:21 +00:00
Geoff Lang 5ead927f9f Don't use a helper function to get the vertex attributes.
The overhead of the function call ended up being a hot spot for draw calls
since the attributes are iterated over many times in VertexDataManager.

BUG=angleproject:959

Change-Id: I9bbfcbd115661ad629db9ed93d683cd8d0dc9a78
Reviewed-on: https://chromium-review.googlesource.com/263102
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2015-03-30 20:28:25 +00:00
Geoff Lang 5b97287ea0 Revert "Don't use a helper function to get the vertex attributes."
Caused a warning on 32-bit builds.

This reverts commit 20d78d241b.

Change-Id: I4d61024fb29978e7f1bacdd693fc6f1bc00bd0cc
Reviewed-on: https://chromium-review.googlesource.com/262918
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-30 19:53:14 +00:00
Gregoire Payen de La Garanderie 7159ea6778 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>
2015-03-30 19:49:13 +00:00
Olli Etuaho 69c11b5dfc Move validation from Intermediate::addUnaryMath to ParseContext
Intermediate should only have logic for creating node objects, validation
of parameter types belongs in ParseContext.

BUG=angleproject:952
TEST=angle_unittests, WebGL conformance tests

Change-Id: Ie90697641fabb2a837ccc4571a93616d63ea64e6
Reviewed-on: https://chromium-review.googlesource.com/262414
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
2015-03-30 15:27:15 +00:00
Geoff Lang 7a26a1ad02 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>
2015-03-30 14:55:26 +00:00
Geoff Lang 20d78d241b Don't use a helper function to get the vertex attributes.
The overhead of the function call ended up being a hot spot for draw calls
since the attributes are iterated over many times in VertexDataManager.

BUG=angleproject:959

Change-Id: I6c11d4a5a22c314c69b3403dfdeb2d950b1c7639
Reviewed-on: https://chromium-review.googlesource.com/262336
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-30 14:05:46 +00:00
Geoff Lang 45795dbe14 Inline commonly used Error methods and add move operators.
The function call overhead of the constructors and assignement operators
ended up being a hotspot even though the functions didn't do any
significant work.

BUG=angleproject:959

Change-Id: I96769879dabdbba7a222f98d87c5be0a829cb7dd
Reviewed-on: https://chromium-review.googlesource.com/262335
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-30 14:05:17 +00:00
Olli Etuaho 11ffe1b879 Micro-optimize math in IndexDataManager
Use bitwise operations instead of division, which is expensive on multiple CPU
architectures.

BUG=angleproject:956
TEST=angle_end2end_tests

Change-Id: I57ab540d447c03dae5a96bafb4975fc37e310261
Reviewed-on: https://chromium-review.googlesource.com/262181
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-30 09:23:33 +00:00
Olli Etuaho 5e5c826c8c Fix float-int conversion return type precision tracking
Float-int conversion functions are defined to always return highp values.

BUG=angleproject:865
TEST=angle_unittests

Change-Id: Idf243b483f7b5edfcb54de2755af11e17c3756d3
Reviewed-on: https://chromium-review.googlesource.com/262413
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
2015-03-29 09:15:08 +00:00
Geoff Lang cd69f1c9c0 Implement RenderbufferGL.
BUG=angleproject:886

Change-Id: I7480943d678b2cdf6e997c3f8316acdef32f5f0d
Reviewed-on: https://chromium-review.googlesource.com/260889
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-27 19:04:42 +00:00
Geoff Lang a08e1bd064 Split Renderbuffer::setStorage into two functions to match the API.
BUG=angleproject:886

Change-Id: I74375351339464b450c2f058adbeed7a1ba18cdd
Reviewed-on: https://chromium-review.googlesource.com/262125
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-27 19:04:26 +00:00
Geoff Lang 4ad1709fed Implement FramebufferGL.
BUG=angleproject:885

Change-Id: Ifb5818f185236c671cd7f20ed352edb887b49675
Reviewed-on: https://chromium-review.googlesource.com/258420
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-27 19:04:04 +00:00
Austin Kinross 0728514a42 Fix mipmapped GL_ALPHA UBYTE textures on 9_3
Change-Id: I59020f8152d47091533d69d20fe5ff56e5f96bc1
Reviewed-on: https://chromium-review.googlesource.com/262551
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Austin Kinross <aukinros@microsoft.com>
2015-03-27 16:49:31 +00:00
Olli Etuaho 31f8f4f5ee Use switch/case in GetTypeInfo instead of a map lookup
This should be faster, and also matches the C++ style rules better: static
variables should not have complex class types.

BUG=angleproject:956
TEST=angle_end2end_tests, WebGL conformance tests

Change-Id: I628db95febab309e241be216e2998305525da76e
Reviewed-on: https://chromium-review.googlesource.com/262421
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2015-03-27 07:49:08 +00:00
Geoff Lang 1ea584c562 Revert "Implement EXT_discard_framebuffer in D3D11 renderer"
Causes failures in video related WebGL tests.  Either there is a bug in the implementation or how chrome is using it.

This reverts commit b13daa8f79.

Change-Id: Ic0d74840c664bf4de18d85cc3ff7f7153936d9b0
Reviewed-on: https://chromium-review.googlesource.com/262715
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
2015-03-26 21:09:16 +00:00
Jamie Madill e4ea202af6 Revert "Compile the D3D11 VS and PS on separate threads at GL link time"
Causing a high-volume crashe in Chrome.

This reverts commit 434953e200.

BUG=470695

Change-Id: I2062c706ab6ca6b4c3117685df67c33572518da5
Reviewed-on: https://chromium-review.googlesource.com/262704
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-26 20:35:56 +00:00
Jacek Caban e842eabd0d Fixed compilation with mingw.
Change-Id: I027cedc383efbd215e55a7ddf4e41eb1c368a1ae
Reviewed-on: https://chromium-review.googlesource.com/262590
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jacek Caban <cjacek@gmail.com>
2015-03-26 17:01:10 +00:00
Austin Kinross b13daa8f79 Implement EXT_discard_framebuffer in D3D11 renderer
Change-Id: I0e39a196796813203c841c46aa2a6b89957f6051
Reviewed-on: https://chromium-review.googlesource.com/261355
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
2015-03-26 16:34:43 +00:00
Olli Etuaho ecbfc5c693 Fix formatting in compiler tests
Remove extraneous semicolons and fix indentation in a couple of places.

TEST=angle_unittests

Change-Id: Iaa51eb50990c0435f41dfd346ec161216cd8d372
Reviewed-on: https://chromium-review.googlesource.com/261823
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
2015-03-26 14:58:00 +00:00
Olli Etuaho ff69900545 Disallow operations on structs containing samplers
ESSL 1.00 spec section 5.9 says that equality operators don't operate on
structs containing sampler types. Section 5.7 also suggests this. ESSL
3.00 doesn't have a similar restriction.

ESSL 1.00 spec section 4.1.7 says that structs containing samplers can't
be used as l-values. This is interpreted to apply also in the case of
ESSL 3.00, which similarly disallows samplers as l-values, but doesn't
explicitly mention structs.

BUG=angleproject:954
TEST=angle_unittests, WebGL conformance tests

Change-Id: I73f74962a192e8d9449990ffa5f3d8c851491601
Reviewed-on: https://chromium-review.googlesource.com/261822
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
2015-03-26 14:57:42 +00:00
Olli Etuaho ae37a5c831 Support equality between structs containing arrays in HLSL output
This requires sorting all equality functions together so that struct
equality functions can have dependencies on array equality functions, but
support for array equality functions that have dependencies on struct
equality functions is also maintained.

There's no automated test coverage for this specifically. The change was
tested by manually inspecting shader output and ensuring that there were
no test regressions in tests listed below.

TEST=dEQP-GLES3.functional.shaders.*
BUG=angleproject:954

Change-Id: If7199ab2446804afae50f103bb625101172882b9
Reviewed-on: https://chromium-review.googlesource.com/261550
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-03-25 16:09:18 +00:00
Olli Etuaho 7fb4955da9 Support array equality operator in HLSL output
This requires adding functions to the shader source that can do the
comparison for a specific array size.

There's no automated test coverage specifically for this functionality,
since all deqp tests that cover this also require array constructors to
be supported. The change has been tested by manually inspecting shader
output. No regressions were seen in automated tests listed below.

TEST=dEQP-GLES3.functional.shaders.*, angle_unittests
BUG=angleproject:941

Change-Id: Ie2ca7c016a3f0bcb3392a96d6d20d6f803d28bf0
Reviewed-on: https://chromium-review.googlesource.com/261530
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-03-25 15:48:54 +00:00
Olli Etuaho 8fcd4e0ce5 Fix redundant index validation on the D3D9 backend
Make sure that the computed index range is added to the cache of the main
buffer object, instead of just to the static buffer object created for the
buffer object. This applies to the code path used for D3D9. This way the
front-end code in ValidateDrawElements gets the index range from the cache
instead of having to iterate over all the indices used on every draw call.

BUG=chromium:461274
TEST=WebGL conformance tests, angle_end2end_tests

Change-Id: I07cf493d2771dab8e76d69bafda7ac49e5a04808
Reviewed-on: https://chromium-review.googlesource.com/262180
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
2015-03-25 15:13:22 +00:00