src/libANGLE/renderer/gl/StateManagerGL.cpp


Log

Author Commit Date CI Message
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>
Jamie Madill 63805b47 2015-08-25T13:17:39 Make the Program's semantic index D3D-only. This concept isn't strictly necessary for GL-side validation. Instead we can use a bitset to track active attribs, and determine is a particular location is active. BUG=angleproject:1123 Change-Id: If7a920a3071672116bafffb3368671f721723b65 Reviewed-on: https://chromium-review.googlesource.com/294570 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@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 0b9e9032 2015-08-17T11:51:52 Revert "Revert "Implement dirty bits acceleration for VertexArrayGL."" Should be fixed with the Iterator change. BUG=angleproject:1040 This reverts commit 5b21ed5fd030d33ae379b8cc493746244d2928b4. Change-Id: Ibb77775b6b2ce5a49cee7dd81efc62d8c3ba3c62 Reviewed-on: https://chromium-review.googlesource.com/293901 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5b21ed5f 2015-08-14T18:12:50 Revert "Implement dirty bits acceleration for VertexArrayGL." Seems to cause an exception in Release, in end2end_tests. BUG=angleproject:1040 This reverts commit 6d51c70ccf63a2c5ec240d960ff1bc179d36c92c. Change-Id: I6548bc68dce07d2d85e40afdb604157e689c1d6c Reviewed-on: https://chromium-review.googlesource.com/293821 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6d51c70c 2015-08-14T10:38:10 Implement dirty bits acceleration for VertexArrayGL. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: I91d9aea5eefb58ecaf5b1cc95926fddb2aa846ea Reviewed-on: https://chromium-review.googlesource.com/289570 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin 4d61f7ed 2015-08-12T10:56:50 Reland Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data' Additional warnings found with more testing and added C4267 warning disable only for angle_libpng BUG=angleproject:1120 Change-Id: Ic403dcff5a8018056fa51a8c408e64207f3362eb Reviewed-on: https://chromium-review.googlesource.com/293028 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill b195643c 2015-08-12T17:35:20 Revert "Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data'" Seems to have quite a few warnings in 64-bit on my machine. BUG=angleproject:1120 This reverts commit c5cf9bc47d0ee028adbbf9e9f94ca567eec601dc. Change-Id: I86768b900aeba52e7a2242d9ae8949f93f1a5ba9 Reviewed-on: https://chromium-review.googlesource.com/293280 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin c5cf9bc4 2015-08-06T10:46:48 Fixed compiler warning C4267 'conversion from 'size_t' to 'type', possible loss of data' BUG=angleproject:1120 Change-Id: I01ef10bea7f487c2b394d030c76628f38d2ea645 Reviewed-on: https://chromium-review.googlesource.com/292780 Tested-by: Cooper Partin <coopp@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1e0bc3ad 2015-08-11T08:12:21 Implement dirty bits acceleration for Current Values. BUG=angleproject:1040 TEST=angle_end2end_tests,angle_perftests,WebGL Change-Id: If471cfb9676795d5cc985eea52ad7144d4544ed1 Reviewed-on: https://chromium-review.googlesource.com/289559 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@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 eec431c7 2015-07-20T16:02:32 Enable point sprites in StateManagerGL. Test it against multiple versions of the OpenGL renderer so make sure that both core and compatibility profile are tested. Fixes: * conformance/rendering/point-size.html * conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html * PointSpritesTest * particle_system sample BUG=angleproject:883 Change-Id: I31f1c3d9bee1d191b4d731afbaa2d6de1a5c9454 Reviewed-on: https://chromium-review.googlesource.com/287855 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3cca86b5 2015-07-23T19:30:46 Revert "Enable point sprites in StateManagerGL." Failures on AMD and Intel bots. This reverts commit e1bb74e7305cee5ea92ecd2b3b3d2ecad1cdee32. Change-Id: I8ae50bcf9ca365969f5231105fadc28f843aa527 Reviewed-on: https://chromium-review.googlesource.com/287854 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang e1bb74e7 2015-07-20T16:02:32 Enable point sprites in StateManagerGL. Test it against multiple versions of the OpenGL renderer so make sure that both core and compatibility profile are tested. Fixes: * conformance/rendering/point-size.html * conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html * PointSpritesTest * particle_system sample BUG=angleproject:883 Change-Id: Ib7625cb12faeac21016a9ff551aa650ba24e789f Reviewed-on: https://chromium-review.googlesource.com/277692 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang b61e173a 2015-06-05T11:49:55 Only sync attributes used by the current program in RendererGL. Improves draw call overhead of RendererGL. DrawCallPerf_gl: Before: 136973 score After: 153317 score Improvement: 11.932% BUG=angleproject:959 Change-Id: Ib75f6fdd756648e4a07f6e970cda03abbdbcf009 Reviewed-on: https://chromium-review.googlesource.com/275409 Reviewed-by: Kenneth Russell <kbr@chromium.org> Tested-by: Geoff Lang <geofflang@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 464a6b8b 2015-06-15T21:25:28 Revert "Enable point sprites in StateManagerGL." Speculative fix for failures on the AMD FYI bot. This reverts commit 67e04be12dda07ac9b37798558e842f50bd42776. Change-Id: Ia57e3c800a6ff9e81e31bf5b37a95e97460ceda4 Reviewed-on: https://chromium-review.googlesource.com/277681 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 67e04be1 2015-06-08T11:05:40 Enable point sprites in StateManagerGL. Fixes: * conformance/rendering/point-size.html * conformance/rendering/point-with-gl-pointcoord-in-fragment-shader.html * PointSpritesTest * particle_system sample BUG=angleproject:883 Change-Id: Idb3352fa916cf08817496f0a8425c95ece9bfa49 Reviewed-on: https://chromium-review.googlesource.com/275860 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 19fafa4b 2015-06-02T12:41:44 Fix incorrect value being synced for the alpha blend equation. Fixes angle_end2end_test BlendMinMaxTest with the blend_minmax extension enabled. BUG=angleproject:883 Change-Id: Iae2441d11a3c4c497a1ddc4d250120fd85175d52 Reviewed-on: https://chromium-review.googlesource.com/274802 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ae6584e6 2015-06-01T15:49:26 Sync the scissor tests state before clearing. Fixes: * conformance/rendering/gl-scissor-fbo-test.html * conformance/rendering/gl-scissor-canvas-dimensions.html BUG=angleproject:883 Change-Id: Icd337894f1dbc7464a4566bfab9a30b70fd4bbfa Reviewed-on: https://chromium-review.googlesource.com/274445 Reviewed-by: Jamie Madill <jmadill@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 113bc73e 2015-05-26T15:03:49 Fix missing break statements. Fixes: * conformance/glsl/functions/glsl-function* BUG=angleproject:883 Change-Id: I22a528c6ba4c4077ba47269e14396b4117d1c849 Reviewed-on: https://chromium-review.googlesource.com/273169 Tested-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Geoff Lang f51bc795 2015-05-04T14:57:03 Optimize Texture binding by only applying referenced textures. Update ProgramGL to track which the current values of sampler uniforms so that only the currently applied texture units have to be bound for the draw call. BUG=angleproject:882 Change-Id: I280aa106172b13a5fbb31cdefba27b6691c0a0e4 Reviewed-on: https://chromium-review.googlesource.com/264803 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@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 716cc88e 2015-05-04T15:30:15 Always sync writemasks and front face. BUG=angleproject:883 Change-Id: Ie1d544c8f30472238d859d8fd7f553a73b066802 Reviewed-on: https://chromium-review.googlesource.com/269145 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5b028d18 2015-04-27T10:43:54 Add a special case for binding to GL_FRAMEBUFFER for state tracking. Binding to GL_FRAMEBUFFER is supposed to set the read and draw framebuffer bindings instead of being a separate binding point. BUG=angleproject:885 Change-Id: Ic6d9056a2f8bfa472587c5ed030c15fcc93574c7 Reviewed-on: https://chromium-review.googlesource.com/267460 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Kenneth Russell <kbr@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>
Geoff Lang 6d5463bd 2015-03-31T10:31:48 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>
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 6ae6efca 2015-03-09T14:42:35 Only sync the VAO state just before the draw call. BUG=angleproject:880 Change-Id: Ifd59c0f67aeab0e4700b3dca57c1b75e3fae48b8 Reviewed-on: https://chromium-review.googlesource.com/257671 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@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>