src/libGLESv2/renderer


Log

Author Commit Date CI Message
Jamie Madill 5a0c45e1 2014-10-02T11:10:36 Accept RenderTargets as parameters to Image::copy. This gives us the flexibility to use copy internally for Textures as well as FBO attachments. This will be useful for the TexSubImage performance workaround. BUG=angle:729 Change-Id: I4df8ef3a5a928d44ef84100cd96a5d35f12b47fa Reviewed-on: https://chromium-review.googlesource.com/219863 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jacek Caban a5521de2 2014-10-01T17:23:46 Fixed mingw compilation. Change-Id: I8ae33c752feb19e291e4a3b128d21a0ced883c90 Reviewed-on: https://chromium-review.googlesource.com/220761 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Tibor den Ouden ac7556f6 2014-09-25T17:15:11 Freed temporary info log buffer and removed explicit destruction of char[] BUG=angle:758 Removed explicit destruction of char[] by using std::vector<char> object. Added Borbitsoft to AUTHORS and Tibor den Ouden to CONTRIBUTORS Change-Id: I9c4017eb81ce3fab8b7fb4a5b4ad52a758d14a2d Reviewed-on: https://chromium-review.googlesource.com/219940 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ff39bd87 2014-10-01T13:17:39 Add check for size before setting buffer data. If data is non-null and size is zero, the memory buffer may have a NULL pointer. BUG=angle:765 Change-Id: I4cb8f54ec85fea886e37ee2d4469d26e651a916b Reviewed-on: https://chromium-review.googlesource.com/220801 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 3269bcb4 2014-09-30T16:33:52 More TextureD3D cleanups. The getLayers method was redundant, and the getBaseLevelImage method we can replace with a shared TextureD3D method rather than a specialized method for each type. BUG=angle:729 Change-Id: I80c94a765dbc369fb0bb60ec8273e9e3ba6ffeed Reviewed-on: https://chromium-review.googlesource.com/219862 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 135570a4 2014-09-30T16:33:51 Clean up ensureRenderTarget(). We can use the same code for this method, with the only difference being in when we determine a texture image holds no pixels. BUG=angle:729 Change-Id: I3356f5deb900c24b1a5c739ce8de99e9ce1371c0 Reviewed-on: https://chromium-review.googlesource.com/219861 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 716915d7 2014-09-30T16:33:50 Fix d3d9 copyToStorage dirty flag. This flag wasn't being set in the 2D version of this method. The bug would only cause a performance penalty on Windows XP machines. BUG=angle:729 Change-Id: I516206740becc90438d613ae9abb3ac550733aed Reviewed-on: https://chromium-review.googlesource.com/219860 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 98553e37 2014-09-30T16:33:50 Remove copyToRenderTarget methods. These Renderer methods can be replaced with virtual TextureStorage methods, now that we do not have TextureStorageInterface to complicate matters. This reduces the number of stubs in Renderer as well as allowing cleaner code re-use. BUG=angle:729 Change-Id: I6d2004d4f1abdb1041420144cee1c173e5ab199e Reviewed-on: https://chromium-review.googlesource.com/219839 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3a612876 2014-09-29T11:08:17 Moved the responsibility for releasing the dest surface out of copyToSurface. BUG=angle:520 Change-Id: I4c6c39462b43eeb0a202f731c4a54007ef16445c Reviewed-on: https://chromium-review.googlesource.com/219866 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang b5348331 2014-09-02T13:16:34 Refactor Texture::compressed*Image methods to use gl::Error objects. BUG=angle:520 Change-Id: I8fd7ebf3edb3edef06e77b79776c363672931a61 Reviewed-on: https://chromium-review.googlesource.com/216646 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1ba6b8db 2014-08-28T10:57:31 Refactor Texture::setImage and subImage to use gl::Error objects. BUG=angle:520 Change-Id: Ib43ace0fbdab59086ae4314cce139636d9045e65 Reviewed-on: https://chromium-review.googlesource.com/216644 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang ae5122c4 2014-08-27T14:08:43 Updated the PixelTransfer class to use Error objects. BUG=angle:520 Change-Id: I7e21acbfd5726607ea62c8fcf64d76bbf5877860 Reviewed-on: https://chromium-review.googlesource.com/216643 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 7acae0a1 2014-09-24T17:10:51 Add a centralized workarounds module. This is a temporary home for the various workarounds we use for performance or to solve driver issues. Eventually we will want a standalone library we can use as part of Chromium or in ANGLE standalone. Re-land with member variable initialized. BUG=angle:729 Change-Id: If7f8f9596a39b2855366d9a67caebf6dd4197b55 Reviewed-on: https://chromium-review.googlesource.com/219868 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 57f20894 2014-09-29T23:05:36 Revert "Add a centralized workarounds module." Was missing an initialization in Renderer.cpp. This reverts commit 815a1dc3710c48ecc84539b7ffb15860f6738f6c. Change-Id: Ia4666911c2ff58660e0ab5c7cec4431b1c30a1e1 Reviewed-on: https://chromium-review.googlesource.com/220420 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 815a1dc3 2014-09-24T17:10:51 Add a centralized workarounds module. This is a temporary home for the various workarounds we use for performance or to solve driver issues. Eventually we will want a standalone library we can use as part of Chromium or in ANGLE standalone. BUG=angle:729 Change-Id: Ib0254262cad9f8fb779886dacb967be646ea96ae Reviewed-on: https://chromium-review.googlesource.com/219838 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4aa79e11 2014-09-29T10:46:14 Reduce code duplication in generateMipmap. Using the newly introduced image index struct, we can simplify our code somewhat in TextureStorage. BUG=angle:729 Change-Id: Iff274fd1df7a0dc36dd34e0cb31ad42831b4f5d5 Reviewed-on: https://chromium-review.googlesource.com/219836 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill cb83dc16 2014-09-29T10:46:12 Add TextureD3D::getIndex. This is a simple virtual method which gives an ImageIndex at a particular level and layer. It's useful for handling all the texture types uniformly, which all treat levels and layers differently. BUG=angle:729 Change-Id: I72db560287272c195b1ff8555f99ab2258ac7e6d Reviewed-on: https://chromium-review.googlesource.com/219835 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ef4ac5b1 2014-09-29T10:46:11 Add ImageIndexIterator. We can use image index iterators to iterate over all images in a Texture. This allows us to do some operations in TextureD3D rather than in the typed subclasses and save on some repeated code. BUG=angle:729 Change-Id: I3ba47b2eebad2cfca313117fd501ff76d5107044 Reviewed-on: https://chromium-review.googlesource.com/219834 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Brandon Jones eb99436e 2014-09-24T10:27:28 Moving Shader Executables into ProgramD3D BUG=angle:731 Change-Id: I677fc9773914307184bcdd9ab7ac564956d77f6a Reviewed-on: https://chromium-review.googlesource.com/219814 Tested-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Cooper Partin eeb1f537 2014-09-23T10:25:02 Added SurfaceHost to enable additional hosts and abstract access for EGLNativeWindowType. Change-Id: I590b52925c6b9127d08eaf0e5ba2a0bde30505c3 Reviewed-on: https://chromium-review.googlesource.com/219488 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9e3f24f6 2014-08-27T12:06:04 Update Renderer::copyToRenderTarget to return Error objects. BUG=angle:520 Change-Id: Ieab2d031d638056676e07d80aa024b6c6f12f3d6 Reviewed-on: https://chromium-review.googlesource.com/216642 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang e8356bb0 2014-08-26T17:13:21 Update Renderer::copyImage to return Error objects. BUG=angle:520 Change-Id: I1bb7a53bc75ebb8bf324935b673ea636bdff6931 Reviewed-on: https://chromium-review.googlesource.com/216641 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 64839155 2014-08-26T16:23:25 Update blit calls to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: I94c3ad327433cf275744e98be6cb2ba91be49c0f Reviewed-on: https://chromium-review.googlesource.com/216640 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f7ed7054 2014-09-23T13:39:31 Move the code that writes the temporary shader file to the shader compiler. BUG=angle:755 Change-Id: I5fdc3ae112ea3f59694a22da6199b99a568ed0a1 Reviewed-on: https://chromium-review.googlesource.com/219530 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3935e51d 2014-09-23T13:15:19 Refactor HLSLCompiler to use stl objects and encapulate workarounds. * Pass std::strings for the source and profile. * Create a wrapper struct for storing the compile configurations and pass them to the compiler with an std::vector. * Remove function typedefs, they're available from the platform.h header. BUG=angle:755 Change-Id: I19dd2be1655a12f76fc5718450db974a7ec324ec Reviewed-on: https://chromium-review.googlesource.com/219287 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Brandon Jones 18bd4100 2014-09-22T14:21:44 Removed the last references to Renderer from ProgramBinary. BUG=angle:731 Change-Id: I8829a434e59279b1b9c37e9a1922ae05d467b376 Reviewed-on: https://chromium-review.googlesource.com/219421 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Brandon Jones 44151a97 2014-09-10T11:32:25 Removed the last references to DynamicHLSL from ProgramBinary. Migrated several more non-generic values from ProgramBinary the D3D impl. BUG=angle:731 Change-Id: Ic043dd75328cffbc6bef6556da801c382b4138bc Reviewed-on: https://chromium-review.googlesource.com/219390 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Geoff Lang d87878e3 2014-09-19T15:42:59 Remove the requirement that a format must be texturable to be renderable. Previously, to determine if a texture format was renderable, the texturable and renderable fields had to be and-ed together. This caused issues for formats such as D24S8 which can be renderable but not texturable depending on available extensions. Made the renderable flag a complete check that may be different than the textureable flag and removed assumptions that a format is texturable if renderable from the code. GL_DEPTH24_STENCIL8 now checks for ANGLE_depth_textures for texturability and ANGLE_depth_textures or OES_packed_depth_stencil for renderability. BUG=angle:752 Change-Id: I6d197cee72cc249e5996fa395303bdf43d246a87 Reviewed-on: https://chromium-review.googlesource.com/219093 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang c77e8c39 2014-09-08T16:28:24 Update the draw calls to return Error objects. BUG=angle:520 Change-Id: I3330ba2dbe095fc9460789822a938420a80a149f Reviewed-on: https://chromium-review.googlesource.com/213823 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3110ffdc 2014-09-08T16:25:50 Updated the swizzle generation functions to use Error objects. BUG=angle:520 Change-Id: I01b3cdb7d6719582fa8a57f21218705f6743a7b0 Reviewed-on: https://chromium-review.googlesource.com/217103 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Shannon Woods 950cb606 2014-09-18T10:01:56 Create test configuration include guards BUG=angle:501 Change-Id: I0281cf6de4fbf8ddd142b7af4ea2917f0a0a1569 Reviewed-on: https://chromium-review.googlesource.com/218840 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang df647a2a 2014-09-19T13:13:40 Use a D24S8 format to back GL_DEPTH_COMPONENT32_OES in D3D9. Looks like the D3D9 D32 format isn't available on most GPUs (and doesn't exist in D3D11) so back GL_DEPTH_COMPONENT32_OES with D24S8 instead to match D3D11. BUG=angle:750 Change-Id: I0f7a124544c1c14ba21db20fbf6765d07e244966 Reviewed-on: https://chromium-review.googlesource.com/219080 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ee009b8e 2014-09-19T13:17:51 Fix a NULL dereference on buffer initialization. In some cases, where the user would create a buffer with NULL (empty) data, we would attempt to dereference NULL when drawing with the buffer as a vertex attribute. BUG=angle:749 Change-Id: Ied5ecbab4608c85890cdf7cc32a8dae46989e33b Reviewed-on: https://chromium-review.googlesource.com/219090 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Jamie Madill 2f06dbfb 2014-09-18T15:08:50 Remove rx::TextureStorageInterface entirely. This class provides no added benefit now that we've scrapped the type-specialized classes. We can squash it's functionality into TextureStorage instead. BUG=angle:741 Change-Id: I04984806719a01f299986265fe09b3cccf04dca5 Reviewed-on: https://chromium-review.googlesource.com/218316 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 856d9d4b 2014-09-18T15:08:49 Squash the TextureStorageInterface heirarchy. Since there are no longer any significant differences in the child classes of TextureStorageInterface, we can scrap the different implementations. This involves changing the function names of some Renderer functions which relied on overloading. BUG=angle:741 Change-Id: I074797e4ac0bf3ecf8fe4bddf84eaed28b1a2c23 Reviewed-on: https://chromium-review.googlesource.com/218315 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5e48c034 2014-09-18T15:08:47 Move generateMipmap to storage interface base class. Using a little bit more of code repetition allows us to move the implementation of the mipmaps to a simple virtual interface in TextureStorage. BUG=angle:741 Change-Id: I7661d0cc3bdb02b646da0802cba285650d7832b2 Reviewed-on: https://chromium-review.googlesource.com/218314 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill c483326b 2014-09-18T16:18:26 Use ImageIndex in getRenderTargetSerial. Also move getRenderTargetSerial to the TextureStorageInterface base class, since it shares a common interface. BUG=angle:741 Change-Id: I1bc1cfac6426e241ac91d373884a7dd8a1c5b188 Reviewed-on: https://chromium-review.googlesource.com/218313 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f7100b98 2014-09-08T16:17:08 Updated the vertex buffer classes to use Error objects. BUG=angle:520 Change-Id: Id003e66b2acbf37dbbe66aaca2fa336c3c884be2 Reviewed-on: https://chromium-review.googlesource.com/217102 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill d5a796ca 2014-09-18T15:30:16 Fix Renderer11 signed/unsigned warning in 32-bit. Change-Id: I1e11f54b0ae245cdd7e090ab0748821738ad6314 Reviewed-on: https://chromium-review.googlesource.com/218761 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 76b10c9a 2014-09-05T16:28:14 Use dynamically sized containers for texture and sampler bindings. BUG=angle:685 Change-Id: I7af97a95deee69fbdebca2b57403244f45516e67 Reviewed-on: https://chromium-review.googlesource.com/216564 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ac7579c2 2014-09-17T16:59:33 Use ImageIndex in getRenderTarget. Also change ImageIndex to allow invalid indexes for layer. In 3D indexes, sometimes the layer parameter is invalid, indicating we index an entire mip level instead of a layer of a mip level. BUG=angle:741 Change-Id: I7b410f9aaf568f215bb93ae063934669a8fa09bd Reviewed-on: https://chromium-review.googlesource.com/218312 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 02f18b88 2014-09-17T11:42:17 Don't skip draw calls on zero-sized viewports. If transform feedback is active, primitives still need to be rendered even if no pixels are written to the framebuffer. Instead of checking for active transform feedback, simply remove the draw call skipping optimization since it is most likely an application mistake to draw with a zero sized viewport and we shouldn't optimize for this case. This change doesn't affect the clear calls because the viewport is set to the framebuffer size which is non-zero. BUG=angle:743 Change-Id: I04af9d6de5aad3040e3c6b3c24990e107e21ad36 Reviewed-on: https://chromium-review.googlesource.com/218508 Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Austin Kinross af875527 2014-08-25T21:06:07 Improve D3D11 varying packing when there are more varyings than registers. BUG=angle:738 Change-Id: I0599840fc79d571230acf26105d512322bcffdcd Reviewed-on: https://chromium-review.googlesource.com/214108 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang bdee2d59 2014-09-17T11:02:51 Fix incorrect error check. The registers variable became a pointer but this error check was not updated. BUG=angle:743 Change-Id: Id2cd7b5ba39180281a3bbc408cd7c31bc663500c Reviewed-on: https://chromium-review.googlesource.com/218507 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill feda4d29 2014-09-17T13:03:29 Accept ImageIndex in TextureD3D::subImage and getImage. This paves the way for setting data on the TextureStorage directly instead of working through the Image objects. BUG=angle:741 Change-Id: I3be3d5f9b2e45707c1630b74ad3f4789e034c3fd Reviewed-on: https://chromium-review.googlesource.com/218311 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e6256f87 2014-09-17T10:31:15 Fix the varying sort comparator in ShaderD3D. The comparator was actually a <= operator, while sort requires a strict < operator. This was causing a potential assertion failure. Bug report from Kerim Borchaev. BUG=angle:742 Change-Id: I37c2925ab0b85e70ee1b2be3c72c6ddc062e8d28 Reviewed-on: https://chromium-review.googlesource.com/218506 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 87a93308 2014-09-16T13:29:43 Move validation of ANGLE_instanced_arrays to the validation layer. BUG=angle:520 Change-Id: Idb3c50235a7029e72c58bc202aba0cfab735202a Reviewed-on: https://chromium-review.googlesource.com/218510 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Andrew Knight 08a59f85 2014-09-16T23:19:39 Add several missing header guard comments These were causing build failures under GCC. Change-Id: Iba19ed166f909fe559d19731f31849770619f412 Reviewed-on: https://chromium-review.googlesource.com/218580 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang 5aad9673 2014-09-08T11:10:42 Update Queries to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: If8f2bb1c4de7b9cc30861a06aab1d89c97305b26 Reviewed-on: https://chromium-review.googlesource.com/216699 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Brandon Jones 22502d52 2014-08-29T16:58:36 Moving more D3D-only logic into ProgramBinaryD3D BUG=angle:731 Change-Id: Ia62ec9a912c8bd63fcee51ca206d52688dd999da Reviewed-on: https://chromium-review.googlesource.com/217495 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Jamie Madill 612e2e44 2014-09-12T13:26:55 Add a helper to replace FBO attachment's getSerial. Ideally we could store a render target serial in the render target itself. For now, this helper function allows us to finally stop exposing rx::RenderTarget from gl::Texture. BUG=angle:732 Change-Id: I4ffc5e0af6f0542212ad4e74adced21ebbd89462 Reviewed-on: https://chromium-review.googlesource.com/217330 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9f0b42a6 2014-09-12T10:25:27 Add an attachment helper to replace getRenderTarget. We would like to stop exposing rx::RenderTarget to any GL-layer code, like the Context, or Framebuffer. Then we can pull any necessary information inside the Renderer back-ends. BUG=angle:732 Change-Id: Ifa35218f097c528e616d732bda4bcd8e5f1c3843 Reviewed-on: https://chromium-review.googlesource.com/217029 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Shannon Woods 231943bf 2014-09-10T14:41:45 Fix signed-unsigned mismatch Change-Id: Ie7fba8a0fd0475a395205139c4f7169cc94e61b7 Reviewed-on: https://chromium-review.googlesource.com/217510 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang c9e69b19 2014-09-08T16:06:25 Updated the index buffer classes to use Error objects. BUG=angle:520 Change-Id: Ifc249058a3ed3ffffe163a9e3ec21d6fc8c75bd0 Reviewed-on: https://chromium-review.googlesource.com/217101 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 1c134e6c 2014-09-08T15:32:18 Only allocate the streaming index buffers when they are first needed. BUG=angle:520 Change-Id: I111e4fd830ad19f6a4ff50749ba891fc14f9154b Reviewed-on: https://chromium-review.googlesource.com/217100 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 23ba30e4 2014-09-08T15:28:20 Move the counting IB from IndexDataManager to Renderer9. BUG=angle:520 Change-Id: Ice0a04b296af6c0a61a604f629b08603e594bb0b Reviewed-on: https://chromium-review.googlesource.com/216919 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 157f9374 2014-09-08T15:16:28 Update the RenderStateCache to use Error objects. BUG=angle:520 Change-Id: I14e2a84c6d2e6f98a50395b63ac206e32bc10f8b Reviewed-on: https://chromium-review.googlesource.com/216918 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5b5d1244 2014-09-09T15:15:36 Add queries for attachment targets. Queries for the FBO attachment Textures and Renderbuffers allow us more options than specific methods for querying the texture storage or texture serial. BUG=angle:732 Change-Id: Ieb4ddca3955fcf716dbf54331524d0c1e25fe946 Reviewed-on: https://chromium-review.googlesource.com/217028 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Jamie Madill 82cceb2d 2014-09-09T13:21:33 Only use direct buffers for static data in D3D11. For highly dynamic data, which gets updated every frame, or almost every frame, we're better off using our existing dynamic buffer path. We could further optimize the dynamic buffer path by only uploading changed data every frame. BUG=angle:705 Change-Id: Icbb357b889be789b30f73067f75b13664c806929 Reviewed-on: https://chromium-review.googlesource.com/217280 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Brandon Jones c9610c51 2014-08-25T17:02:59 Starting refactor of ProgramBinary This is gonna take a while... BUG=angle:731 Change-Id: Ief72c3361b6429f3f6e0bc2d2ea0810d523ff178 Reviewed-on: https://chromium-review.googlesource.com/215661 Tested-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Jamie Madill cc00239d 2014-09-09T10:21:56 Revert "Optimize dynamic buffers." This reverts commit 3e3813f787ee5e8bb7808eed539a606a4e2e3fd3. Conflicts: src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp Change-Id: I6470059672d3b377ce0fafbc8b637318a91f62c8 Reviewed-on: https://chromium-review.googlesource.com/217106 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5ac5ae86 2014-09-09T10:14:17 Move assertion into if-block. Since the loop always goes up to MAX_VERTEX_ATTRIBS, the ASSERTION may be triggered even though no more attributes are enabled. BUG=angle:740 Change-Id: I2bb30d7e9f426ae1a0b8250e65c1fd02107973ac Reviewed-on: https://chromium-review.googlesource.com/217027 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 63d2fc7f 2014-07-25T14:51:41 Update the ReadPixels calls to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: I2ead221e7d1f02cf088b60d0e98376fcd68dde8e Reviewed-on: https://chromium-review.googlesource.com/211441 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang cc79b8c6 2014-07-25T13:48:02 Update clear calls to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: I474a6ed29b882963f7f3425515e7d65f8f69b3e4 Reviewed-on: https://chromium-review.googlesource.com/211440 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2a1c15a1 2014-07-25T11:43:00 Update Buffers to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: I4b6af8e2d4fae97639518e2acd26e2d4be93c925 Reviewed-on: https://chromium-review.googlesource.com/209881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill f6be8d7c 2014-09-05T10:38:07 Fix typo in "PixelShaderOuputVariable". Change-Id: I2b223c9b80faa3ff2a0f94bd52ca73edf3d67cf7 Reviewed-on: https://chromium-review.googlesource.com/216273 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill f9479eff 2014-09-05T10:38:05 Drop support for the old "full multiplexed" MRT shaders. This will simplify the code somewhat. It should no longer be necessary now that we have the nVidia workaround. BUG=angle:705 Change-Id: I1abe1abd9f03472341ce4315975a76c56b252bb4 Reviewed-on: https://chromium-review.googlesource.com/216111 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 3f2e61de 2014-09-05T10:38:05 Enable MRT pixel shader rewriting. Writing to all 8 pixel outputs was causing performance problems on Intel and AMD. Enabling Geoff's work to rewrite our pixel shaders solves the regression. This patch also includes a workaround to the nVidia driver bug where it would ignore NULL RT values in OMSetRenderTargets, by compacting the RT list to skip NULL values. BUG=angle:705 BUG=365078 Change-Id: Ia68af6f0ccd5f10c484d6f76297a0bec694948f0 Reviewed-on: https://chromium-review.googlesource.com/214852 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill aef95dec 2014-09-05T10:12:41 Use attachment binding points for dynamic PS key. Because our output signature is only dependent on the arrangment of the attachments, not the attachment type, use the output layout key for now. If we need to, we could store both, in the future. BUG=angle:705 Change-Id: I3b99954d30b91a4741fdd6f48f8ffcf88c0bea7a Reviewed-on: https://chromium-review.googlesource.com/215846 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ce20c7f1 2014-09-03T11:56:29 Retrieve render colorbuffers as a single vector. Making all our render methods query FBO attachments for rendering in one place will allow us to easily control the MRT peformance workaround, and simplify the implementation. BUG=angle:705 Change-Id: I6c476d45b81228d6ffe8831347443994237e3593 Reviewed-on: https://chromium-review.googlesource.com/215843 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Jamie Madill 54ad4f81 2014-09-03T09:40:46 Use the CollectVariables path on the HLSL translator. This approach consolidates our two methods, and lets us reuse the same code for both methods of variable collection. BUG=angle:466 Change-Id: Ie92f76ff0b6d0d0dbfd211a234d0ab86290fa798 Reviewed-on: https://chromium-review.googlesource.com/213504 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Nicolas Capens <capn@chromium.org>
Jamie Madill 2ad1dc48 2014-09-03T09:40:45 Compact the D3D shader specializations into one. BUG=angle:731 Change-Id: I4f35a05aeea130f9011ec62cfe931ed23e2681c9 Reviewed-on: https://chromium-review.googlesource.com/214871 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill d15250e6 2014-09-03T09:40:44 Move shader variables into the base impl. These variable types apply across shader types. Either we'll want a way to cache them after we query them, or we'll do a pre-parse pass similar to our current Chromium GLSL to GLSL pre-pass where we store the variables in ANGLE. In either case, they're shared across GL implementations so make sense as queries from gl::Shader. BUG=angle:731 Change-Id: I23f5541423abb4af87a2bc2fc1e9f4047fd2ff90 Reviewed-on: https://chromium-review.googlesource.com/214870 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 685dd27a 2014-08-29T15:46:43 Replace getDepthStencil with getRenderTarget. In all places where we called this method, we treated a NULL return value as an internal error. This implies to me that we don't need the two getRenderTarget and getDepthStencil methods, since we aren't using them to check if a surface is depth or stencil. BUG=angle:732 Change-Id: I4d1dc148abf3383b1b101bbff4f4d22de27ad03e Reviewed-on: https://chromium-review.googlesource.com/213852 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Shannon Woods 97d65b79 2014-08-05T18:04:22 Clean up Query classes. BUG=angle:717 Change-Id: I8f29f24964a9661d9f0bea5dca48cebddbf9b0b2 Reviewed-on: https://chromium-review.googlesource.com/211136 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang 05881a0f 2014-07-10T14:05:30 Add caps for transform feedback limits from table 6.34. BUG=angle:658 Change-Id: Ifd8c620080c8de486ffb7c8f9e985be1aba516c1 Reviewed-on: https://chromium-review.googlesource.com/207376 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3a61c321 2014-07-10T13:01:54 Add caps for the aggregate shader limits from table 6.33. BUG=angle:658 Change-Id: I59d0cd131114fcb925f01d83d218a657f4498a2a Reviewed-on: https://chromium-review.googlesource.com/207375 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0b7eef7c 2014-06-12T14:10:47 Removed common_includes.h reordered includes. Since we are not using precompiled headers anymore, remove common_includes.h so that fewer files are included in cpp files. Reordered includes to be in the following order: 1) Local ANGLE project headers, ordered by directory in descending depth 2) GL headers 3) STL headers This helps enforce the include-what-you-use principal by reducing the number of STL headers unexpectedly shared between files. This include order conflicts with some of the Google c++ style guide which states that STL includes should be first but this helps us catch more issues. Change-Id: I8f7785f4ad574e253dd3c7b4fb1e54d3ce3b99fc Reviewed-on: https://chromium-review.googlesource.com/214850 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Brandon Jones d8d72434 2014-08-22T15:11:23 Moved DynamicHLSL into renderer/d3d Obviously D3D-only class is obvious. :) BUG=angle:731 Change-Id: Ide54e76a8b9bacb9b6834e2cb0a801140eecfe46 Reviewed-on: https://chromium-review.googlesource.com/213862 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Jamie Madill e3929050 2014-08-28T16:02:27 Revert "Fixes a compilation error when ANGLE_DEFAULT_D3D11 is defined." The condition would always evaluate to true, since we define ANGLE_DEFAULT_D3D11 as zero. This reverts commit 10f05630a9a65514e74ec235a129104a5101d582. Change-Id: I39304398be149d09a8f65a6cf44400b3672ed730 Reviewed-on: https://chromium-review.googlesource.com/214715 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ea24759f 2014-08-28T10:37:08 Remove remnants of old PCH code. Remove the precompiled.cpp file which was producing a build warning, and rename the header to make it clear we no longer support PCH. BUG=angle: Change-Id: I944081ae477b1478ca9c18924fb02bb920d420a7 Reviewed-on: https://chromium-review.googlesource.com/214187 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Brandon Jones f05cdee4 2014-08-27T15:24:07 Refactoring Shader objects (Take 2) This change refactors shaders to no longer be dependent on D3D-only concepts. BUG=angle:731 Change-Id: I1006112f1d31b7e41bd14bd3225ea157b7d6c6c9 Reviewed-on: https://chromium-review.googlesource.com/214467 Tested-by: Brandon Jones <bajones@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones e54be46a 2014-08-27T22:21:45 Revert "Refactoring Shader objects" This reverts commit 537dfde52a33d621ab1198c949a81b09a1269b2e. Change-Id: I5eb8923ac8f78877e6e77a8cd897021e56ee004a Reviewed-on: https://chromium-review.googlesource.com/214466 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Brandon Jones 537dfde5 2014-08-20T14:04:59 Refactoring Shader objects This change refactors shaders to no longer be dependent on D3D-only concepts. BUG=angle:731 Change-Id: I4fc1efeba9df4f873b3d7c8ba6f67f00b6532b9c Reviewed-on: https://chromium-review.googlesource.com/213803 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Brandon Jones <bajones@chromium.org>
Shannon Woods 10f05630 2014-08-25T19:36:20 Fixes a compilation error when ANGLE_DEFAULT_D3D11 is defined. Change-Id: I09853b4565d5458ce4c318611a6495ec265fa8de Reviewed-on: https://chromium-review.googlesource.com/213899 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Shannon Woods <shannonwoods@chromium.org>
Austin Kinross 6982260b 2014-08-12T15:51:37 Reduce CPU texture usage in D3D11 where possible Change-Id: I3186d78fa0a5c676611806c6f553c5c7ad06f56a Reviewed-on: https://chromium-review.googlesource.com/212118 Tested-by: Austin Kinross <aukinros@microsoft.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell db8ae16b 2014-08-25T19:02:35 Refactored TransformFeedback for multi-platform ANGLE and added tests. Added angle_implementation_unit_tests target designed for testing the cross-platform code in libGLESv2, and libGLESv2_static target as a dependency. The goal is to incorporate these tests into Chromium's angle_unittests target on all platforms; however, more work is needed to make libGLESv2's common code compile on non-Windows platforms, so this is an intermediate step. BUG=angle:719 Change-Id: Ifc44a779352294e857d6e913d9b997a60674c443 Reviewed-on: https://chromium-review.googlesource.com/214105 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Kenneth Russell <kbr@chromium.org>
Jamie Madill 6d113802 2014-08-25T15:47:52 Move some methods of VertexDataManager to helper methods. Refactoring patch only. BUG=angle:571 Change-Id: Ic318b4c4366e33b8d33f6003dd39f660f40d354a Reviewed-on: https://chromium-review.googlesource.com/210649 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Jamie Madill ae3000b4 2014-08-25T15:47:51 Move validation from IndexDataManager to the API. This validates all necessary buffer sizes for element array buffers in the validation layer, before we start the draw. BUG=angle:571 Change-Id: I602744ca1ea493e9f0f7e1ccbeb85fc4ae5c9f5a Reviewed-on: https://chromium-review.googlesource.com/210648 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 2b97681b 2014-08-25T15:47:49 Extract validation from VertexDataManager.cpp to the API. We can check for buffer overflow at draw validation time, before processing any vertex data. BUG=angle:571 Change-Id: I4f49629b98c17ca28e25baed74cad4ae5341b20f Reviewed-on: https://chromium-review.googlesource.com/210647 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang 1fecbc85 2014-08-25T16:26:14 Hard-limit the number of uniform vectors in D3D11. Before the Caps were added, the maximum fragment and vertex shader uniform vectors were hard-limited to 1024. When increasing them to the D3D11 maximums, the WebGL test uniforms/gl-uniform-arrays would time out. Reverting the limit until the test can succeed with higher limits. BUG=407309 Change-Id: Ifb7015bdeb3d32d7dcd124cfedbea5f7e2c25a5e Reviewed-on: https://chromium-review.googlesource.com/213824 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 268b6bcd 2014-07-09T16:22:55 Clean up copyimage.h Change-Id: Ie4b81bb37dbbe6a9584dfc6a6c92670a9b73cda5 Reviewed-on: https://chromium-review.googlesource.com/207374 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 3e3813f7 2014-08-25T13:58:16 Optimize dynamic buffers. In D3D11, we would previously always use a staging buffer to proxy data to the GPU. This change allows users which specify DYNAMIC_DRAW to skip the staging buffer as long as they only write to index or vertex buffers. This improves performance on all tested GPU vendors, but in D3D11 on AMD and Intel our SubData calls are still significantly slower than in D3D9. BUG=angle:705 BUG=365078 Change-Id: I4f83164176d67ff00119bdd0a6a80d7c84fd0f03 Reviewed-on: https://chromium-review.googlesource.com/213813 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill dbd74a09 2014-08-25T13:58:15 Add BufferStorage11::setData. This helper method will be useful for implementing dynamic buffers. BUG=angle:705 Change-Id: I8461a59724fb8866b36059c9ef5b838f072cc63a Reviewed-on: https://chromium-review.googlesource.com/213812 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 45965b10 2014-07-09T15:54:46 Clean up copyvertex.h * Move "private" functions into copyvertex.inl. * Capitalize global function names give them more descriptive names. * Use size_t for all dimensions. * Use uint8_t pointers instead of unsigned char pointers. Change-Id: I408cf7ebb28655c5811ad18979a20f4273d278cd Reviewed-on: https://chromium-review.googlesource.com/207373 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 301d161d 2014-07-09T10:34:37 Add caps for vertex and fragment shader limits from tables 6.31 and 6.32. BUG=angle:658 Change-Id: I98509aa16caf74c3e4e28852e8b59aedd903f03a Reviewed-on: https://chromium-review.googlesource.com/207372 Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 900013cd 2014-07-07T11:32:19 Add caps from the 6.29 table. BUG=angle:658 Change-Id: I392f581b1aea445d60f507c1fa897c4348c1a137 Reviewed-on: https://chromium-review.googlesource.com/207371 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill ef9d63ec 2014-08-04T10:48:02 Move the index range cache to gl::Buffer. Because we want to move all validation to the API layer, we need to move the index validation to the API layer. This means exposing the index cache to the validation layer. In the future we will probably want a way to skip index validation when it's not necessary, or the chosen back-end handles index validation on its own. BUG=angle:571 Change-Id: Iee1618e669bc28abf7e0709ca4a03b4727b1383e Reviewed-on: https://chromium-review.googlesource.com/210646 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 39b43463 2014-08-18T16:39:50 Use Range type for index ranges. This compacts a lot of parameter passing. Refactoring patch only. BUG=angle:571 Change-Id: Ic918478d0c6b81093bfea6154ce0f6bf1d2b5be2 Reviewed-on: https://chromium-review.googlesource.com/210645 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill f41522b6 2014-08-18T16:39:49 Split vertex translation into helper methods. Refactoring patch only. BUG=angle:571 Change-Id: I17e8c1eb80bdf7c3ec7cc4bad4e70e81590e4a89 Reviewed-on: https://chromium-review.googlesource.com/210644 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>