src/libANGLE/renderer/gl/StateManagerGL.h


Log

Author Commit Date CI Message
Dian Xiang ff2ab571 2015-10-05T16:48:06 Using dirty bits notification for blend state BUG=angleproject:1161 Dirty bit notifications are used in GL for state tracking, but not D3D. Before, D3D would use memcmp to check a change in state for every call. This showed up as a hot spot in the perf test runs. Hence, switching D3D over to the dirty bit system similar to GL backend will help. Change-Id: I482edc852f1dcc888af3038ff3a61916496a02bc Reviewed-on: https://chromium-review.googlesource.com/305295 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Dian Xiang <dianx@google.com> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 1a683460 2015-09-29T15:09:59 Implement TransformFeedbackGL. Reland with supression for TransformFeedbackTest.MultiContext on Linux AMD. BUG=angleproject:889 Change-Id: I6f2a2e856dacf16308de222dd0936bedbb3b175c Reviewed-on: https://chromium-review.googlesource.com/307871 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang a9ca8e20 2015-10-22T14:34:20 Revert "Implement TransformFeedbackGL." Failing on AMD Linux bots. This reverts commit a9c5288192f90ebf03b0d26d86964b4fbce74bcb. Change-Id: I2a2db8c3d96c4b927d7d784486c6df772ae63084 Reviewed-on: https://chromium-review.googlesource.com/308130 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang a9c52881 2015-09-29T15:09:59 Implement TransformFeedbackGL. BUG=angleproject:889 Change-Id: I347ac21cfd0a56654a75fb41ac24c6c67ede3a05 Reviewed-on: https://chromium-review.googlesource.com/302351 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f0aa8429 2015-09-29T15:08:34 Implement QueryGL. Passes all tests in: * dEQP-GLES3.functional.occlusion_query * angle_end2end_tests BUG=angleproject:887 Change-Id: I643ab4c28cb545de9e7b0e1740e3fd8e2aa9d3d9 Reviewed-on: https://chromium-review.googlesource.com/302338 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tryjob-Request: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5d124a69 2015-09-15T13:03:27 Support UBOs in RendererGL and ProgramGL. Reland: fix compile warnings on Windows. BUG=angleproject:882 BUG=angleproject:883 Change-Id: If4844d50d43ff9b765f64606e8f08d65a1afd9a4 Reviewed-on: https://chromium-review.googlesource.com/303431 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang cf2dbd91 2015-10-01T15:48:22 Revert "Support UBOs in RendererGL and ProgramGL." Compile error. This reverts commit 97d82b724b71be464f2aff377f056cade44fca94. Change-Id: I71ae10cb01b8ded0297eaf4742fb1098ce02a9bb Reviewed-on: https://chromium-review.googlesource.com/303303 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 97d82b72 2015-09-15T13:03:27 Support UBOs in RendererGL and ProgramGL. BUG=angleproject:882 BUG=angleproject:883 Change-Id: I36f8ef42d87e289658a6ba4899380bc72b9bcebf Reviewed-on: https://chromium-review.googlesource.com/299871 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang afd7f0a8 2015-09-09T15:33:31 Explicitly enable framebuffer SRGB blending in StateManagerGL. In DesktopGL, SRGB blending must be enabled or linear blending will be used. reland: Work around issues on AMD drivers where SRGB blending would be used on clears of linear attachments. Passes all dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.* tests (1106 new passing tests). BUG=angleproject:883 BUG=angleproject:885 Change-Id: I974a55fe3acc77ac77e93f19c83ee3b76f784df2 Reviewed-on: https://chromium-review.googlesource.com/302336 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 543e7ff7 2015-09-29T14:15:15 Revert "Explicitly enable framebuffer SRGB blending in StateManagerGL." More compile errors on mac. This reverts commit 056fae4a01db306b8f9c1e57374e18ebffbdf8eb. Change-Id: I579b9e50ded7240be4f488a48588a89ecb4bea44 Reviewed-on: https://chromium-review.googlesource.com/302571 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 056fae4a 2015-09-09T15:33:31 Explicitly enable framebuffer SRGB blending in StateManagerGL. In DesktopGL, SRGB blending must be enabled or linear blending will be used. reland: Work around issues on AMD drivers where SRGB blending would be used on clears of linear attachments. Passes all dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.* tests (1106 new passing tests). BUG=angleproject:883 BUG=angleproject:885 Change-Id: I6c2b4552c571707a8d8d80d3573bcb38797c3929 Reviewed-on: https://chromium-review.googlesource.com/302791 Tryjob-Request: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ec3123bb 2015-09-28T19:21:01 Revert "Explicitly enable framebuffer SRGB blending in StateManagerGL." Compilation failure on mac and linux. This reverts commit e19d7f90355f02ac7a7cd0a2ac130e0859cd3cc7. Change-Id: I638c3ffebb8c7ad0e3fe2e1e65d6212487bfc6ae Reviewed-on: https://chromium-review.googlesource.com/302790 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang e19d7f90 2015-09-09T15:33:31 Explicitly enable framebuffer SRGB blending in StateManagerGL. In DesktopGL, SRGB blending must be enabled or linear blending will be used. reland: Work around issues on AMD drivers where SRGB blending would be used on clears of linear attachments. Passes all dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.* tests (1106 new passing tests). BUG=angleproject:883 BUG=angleproject:885 Change-Id: I03fbb0910ce414552ba841099a177446d0ace7b6 Reviewed-on: https://chromium-review.googlesource.com/301702 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0af0b81d 2015-09-23T13:56:25 Add a SamplerImpl object and implement it for the GL backend. Passes all tests in dEQP-GLES3.functional.samplers BUG=angleproject:1162 Change-Id: I7713031a677aac2b41889a6b4297ab512e184863 Reviewed-on: https://chromium-review.googlesource.com/301582 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 260efc21 2015-09-23T16:45:54 Revert "Explicitly enable framebuffer SRGB blending in StateManagerGL." Causing failures on AMD OpenGL drivers for sRGB clears. This reverts commit 04b89c975b3c7f6b86191d0255136a8a798f0b66. Change-Id: I51ee856d1c4d37882e5b1d1926415c398fa7ff5c Reviewed-on: https://chromium-review.googlesource.com/301721 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 04b89c97 2015-09-09T15:33:31 Explicitly enable framebuffer SRGB blending in StateManagerGL. In DesktopGL, SRGB blending must be enabled or linear blending will be used. Passes all dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.* tests (1106 new passing tests). BUG=angleproject:883 BUG=angleproject:885 Change-Id: I0dfb744faa811f10be47c5bd8295b368baf3b04b Reviewed-on: https://chromium-review.googlesource.com/298620 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang add8d031 2015-09-09T16:11:58 Don't sync the multisample state in StateManagerGL. GL_MULTISAMPLE is not a real state in GLES but existed for the D3D renderers to sync the rasterizer state more easily. Instead of syncing it in StateManagerGL, rely on the default value of GL_TRUE in Desktop GL. All tests in dEQP-GLES3.functional.multisample.* now pass. BUG=angleproject:885 BUG=angleproject:883 Change-Id: Idbe5fbc1b43a6e66008fe87da41601277dbe7311 Reviewed-on: https://chromium-review.googlesource.com/298441 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 7bd13082 2015-09-08T13:10:10 Set seamless cubemap filtering in StateManagerGL. Cubemap filtering is supposed to be seamless for ES3+ contexts. Fixes 298 failures in dEQP-GLES3.functional.texture, mostly in dEQP-GLES3.functional.texture.filtering and dEQP-GLES3.functional.texture.shadow. BUG=angleproject:986 BUG=angleproject:1149 Change-Id: I6054365086bb3b9d9b085c260f88e2c43eb75bfe Reviewed-on: https://chromium-review.googlesource.com/296966 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang be184c7d 2015-09-02T11:07:39 Support syncing pixel pack and unpack buffers in StateManagerGL. BUG=angleproject:1149 Change-Id: I641693e67bf35733a591107fdd3812d0badd17f2 Reviewed-on: https://chromium-review.googlesource.com/297083 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3cf12ce6 2015-08-27T14:40:48 Implement the instanced draw calls in RendererGL. BUG=angleproject:1136 Change-Id: I1167365618bdc3ca37ac0f4c60809de32c7a9d78 Reviewed-on: https://chromium-review.googlesource.com/295733 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5b49bb83 2015-08-31T18:48:50 Revert "Implement the instanced draw calls in RendererGL." Causing crashes in some dEQP tests. This reverts commit c1948415e52dbaefb0d3176b75a58a7b86bd091a. Change-Id: Idedb32484b4f2b09090346bc4228fe536190a621 Reviewed-on: https://chromium-review.googlesource.com/296440 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang c1948415 2015-08-27T14:40:48 Implement the instanced draw calls in RendererGL. BUG=angleproject:1136 Change-Id: Id04e357b97c04b3843b25827f705fd802e6a68e3 Reviewed-on: https://chromium-review.googlesource.com/295233 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang bc0b1d47 2015-08-21T17:00:03 Track local dirty state in StateManagerGL. Make the state setting functions of StateManagerGL public. BUG=angleproject:1113 Change-Id: Ic435c06ece24064a2f2403119fa30309aba37608 Reviewed-on: https://chromium-review.googlesource.com/295240 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1b94d432 2015-08-07T13:23:23 Implement dirty bits for RendererGL's basic state. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: I72beaf7e178e042440337fbb8b9669638c5ad016 Reviewed-on: https://chromium-review.googlesource.com/289558 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill c64d993d 2015-07-27T10:55:25 StateManagerGL: Use an array instead of map for FBOs. The std::map became a significant bottleneck for draw calls. BUG=angleproject:959 Change-Id: I28176d1474fe5cff05018f89878ea8b2a3e3f9f1 Reviewed-on: https://chromium-review.googlesource.com/288702 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 5ec53c82 2015-06-05T16:32:14 Handle the remaining pixel unpack parameters in TextureGL. BUG=angleproject:884 Change-Id: I9e248e623f3b342f878bf65c9686768b90cf5ed8 Reviewed-on: https://chromium-review.googlesource.com/275692 Tested-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Geoff Lang afce829a 2015-06-05T16:25:16 Sync pixel pack state before glReadPixels in FramebufferGL. Fixes conformance/reading/read-pixels-pack-alignment.html BUG=angleproject:885 Change-Id: I48f1598d9a67f3980d2ff86307eb107ec7506776 Reviewed-on: https://chromium-review.googlesource.com/275691 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 294cad9d 2015-05-26T15:11:23 When applying vertex array objects, update the currently applied index buffer. When binding a vertex array object, it was not changing the tracked index buffer binding. This was causing the buffer bindings to sometimes not be updated between index and non-indexed draw calls. Fixes: * Intermittent crashes in chromium startup. * conformance/rendering/many-draw-calls.html * conformance/rendering/framebuffer-switch.html * conformance/attribs/gl-bindAttribLocation-aliasing.html * conformance/attribs/gl-vertex-attrib-render.html * conformance/buffers/index-validation-verifies-too-many-indices.html BUG=angleproject:883 Change-Id: I34ed1ebc65b339329c0f9ab9c28a392f552ed3d8 Reviewed-on: https://chromium-review.googlesource.com/273300 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 27464aa9 2015-05-01T11:07:46 Sync the generic vertex attribute data. BUG=angleproject:883 Change-Id: If5616bf24c1ac5477ae80cf1d25efa70b62edea1 Reviewed-on: https://chromium-review.googlesource.com/268750 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1eb708e1 2015-05-04T14:58:23 Clear cached state when deleting GL objects. Change-Id: I84eac9b3796858e5e19e26851ad83baa1f9b6af2 Reviewed-on: https://chromium-review.googlesource.com/269142 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang d42f5b8c 2015-04-16T14:03:29 Sync the remaining miscellaneous state before drawing in RendererGL. BUG=angleproject:883 Change-Id: Id530f855ab14b6ec575101c9e74c02842c27d3d6 Reviewed-on: https://chromium-review.googlesource.com/266036 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 4b3f4169 2015-04-16T13:22:05 Sync the entire rasterizer state before drawing in RendererGL. BUG=angleproject:883 Change-Id: I721c198f33caa18ec04899d6323faa9dbd4aa100 Reviewed-on: https://chromium-review.googlesource.com/266035 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang b8517346 2015-04-16T12:10:19 Sync the entire depth stencil state before drawing in RendererGL. BUG=angleproject:883 Change-Id: I1d748281184ff8111f8ff1c63f56882650b6871b Reviewed-on: https://chromium-review.googlesource.com/266034 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0fbb600f 2015-04-16T11:11:53 Sync the entire blend state before drawing in RendererGL. BUG=angleproject:883 Change-Id: I903090c1a7ba90bd479ad8d24f943672eb51054e Reviewed-on: https://chromium-review.googlesource.com/266033 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@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>
Geoff Lang cd69f1c9 2015-03-18T14:33:23 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>
Geoff Lang 4ad1709f 2015-03-10T16:47:44 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>
Geoff Lang 7c82bc46 2015-03-09T16:18:08 Handle client data for draw calls with RendererGL. BUG=angleproject:880 Change-Id: I67839d4934767db77cff7b501002c5aafbcbaef2 Reviewed-on: https://chromium-review.googlesource.com/257672 Tested-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang c05f7065 2015-03-10T09:50:57 TextureGL implementation. BUG=angleproject:884 Change-Id: I877c0a9f753dacff96bbb82486bee71d1996ecb7 Reviewed-on: https://chromium-review.googlesource.com/252982 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang d6e50872 2015-02-24T12:42:26 Add a StateManagerGL method to sync state required for a draw call. BUG=angle:883 Change-Id: Iabeb25aef2228a1900bd0209422ddce21771c688 Reviewed-on: https://chromium-review.googlesource.com/252802 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ba4c4a85 2015-02-24T12:38:46 Implement basic functionality in VertexArrayGL. No support for raw vertex data pointers yet. BUG=angle:880 Change-Id: Ifa8099b0f49028a1465edecde495ba725ac79598 Reviewed-on: https://chromium-review.googlesource.com/252801 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 36c79011 2015-02-24T11:47:20 Implement basic functionality in BufferGL. BUG=angle:881 Change-Id: I8d761741d204d26cea1c87eec725bc8ebaaaa584 Reviewed-on: https://chromium-review.googlesource.com/252800 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 63cbace6 2015-02-26T10:03:12 Rename StateManagerGL::setProgram to useProgram. BUG=angle:882 Change-Id: I4046e23bf720690869558fa6a5528d40c4b3bfa3 Reviewed-on: https://chromium-review.googlesource.com/254070 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang b1f435e4 2015-02-20T10:01:01 Implement basic functionality of ProgramGL. BUG=angle:882 Change-Id: I1d859197011081729c4c5733b78ac10491fe926c Reviewed-on: https://chromium-review.googlesource.com/251542 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 94463d58 2015-02-18T13:09:37 Add a state manager for the currently applied GL state. BUG=angle:883 Change-Id: Ie69c883c5ee539f911480fdcd9e73c46a3001b33 Reviewed-on: https://chromium-review.googlesource.com/250930 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>