|
96a483bc
|
2017-06-27T16:49:21
|
|
Add a ResourceMap class for faster GL resource maps.
This gives a very fast query time for handles that are within a fixed
range. For WebGL, where we don't allow create-on-bind, this will be
100% of the time, unless we create a very large number of resources.
It is implemented as a two-tier map - the first uses a flat array to
index into a handle buffer. The second tier uses a map for out-of-
range values.
BUG=angleproject:1458
Change-Id: I421bb3725cf523918cdfdbfaab035ad0dd3bf82d
Reviewed-on: https://chromium-review.googlesource.com/544684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
579d8c7d
|
2017-06-21T14:56:55
|
|
Only use the last context for the texture completeness cache.
The frequency of contexts switches is very slow compared to draw calls.
Instead of doing a map lookup, only store the completeness cache for the
last context used with the texture.
BUG=angleproject:2078
Change-Id: Ia24c891e1b5781b61fd463ce70e90d4b394c6f8a
Reviewed-on: https://chromium-review.googlesource.com/542946
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
857c09db
|
2017-05-16T15:55:04
|
|
Add missing completeness checks for texture attachments.
Texture attachments need to validate that the attached mip level is within
the [baseLevel,maxLevel] range and that the texture is complete if the
attached mip level is not the base level.
BUG=722684
Change-Id: I859766506b295638572b75a0e2e9fed168be047a
Reviewed-on: https://chromium-review.googlesource.com/506928
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
aa7203ef
|
2017-05-03T23:32:29
|
|
Inherit privately from angle::NonCopyable.
Make all inheritance from angle::NonCopyable private so the compiler
complains about this (admittedly unlikely) code:
class Foo: angle::NonCopyable {
virtual ~Foo() { ... }
};
angle::NonCopyable *p = new Foo;
delete p;
In the above code ~Foo() is not called, only ~NonCopyable(), because the
latter is not virtual. Making it virtual would add overhead to all derived
classes which don't already have a virtual method.
Also tighten access in NonCopyable, because we can.
BUG=angleproject:2026
Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0
Reviewed-on: https://chromium-review.googlesource.com/495352
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
d75dd26c
|
2017-04-20T17:01:19
|
|
Make ImageSibling inherit from FramebufferAttachment.
Only currently Renderbuffers and Textures can be bound with images.
This makes the relationship explicit, and also ensures that an image
sibling can determine if it's been initialized or not, which is
important for the robust resource init extension with Textures and
EGLImages.
BUG=angleproject:1635
Change-Id: Ie05319cfbfda50f1497cab3f0b9ca64e1bff8955
Reviewed-on: https://chromium-review.googlesource.com/469154
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4fd95d54
|
2017-04-05T11:22:18
|
|
Stop using FramebufferAttachment::Target.
Target includes the binding (DEPTH/STENCIL/COLOR), which is not useful
for many operations. Simplify this to just passing the mip/layer.
This allows us to stop using this internal struct in other classes.
BUG=angleproject:1635
Change-Id: Ic5a11781bf45fe7835437fa1e363c190b876d453
Reviewed-on: https://chromium-review.googlesource.com/469152
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6de51858
|
2017-04-12T09:53:01
|
|
Optimize angle::BitSetIterator.
Adds a new custom bitset template to handle packing as many bits as
possible into a single variable. Intelligently select the right class
depending on platform features and bit sizes.
For now, always use a packed 64-bit set on 64-bit, instead of using
a 32-bit set for smaller bitsets.
BUG=angleproject:1814
Change-Id: I3ffef815c15515555833f6fc9302d8a4eee5423b
Reviewed-on: https://chromium-review.googlesource.com/471827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e4b753ca
|
2017-04-05T11:22:18
|
|
Texture: Add helper to query desc from index.
BUG=angleproject:1635
Change-Id: I0e4b57119bf23d656446a5ded76ba2f62ea74d7f
Reviewed-on: https://chromium-review.googlesource.com/469151
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
67f5ce42
|
2017-04-12T10:32:36
|
|
Fix the texture completeness cache.
Two silly mistakes were landed in 9aded1:
* The cache was not updating the sampler state it was using to compare
against new ones.
* The SamplerCompletenessCache entry was being copied and not updated.
BUG=709980
Change-Id: I1914ed30e24b9e48c4504da164f013a637a0b6c2
Reviewed-on: https://chromium-review.googlesource.com/475752
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9aded17c
|
2017-04-05T11:07:56
|
|
Invalidate completeness caches when enabling extensions.
Enabling extensions can cause framebuffers and textures to go from
incomplete to complete.
No functional changes from the API surface.
BUG=angleproject:1523
BUG=angleproject:1958
Change-Id: Iff686e1c292f6cf4921d6fffd7eb98bedaba828b
Reviewed-on: https://chromium-review.googlesource.com/468410
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
fc72a073
|
2017-03-24T14:52:39
|
|
Update CHROMIUM_copy_texture entry points to the ES3 versions.
BUG=angleproject:1932
Change-Id: Ia45f8522320af1d747fbfb57468e8b881b033543
Reviewed-on: https://chromium-review.googlesource.com/459101
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f7bbc8a3
|
2016-11-16T09:57:22
|
|
ES3.1: Implement framebuffer parameters api for opengl part.
Add new framebuffer parameters that can be set with glFramebufferParameteri
and queried with glGetFramebufferParameteriv.
GL_FRAMEBUFFER DEFAULT WIDTH
GL_FRAMEBUFFER_DEFAULT_HEIGHT
GL_FRAMEBUFFER_DEFAULT_SAMPLES
GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS
BUG=angleproject:1594
TEST=angle_unittests
TEST=angle_end2end_tests
TEST=dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default*
Change-Id: I425e73a6b798fc7c73841ab98d7c8aabc381133d
Reviewed-on: https://chromium-review.googlesource.com/412126
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6c1f671b
|
2017-02-14T19:08:04
|
|
Add destroy hooks for several GL objects.
These hooks allow the back-end renderer to free object resources
without having to store pointers to shared device handles for
each and every object. This will allow us to save memory on
back-ends that really care about memory overhead.
There is a downside in that there is more boilerplate in passing
gl::Context handles around everywhere.
BUG=angleproject:1684
Change-Id: I89463bba8d23f92920e8956650cb73c7fc6d66b7
Reviewed-on: https://chromium-review.googlesource.com/426401
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8897afa1
|
2017-02-06T17:17:23
|
|
Pass Context around to Texture::copyImage.
Passing this through the chain will allow us to have access to the
platform methods, as well as be useful in the future for Vulkan.
BUG=angleproject:1660
Change-Id: I819984fceeb5a2a299aa54e59ef3b428f5f9c91f
Reviewed-on: https://chromium-review.googlesource.com/438684
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bddc46b4
|
2016-12-09T09:50:51
|
|
ES31: Implement multisampled Textures.
Implement TexStorage2DMultisample and getMultisamplefv entry point.
Also modify sample state for Textures and Framebuffers.
BUG=angleproject:1590
TEST=angle_unittests
TEST=angle_end2end_tests
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.sample_position
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_color_2d
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_depth_2d
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_tex
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_rbo
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_non_zero_level
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_high_sample_count
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_zero_sample_count
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_1_texture_2d
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_4_texture_2d
Change-Id: I8fa7bd4e73b95745858a3e16b1b92004b4a18712
Reviewed-on: https://chromium-review.googlesource.com/414309
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
11b038be
|
2016-11-22T21:24:04
|
|
ES31: Implement glGetTexLevelParameter{i|f}v entry point
BUG=angleproject:1679
TEST=dEQP-GLES31.functional.state_query.texture_level.*
Change-Id: I36cc7406199fc0c3c1585ad48f010d7dba5fe9e4
Reviewed-on: https://chromium-review.googlesource.com/414250
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9f09037b
|
2016-12-02T10:20:43
|
|
Change dEQP ES 3.1 expectations from FAIL to SKIP.
UNIMPLEMENTED debug spam was causing the tests time time out. We can mark them
as FAIL again once the dEQP test setup/tear down code doesn't emmit so many
messages.
Implement a couple validation cases for ES 3.1 to greatly reduce the spam.
BUG=angleproject:1647
BUG=angleproject:1442
Change-Id: Ie7b4ac8737a2df1c0ada6ad53154ddf2f37d9c3c
Reviewed-on: https://chromium-review.googlesource.com/415520
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
81c6b577
|
2016-10-19T14:07:52
|
|
Implement GL_EXT_texture_sRGB_decode for GL.
BUG=angleproject:1383
BUG=655247
Change-Id: I409b12e1ae418530576de5ec9ce26b7be5d91650
Reviewed-on: https://chromium-review.googlesource.com/400807
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
22416868
|
2016-06-08T16:14:36
|
|
Add dirty bits for internal texture state.
Synchronize TextureGL internal state using the dirty bits.
TexturesBenchmark scores:
Before: 5051
After: 7639
Diff: +51.2%
BUG=angleproject:1386
Change-Id: Id04aef778a47175d1a284564495a646045855b4b
Reviewed-on: https://chromium-review.googlesource.com/393866
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
47110bf4
|
2016-04-20T11:13:22
|
|
Implement CHROMIUM_copy_compressed_texture for D3D11.
BUG=angleproject:1356
Change-Id: Id563997d2921cf558c52a781ae66d8bde58d1f2f
Reviewed-on: https://chromium-review.googlesource.com/339847
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
97073d12
|
2016-04-20T10:42:34
|
|
Implement CHROMIUM_copy_texture for D3D11.
BUG=angleproject:1356
Change-Id: I70246762411dbeeb3e291e317854139a68d80070
Reviewed-on: https://chromium-review.googlesource.com/339434
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a3944d4f
|
2016-07-22T22:13:26
|
|
Add gl::Format to represent a texture/rb/surface format.
This has a few advantages: it preserves all the information of the
internal format, such as if it is sized or unsized. It also saves
looking up the format multiple times in the table, which should
improve speed in some cases.
The extra sized-ness information will allow us to perform the
correct validation in CopyTexSubImage calls.
BUG=angleproject:1228
Change-Id: I42954771b0a9a968f5d787b8cf6e0af721791855
Reviewed-on: https://chromium-review.googlesource.com/362626
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dfde6abf
|
2016-06-09T07:07:18
|
|
Context: Remove mutable gl::State getter.
This will preserve layering - the API layer doesn't mutate the state
directly, it passes the API call through to the Context. Is also
removes the possiblity of any shenanigans of the Validation layer
changing the GL state.
Also, this CL refactors a few validation entry points to take
ValidationContext instead of Context. ValidationContext will be the
correct way to interact with the gl::Context in the Validation code.
Finally, additional refactorings make ContextState a proper class with
private data. This allows the ContextState itself to keep a mutable
pointer to the gl::State, so ValidationContext can modify it if
necessary (and it will be necessary for Framebuffer completeness
caching).
BUG=angleproject:1388
Change-Id: I86ab3561573caa9535c8d1b8aad4ab3d0e7cd470
Reviewed-on: https://chromium-review.googlesource.com/348954
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f2b1560
|
2016-05-13T16:15:35
|
|
Fix GenerateMipmap when base level or max level are set
According to GLES 3.0.4 section 3.8.10, GenerateMipmap should generate
levels based on the base level, and generate them at most up to the
max level. Levels outside the base/max level range should be unchanged
by GenerateMipmap.
The Texture class is fixed so that the image descs are set only for
the changed mipmap range when GenerateMipmap is called.
The D3D backend is fixed so that mipmap generation is correctly
started from the base level instead of level 0, and making sure that
mipmaps are generated only up to the max level. Generating mipmaps for
array textures is also fixed for cases where the base level depth >=
max(width, height) * 2.
The GL backend is fixed to sync texture state before GenerateMipmap is
called, so that base level and max level are set correctly in the
driver.
The GenerateMipmap entry point is refactored so that it has a separate
validation function and a context function which does the work.
Validation for out-of-range base levels is added.
New tests are added to verify the functionality. One corner case in
the tests fails on NVIDIA GL drivers likely due to a driver bug -
similar rules for GenerateMipmap are found from newer GLES specs and
also OpenGL specs (checked versions 3.3 and 4.4).
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: Ifc7b4126281967fc4f6dc4f9452e5b01e39f83d7
Reviewed-on: https://chromium-review.googlesource.com/344514
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e8528d89
|
2016-05-16T17:50:52
|
|
Fix determining texture mipmap completeness
The code didn't previously take base level properly into account
when determining how many levels to check when checking for texture
completeness.
The code is refactored so that the "q" value in spec, that is the
maximum mipmap level for determining completeness, can be queried from
TextureState. This value is used now for checking completeness.
This requires moving ImageDescs under TextureState. Functions that
operate on the ImageDesc array are also moved from Texture to
TextureState. TextureState members are also renamed to start with the
"m" prefix and made private.
Also handle levels outside the base/max level range consistently in
eglCreateImageKHR validation. We interpret the spec so that if the
level used for the EGL image is not a part of the texture levels that
affect texture completeness, an error is generated.
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: I038ef24aa83e0a6905ca3c0bbada5989eecb00d9
Reviewed-on: https://chromium-review.googlesource.com/344880
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
be815a4f
|
2016-05-12T20:38:38
|
|
Apply effective base and max level on GL backend
This works around GL drivers that neglect to clamp the base level or
max level of immutable textures.
BUG=angleproject:596
BUG=610800
TEST=angle_end2end_tests
Change-Id: Ie4e04aaa9253f2befd73bccefa7759486b3ef487
Reviewed-on: https://chromium-review.googlesource.com/344590
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
77ae8d57
|
2016-05-06T14:19:01
|
|
Share TextureState structure with TextureImpl
This refactoring patch removes the need to pass texture state to
methods of TextureImpl in some cases. It also adds target value to
TextureState, and moves TextureState definition to Texture.h.
The effective base level can now also be queried from TextureState,
which reduces the need to pass it around.
Two different code paths that dealt with the TextureStorage11 SRV
cache are combined into one.
Besides refactoring, this patch fixes applying mTopLevel twice when
determining the amount of mip levels TextureStorage11.
BUG=angleproject:596
TEST=angle_end2end_tests, angle_unittests
Change-Id: I1add3d9ad847bec56774e394125156cf9cb0fc2a
Reviewed-on: https://chromium-review.googlesource.com/342940
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
7aea7e05
|
2016-05-10T10:39:45
|
|
Add EGLImplFactory.
Also rename ImplFactory to GLImplFactory.
This will allow us to use the same factory design pattern for EGL
objects, and to use State helper classes to share data with Impls.
BUG=angleproject:1363
BUG=angleproject:1369
Change-Id: I07a8fe40838d5d4ca32b04910c306edeab4d25a7
Reviewed-on: https://chromium-review.googlesource.com/342051
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a314b61c
|
2016-03-10T16:43:00
|
|
Determine D3D texture storage size with correct base level
The size of the texture storage is now determined by extrapolating
the level zero texture dimensions from the base level dimensions.
This fixes crashing when images for levels below the base level are
not defined, and also fixes texture storage dimensions being
calculated wrong in case the levels outside the used level range have
dimensions that are inconsistent with the dimensions inside the used
level range.
Checking texture level completeness in TextureD3D is now done based on
the dimensions of the base level, and levels that are outside the base
level to max level range are not taken into account. Textures are
marked incomplete in case their base level is greater than their max
level.
Changing the base level can also affect the size of the storage
required for the texture. Old storage is now discarded when the base
level is changed and the new base level calls for different storage
dimensions.
Code in TextureD3D is refactored so that "base level" actually means
the base level of the texture specified through the GLES API, and
"level zero" is used where TextureD3D would sometimes previously use
"base level".
Changing either the base level or max level can also affect texture
completeness, so invalidate the cached completeness in Texture if
they are changed.
Some of the added tests are still failing on Intel and NVIDIA OpenGL
drivers because of driver bugs. Tests also fail on OSX.
BUG=angleproject:596
TEST=angle_end2end_tests,
dEQP-GLES3.functional.texture.* (no regressions),
dEQP-GLES3.functional.shaders.texture_functions.* (no regressions),
dEQP-GLES3.functional.state_query.texture.* (no regressions)
Change-Id: Icd73d6e29f84a341ed5ff36d5ec5cb2f469cb4e8
Reviewed-on: https://chromium-review.googlesource.com/333352
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
bda75597
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I39b6ec393ea338e2c843fb911acc1b36cd1158a0
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-on: https://chromium-review.googlesource.com/341254
Reviewed-by: Ian Ewell <ewell@google.com>
|
|
9670b03e
|
2016-04-29T09:47:47
|
|
Revert "Finish NV12 support via streams."
Broke Windows Clang compilation, see https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Clang%20Builder%20%28dbg%29/builds/3583/steps/compile/logs/stdio and search for TextureStorage11.h
This reverts commit 9b8b359fa3615be7c7492239a48f61103b2e4fcc.
Change-Id: I6e54305eba02b40927a35577594df39e951adb32
Reviewed-on: https://chromium-review.googlesource.com/341430
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9082b982
|
2016-04-27T15:21:51
|
|
Rename gl::Data to gl::ContextState.
Part of the new world order of renaming the Obj::Data classes to ObjState.
BUG=angleproject:1363
Change-Id: I15cf002b8b093d687f540b9e86f045874af24a7e
Reviewed-on: https://chromium-review.googlesource.com/340740
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9b8b359f
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I098940e6f25e113dcc4fc8d22ffed4b5a16fd860
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
82c47ad0
|
2016-04-20T18:28:47
|
|
Pass ImplFactory to Texture constructor
This improves encapsulation inside the Texture class, and removes
duplication of createTexture calls. This is a necessary step towards
adding a shared "Data" structure to the Texture classes, following a
similar pattern as for example the Framebuffer class.
This patch also shares the same MockFactory class among different
unit tests.
BUG=angleproject:596
TEST=angle_unittests
Change-Id: Ie8d3a9aa4ec35565d7ecbabb8c40e7b1ba068721
Reviewed-on: https://chromium-review.googlesource.com/340200
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
73a84969
|
2016-02-12T09:27:23
|
|
Refactor more Texture entry points to a consistent style.
TexImage, SubImage and the Compressed variants were all taking a GL
Context as the first parameter, which is a layering violation and
also caused problems with reworking how the sync works. Fix this
by refactoring them in the same style as the CopyTex* entry points.
BUG=angleproject:1260
BUG=angleproject:747
Change-Id: Ibe5e87d0ebc790e2dcadb8ba153cf40fec73d1f6
Reviewed-on: https://chromium-review.googlesource.com/327258
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
70d0f499
|
2015-12-10T17:45:46
|
|
Implement GL_KHR_debug.
BUG=angleproject:520
Change-Id: I9ced3e7ab1515feddf2ec103c26b2610a45b1784
Reviewed-on: https://chromium-review.googlesource.com/319830
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
66988745
|
2015-12-22T19:39:19
|
|
Revert "Implement GL_KHR_debug."
This reverts commit 6c521b7a70a53b1c9f7762e53e34b5a8146b0f7b.
Change-Id: I6ff981198e31f34d3e405edea6277ee75516d6ee
Reviewed-on: https://chromium-review.googlesource.com/319820
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
6c521b7a
|
2015-12-10T17:45:46
|
|
Implement GL_KHR_debug.
BUG=angleproject:520
Change-Id: I78d14cc8c94f5cef58604220f0ca847473b25bf8
Reviewed-on: https://chromium-review.googlesource.com/317820
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
6b120b9f
|
2015-11-24T13:00:07
|
|
Add checks for FBO attachment layer.
We would allow the app to attach layers that were out-of-bounds. Fix
this by checking against the underlying resource dimensions. Also
rework the code a bit to clean up the texture size query, which is
available from the ImageDesc.
BUG=angleproject:869
Change-Id: I984f1db16daea6ca650d795884d8ec2cb8f05ebb
Reviewed-on: https://chromium-review.googlesource.com/313991
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
69cce580
|
2015-09-17T13:20:36
|
|
Split the SamplerState struct into SamplerState and TextureState.
SamplerState is now only the members that are overridden by a sampler
object, this makes it easy to update those specific members.
Opted for getters and setters for each member in Texture and Sampler
because it will be required to enable dirty bits for these states.
Added maxAnisotropy to the SamplerState instead of texture state. The
sampler objects extension mentions it should be there.
BUG=angleproject:1162
Change-Id: I5aa6d702bd5915ee9df1976afef3c8c1f69d27c8
Reviewed-on: https://chromium-review.googlesource.com/300490
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
51706eae
|
2015-08-07T14:39:22
|
|
Make FramebufferAttachmentObject not refcountable
Re-land with a fix for an unitialized variable
Instead the refcount is done via callbacks. This allows Surface to
ignore this refcounting which will be useful in a follow-up CL.
BUG=angleproject:891
Change-Id: I1925ccaa4ce7b502b33088660d31c404b8313cb5
Reviewed-on: https://chromium-review.googlesource.com/293712
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
0020426e
|
2015-08-12T19:07:29
|
|
Revert "Make FramebufferAttachmentObject not refcountable"
BUG=
This reverts commit 19ba57469aa02074d094a9aef104f84d0b6d881e.
Change-Id: I5dce6c8a81570e22affbcaf32183a97c97849718
Reviewed-on: https://chromium-review.googlesource.com/293351
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
19ba5746
|
2015-08-07T14:39:22
|
|
Make FramebufferAttachmentObject not refcountable
Instead the refcount is done via callbacks. This allows Surface to
ignore this refcounting which will be useful in a follow-up CL.
BUG=angleproject:891
Change-Id: I39b028476e0e3ab1837c033e1121ea21e54d7970
Reviewed-on: https://chromium-review.googlesource.com/291651
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
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>
|
|
a840617a
|
2015-07-21T16:53:39
|
|
Implement the egl and gl layers of EGL Image.
Add end2end tests and unittests.
BUG=angleproject:970
Change-Id: Ie8306971730a793f08dfd09ead1bfd6ff3e4623d
Reviewed-on: https://chromium-review.googlesource.com/291260
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
4274f7d2
|
2015-08-05T23:07:38
|
|
Revert "Implement the egl and gl layers of EGL Image."
This reverts commit 22a4f38c2ca9ca430b5f976fc7fc816d88918eba.
Change-Id: I07acbfe28d11675236de2ea7f6b050c25f80579a
Reviewed-on: https://chromium-review.googlesource.com/290960
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
22a4f38c
|
2015-07-21T16:53:39
|
|
Implement the egl and gl layers of EGL Image.
Add end2end tests and unittests.
BUG=angleproject:970
Change-Id: I13fc501b24c3f11bfedc810c1ff80fcf1318877c
Reviewed-on: https://chromium-review.googlesource.com/287343
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8509d86e
|
2015-05-20T14:06:13
|
|
Pipe the imageSize parameter from the entry point to avoid recomputation.
BUG=angleproject:884
Change-Id: Ic4d5bdc5b65ebcb8c57b960e84708e945db0276a
Reviewed-on: https://chromium-review.googlesource.com/272422
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
bb714f72
|
2015-05-20T10:22:18
|
|
Release egl::Surface on Texture image changes.
We would get into a broken state if the user would bind a Texture
to an egl::Surface, then change the Texture. This is valid in egl,
and should release the Surface when it happens.
BUG=485543
Change-Id: Idfaa305ac704f2bc579e79be816e88a23e69351b
Reviewed-on: https://chromium-review.googlesource.com/271986
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
eaa759c4
|
2015-04-02T13:02:53
|
|
Remove Texture serials and Texture::INCOMPLETE_TEXTURE_ID.
Texture serials were not used in any place that pointers could not be used
and Texture::INCOMPLETE_TEXTURE_ID was only referenced by RendererD3D.
This was the last place that serials are used in the gl layer.
BUG=angleproject:681
Change-Id: Iad24321fba57db8ade3c9eb8f04cc20e98ded1b0
Reviewed-on: https://chromium-review.googlesource.com/263659
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8cf813c7
|
2015-05-04T12:55:18
|
|
Query attachment render targets from Impl class.
*re-land with fix for D3D9*
This allows us to eradicate the GetAttachmentRenderTarget methods.
This improves potential performance, at the cost of exposing a
Renderer-specific function at the API object level.
BUG=angleproject:963
Change-Id: Iee9f985ddaed668df0c622228004b348eb4d2ea8
Reviewed-on: https://chromium-review.googlesource.com/269006
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e737b06c
|
2015-05-04T16:53:56
|
|
Revert "Query attachment render targets from Impl class."
D3D9 bug is causing failures in the WebGL depth texture test.
BUG=angleproject:963
This reverts commit 804e8436f91733e1d0f769ec10082e4741f2e549.
Change-Id: I660f05033360e97258794138cb50b604f5ac16b6
Reviewed-on: https://chromium-review.googlesource.com/269005
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
804e8436
|
2015-04-30T09:42:23
|
|
Query attachment render targets from Impl class.
This allows us to eradicate the GetAttachmentRenderTarget methods.
This improves potential performance, at the cost of exposing a
Renderer-specific function at the API object level.
BUG=angleproject:963
Change-Id: Ifc227b5f42e87bd4deb451d685618cf61fea39f1
Reviewed-on: https://chromium-review.googlesource.com/263491
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
79481d65
|
2015-04-14T08:13:47
|
|
Add FramebufferAttachmentObject base class.
This lets us share objects (Textures/RBs/Surface) in the attachment
class. It will let us squash the attachment classes into one type,
which will in turn let us store them by-value, instead of by-pointer.
BUG=angleproject:963
Change-Id: Ia9a43dbc3b99475c00f6bc2ed5475deef55addc3
Reviewed-on: https://chromium-review.googlesource.com/263487
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
0fe40534
|
2015-02-10T12:01:27
|
|
Cache sampler completeness in the Texture class.
BUG=angle:909
Change-Id: I14e06e01d111e9d5eec415f4c2d831b61dcb1e3d
Reviewed-on: https://chromium-review.googlesource.com/248070
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
866dd2d1
|
2015-02-10T11:08:32
|
|
Store the texture image information in a std::vector instead of a std::map.
BUG=angle:909
Change-Id: Ib595306f6cf0633b16bff6389373c2bb2cc29ec9
Reviewed-on: https://chromium-review.googlesource.com/248051
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
b9266276
|
2015-01-29T13:25:14
|
|
Update texture size information on egl[Bind|Release]TexImage.
BUG=450257
Change-Id: I7609131d78f255bf9f79b42f39b02303a5c14b60
Reviewed-on: https://chromium-review.googlesource.com/243915
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
19d438d4
|
2015-01-19T13:42:12
|
|
Fix checks for base and max level in Texture.
The dEQP unpack buffer tests were failing because they use a max and
base level of zero with mipmapping enabled. Update our sampler
completeness checks to account for min and max level.
We'll have to dig in to our code to find corner cases in D3D with
base and max level.
Change-Id: I74357c6dc2e1908d0463d2e5cbc8ee91b61a3b7f
Reviewed-on: https://chromium-review.googlesource.com/240763
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
909b90ce
|
2015-01-12T14:07:26
|
|
Use the ImageIndex class for indexing the Texture size information.
BUG=angle:681
Change-Id: I0c8d1c04ca8eefb9b618ee6635c0643d162c0cc1
Reviewed-on: https://chromium-review.googlesource.com/240241
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
691e58cd
|
2014-12-19T17:03:25
|
|
Merge all gl::Texture* classes.
The validation for sampler completeness had a lot of duplicated code.
The special cases have been merged into the base class by checking mTarget.
BUG=angle:681
Change-Id: I11d94c1432f8fc70a1edaaf8228bbc43c3c8fff3
Reviewed-on: https://chromium-review.googlesource.com/236932
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7c973eaa
|
2014-12-19T15:58:28
|
|
Move egl texture binding to the base texture class.
It's still only valid to bind a 2D texture but the validation layer
verifies that.
BUG=angle:681
Change-Id: I744dc32f9bd0f69b1e1235b8feef7e796167d033
Reviewed-on: https://chromium-review.googlesource.com/236931
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
d03e10e2
|
2014-12-18T17:46:58
|
|
Remove references to the Image class from gl::Texture and rx::TextureImpl.
BUG=angle:681
Change-Id: I83659f47cbe9f22ff5ad0cf54471544bd14775aa
Reviewed-on: https://chromium-review.googlesource.com/236690
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a9be0dc6
|
2014-12-17T12:34:40
|
|
Refactor Texture to track image information for size and format queries.
BUG=angle:681
Change-Id: Ifb3f52d6348e4479181e66f1c39578f49e9dcf76
Reviewed-on: https://chromium-review.googlesource.com/235613
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
0a4f1e27
|
2014-12-17T12:33:26
|
|
Merge the Texture set*Image methods and use objects for sizes and offsets.
BUG=angle:681
Change-Id: If2e981c522ca5ba3eab4484594cb41aa23800ec4
Reviewed-on: https://chromium-review.googlesource.com/236261
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
f4134d20
|
2014-12-15T10:29:47
|
|
Use gl::Data as a parameter to Texture::isSamplerComplete.
BUG=angle:861
Change-Id: I3fadf954e6d28dd82e361ceac4ba1967dbd7e8bf
Reviewed-on: https://chromium-review.googlesource.com/235612
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
d8a2258c
|
2014-12-17T15:28:23
|
|
Remove all uses of "actual" formats.
BUG=angle:861
Change-Id: I7cd2d1a56772fdf18bcf926456399322d13e7a4f
Reviewed-on: https://chromium-review.googlesource.com/236305
Reviewed-by: Brandon Jones <bajones@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
9d9132df
|
2014-12-03T14:46:48
|
|
Remove support for compiling libANGLE as a dynamic library.
BUG=angle:733
Change-Id: Iacef45b89f234091eb5df505437adabece1e564b
Reviewed-on: https://chromium-review.googlesource.com/232961
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8bc361e1
|
2014-11-20T16:23:31
|
|
Support compiling libANGLE as a static or shared library.
BUG=angle:733
Change-Id: If27d3330534bce0f5b691010ea7d97bcb7579122
Reviewed-on: https://chromium-review.googlesource.com/231052
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
2207213b
|
2014-11-20T15:15:01
|
|
Move as many files as possible from common to libANGLE.
BUG=angle:733
Change-Id: If01c91cd52ac5c2102276a9fdc4b68ebc13e47f9
Reviewed-on: https://chromium-review.googlesource.com/231850
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
4349ab85
|
2014-11-25T15:53:34
|
|
Revert "Move as many files as possible from common to libANGLE."
Chromium directly includes our common/version.h and couldn't build after this change.
This reverts commit f0a2c7727f9863c38a435a16a69d513c481fbbdd.
Change-Id: Iafc41b1a3973f609518fe3588fdb64cecc285332
Reviewed-on: https://chromium-review.googlesource.com/231840
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
f0a2c772
|
2014-11-20T15:15:01
|
|
Move as many files as possible from common to libANGLE.
BUG=angle:733
Change-Id: I40cee6e2e305ac493acbc8649f858785c0569aed
Reviewed-on: https://chromium-review.googlesource.com/231051
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
0a73dd85
|
2014-11-19T16:18:08
|
|
Fix include guards.
BUG=angle:733
Change-Id: I08b2c11c4831f1161c178c1842b10e807185aced
Reviewed-on: https://chromium-review.googlesource.com/230831
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
2b5420c0
|
2014-11-19T14:20:15
|
|
Merge libGLESv2 and libEGL classes into libANGLE.
BUG=angle:733
Change-Id: Ic491c971411fe82c56cd97c5c8325ac14ec218df
Reviewed-on: https://chromium-review.googlesource.com/230830
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|