|
2269011c
|
2025-06-30T14:08:11
|
|
Remove BitSet::to_ulong and BitSetArray::to_ulong
BitSet::to_ulong() is a bit redundant with bits(), and has a risk of
losing upper bits on windows platform where unsigned long is 32 bit.
This CL removes the usage of it and replaced with bits().
BitSetArray::to_ulong() method only captures up to 64 bits, all other
bits are dropped silently which is wrong. This CL fix this and serialize
it as a vector of uint64_t. BitSetArray::to_ulong() is removed in this
CL.
Bug: angleproject:42264163
Change-Id: I663b2cdacc0e930ee616e333131e831ec124a9d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6691283
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
b3af2e86
|
2024-12-31T08:51:37
|
|
Enhance MemoryBuffer API
Add support for -
1. reserve - users can reserve sufficient capacity upfront to
minimize subsequent reallocations due to resize
2. append - to append data from a source so user doesn't need to
track offsets explicitly
Bug: angleproject:386749841
Tests: MemoryBufferTest*
Change-Id: Ibf2a3228d5a00ed34a7e0c5e3eb185e42677d676
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6135238
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fa70c4cb
|
2024-02-02T13:59:06
|
|
CL/Vulkan: Implement the buffer rect enqueues
This change implements the buffer rect copy using a series of memcopies.
The CL buffer rect doesn't map cleanly to the Vulkan copy buffer
command due to the presence of pitches, and implementing as such will
introduce more barriers in the command stream. For now we do process
this command at call entry point.
Bug: angleproject:379764609
Change-Id: I89a9032a4bbfa48899c448eb131a5ce048e8fd60
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034035
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7c811715
|
2024-09-25T11:09:44
|
|
Vulkan: fix crash when clearing stencil with ClearBuffer
Follow up to [1] which fixed a crash with glClear, but the bug remained
with glClearBufferiv. This change refactors the "is stencil write
masked out" query to always take the framebuffer's stencil bit count
into account (practically always 8), which also happens to make the rest
of the code checking this query more accurate in the presence of
nonsense masks where the bottom 8 bits are 0.
[1]: https://chromium-review.googlesource.com/c/angle/angle/+/3315158
Bug: chromium:40207259
Bug: angleproject:42266334
Change-Id: I68a6b0b75c67ed2cdc8c4d03b243efe5495efce1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5889788
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
05c62ebc
|
2024-09-24T13:41:57
|
|
Fix check for whether stencil write is masked out
The stencil write mask is the only thing that decides what bits get
written to. Previously, this was masked with the reference bitmask to
determine if any bits get written to, which is incorrect.
The effect of this was that the Vulkan backend would use the READ_ONLY
layout for the depth/stencil attachment even though stencil could have
been written to the attachment.
Bug: angleproject:42266334
Change-Id: Ice6a35f4691fc8e09c7d5e1db6439c3079dfa039
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5887905
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cb9d52f8
|
2024-09-11T15:26:49
|
|
Vulkan: Add Pipeline blob cache per chunk CRC check
Each chunk now have it's own CRC value, that is calculated starting
from beginning of the data up to the end of the chunk. This way last
chunk will have CRC of the entire data, avoiding calculating it
separately.
The `GenerateCRC32()` was splint into `InitCRC32()` and `UpdateCRC32()`
function, which supports calculating running CRC32.
Calculating CRC this way has some performance hit, when using many
small chunks. Increasing chunk size to at least 1 MB almost negates any
overhead from running `UpdateCRC32()` multiple times.
On S921B with locked frequencies, calculating CRC for 89 MB of data
using single call took 7.13 ms and 13.34 ms, when using multiple calls.
However even this difference is negligible, because compressing 291 MB
of data to 89 MB took 9.22 seconds.
Bug: angleproject:4722
Change-Id: Ic6f3245b3aa7319ac13502d2c43e1a084a9bc8b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5854709
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
8469debb
|
2024-09-04T20:04:10
|
|
Vulkan: Add dual slots in CompressAndStorePipelineCacheVk()
Change fixes following problem:
Currently, each call to `CompressAndStorePipelineCacheVk()` stores
chunks in order, starting from 0. This overrides previously stored
chunks. In case of app termination (kill) in the middle of this
process, the entire cache data will be corrupted, since it will
partially contain chunks from the new and old caches.
Solution:
In order to fix this problem, this change introduces `slotIndex` into
the `chunkCacheHash` calculation. Slot index is managed by
`vk::Renderer::getNextPipelineCacheBlobCacheSlotIndex()` method, which
will alternate between 0 and 1 when "useDualPipelineBlobCacheSlots"
feature is enabled, and always 0 otherwise.
Additionally, chunk storing order is reversed: last chunk is stored
first and the first (0 chunk) - last. This is done because 0 chunk is
the first that is loaded in `GetAndDecompressPipelineCacheVk()` and used
as indication that there is data in the cache. Writing it last, ensures
that other chunks will be also available.
When "useDualPipelineBlobCacheSlots" is enabled, each call to
`CompressAndStorePipelineCacheVk()` will use slot index opposed to the
slot that is stored in the cache, avoiding damaging existing data. After
writing all chunks for a brief moment there may be 2 instances of the
data. However, data for the previous slot will be immediately erased
(by writing 1/0-sized blobs) starting from the 0 chunk.
To control if erasing of old pipeline cache data will be erased by using
0-sized or 1-sized blobs blobs, added
`useEmptyBlobsToEraseOldPipelineCacheFromBlobCache` feature.
The `GetAndDecompressPipelineCacheVk()` function will iterate over each
available slot index checking only 0 chunk until data is found.
In case of the OpenCL API, features will always have following values:
- "useDualPipelineBlobCacheSlots" -> false
- "useEmptyBlobsToEraseOldPipelineCacheFromBlobCache" -> true
Note: this solution requires 2X pipeline cache size space in the blob
cache to work as expected, otherwise it will exacerbate other problem:
When blob cache is full, but still allows to store the current
pipeline cache data, storing next chunk may trigger eviction of
already stored items. Depending on the blob cache implementation,
eviction process may choose to evict chunks from the current pipeline
cache data. As the result: blob cache will not contain all chunks.
The above problem will be addressed in the follow up CL.
Bug: angleproject:4722
Change-Id: I2920bc3d89263280cdfe0466446fca26415e2b25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5756576
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
2b15c795
|
2024-08-09T17:13:17
|
|
Make explicit that GenerateCrc() return correct CRC32 hash
According to the documentation of `crc32_z()`, to get required
initial value need to call `crc32_z()` with nullptr "buf" parameter.
Using this initial value will produce correct CRC32 hash.
On practice, `crc32_z()` with nullptr "buf" produces "0", so the current
code actually calculates correct CRC32 hash. However, this is still
against the documentation, and in different versions of zlib or
architectures may produce incorrect results.
Technically, `GenerateCrc()` does not require to produce correct CRC32
hash - the main purpose is to calculate some hash value.
But because updating this function to produce correct CRC32 hash is very
easy, this change updates the implementation and renames it to
`GenerateCRC32()` to explicitly state that it generates correct CRC32
hash. After this, function may be used in scenarios where CRC32 hash
is really required.
Bug: angleproject:4722
Change-Id: Ib159f2d3ad1a8388f505abb09a6d0b19a51b7eec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5777145
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e37c79d4
|
2023-11-23T15:59:12
|
|
Fix DecompressBlob() when compressed data is invalid
Function uses `zlib_internal::GetGzipUncompressedSize()` to calculate
the `uncompressedSize`. This size comes directly from `compressedData`.
If source data is invalid or has different format, then calculated
size may be any value, including 0.
Zero `uncompressedSize` cases ASSERT() in `angle::MemoryBuffer::data()`
and may case UB in `zlib_internal::GzipUncompressHelper()`.
Bug: chromium:1485277
Change-Id: Iaa92d93a5a1b530b8686cfb544eb66075b0874e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5729953
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
62eb8fbe
|
2024-05-06T07:22:15
|
|
Vulkan: Switch to using zlib::crc32_z for CRC generation
A CRC is generated to validate blobs that are compressed / decompressed.
There was a custom CRC generator being used, switch over to using
zlib's crc32_z(...)
Also increment kPipelineCacheVersion's version since both the header
and structure have been updated.
Data collected with dEQP test suite -
1. egl
size of blob - 74022 bytes
ComputeCRC16 - 0.001683 sec
zlib::crc32_z - 0.000008 sec
2. gles2
size of blob - 8709119 bytes
ComputeCRC16 - 0.130268 sec
zlib::crc32_z - 0.000625 sec
3. gles3
size of blob - 20308078 bytes
ComputeCRC16 - 0.433155 sec
zlib::crc32_z - 0.002547 sec
4. gles31
size of blob - 11041841 bytes
ComputeCRC16 - 0.192512 sec
zlib::crc32_z - 0.000452 sec
Bug: angleproject:4722
Change-Id: Iaa7026c9c8a748b446ef2320e584a2937336c7b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5518595
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
58742dfb
|
2024-05-05T12:46:11
|
|
Use trim() instead of resize()
... when decompressing a blob, this prevents a reallocation and copy.
Bug: angleproject:4722
Change-Id: Iedc20cb9a41feb754c7f48188e01ab73c5c03c15
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5517530
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9aa6d3da
|
2024-04-26T11:34:10
|
|
Add trim support to MemoryBuffer
There are usecases where we need a MemoryBuffer to be trimmed to a
smaller size. In such cases there is no need to perform a resize,
which would trigger a reallocation. Instead just update
MemoryBuffer's size.
Bug: angleproject:4722
Change-Id: I5b6cca121977903ffa7663591eaec62f6ffda97a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5513269
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
545e3f6e
|
2024-03-01T23:27:03
|
|
Vulkan: Decouple RendererVk from egl::BlobCache
The new vk::GlobalOps class abstracts access to egl::BlobCache. This is
a step towards decoupling RendererVk from egl::Display for direct use
with OpenCL.
Bug: angleproject:8564
Change-Id: I7b3910254430df74b889759639da1749735584a7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5332082
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7b62e4f5
|
2023-11-06T00:00:00
|
|
D3D11: Avoid GLenum conversions in GetBlendStateKey
Bug: b/300968773
Change-Id: Ia41f77e686e0f1afc91381e29334f73859868129
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5009815
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b4901d0
|
2023-11-06T10:43:14
|
|
Avoid GLenum conversion in BlendStateExt blend and equation
The following functions now return value as is without ToGLenum
conversion (that is often unnecessary):
getEquationColorIndexed
getEquationAlphaIndexed
getSrcColorIndexed
getDstColorIndexed
getSrcAlphaIndexed
getDstAlphaIndexed
(at least) getEquationColorIndexed is on the hot path with noticeable
performance impact; this CL also moves the implementation to the
header to allow inlining.
Bug: b/300968773
Change-Id: Ie223abe14b12afd7844686863ee5806945d10e45
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5008031
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
73252f34
|
2023-09-20T16:46:47
|
|
Fix ASSERT and potential bug with UnlockedTailCall
ASSERT happened in the Instagram application.
- record REEL using camera;
- press "Next" button;
- return to the previous screen;
- ASSERT happens.
Crash details:
pid: 31451, tid: 2938, name: mediacompositio >>> com.instagram.android <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'FATAL: entry_points_egl_autogen.cpp:437 (EGL_GetError): ! Assert failed in EGL_GetError (../../src/libGLESv2/entry_points_egl_autogen.cpp:437):
backtrace:
...
#07 pc 0000000000627740 /vendor/lib64/egl/libGLESv2_samsung.so (gl::LogMessage::~LogMessage()+140) (BuildId: acced3587e668343)
#08 pc 000000000027e79c /vendor/lib64/egl/libGLESv2_samsung.so (EGL_GetError+360) (BuildId: acced3587e668343)
#09 pc 000000000007c14c /system/lib64/libEGL.so (android::eglGetErrorImpl()+28) (BuildId: 5b32b014e5c062afdd3d1abd3ba13dd2)
#10 pc 0000000000079464 /system/lib64/libEGL.so (eglDestroyImageKHR+20) (BuildId: 5b32b014e5c062afdd3d1abd3ba13dd2)
#11 pc 000000000000e540 /system/lib64/libnativedisplay.so (android::EGLConsumer::EglImage::~EglImage()+44) (BuildId: 3b0b03d2c8ab7eb49d16eb7be29eb3fd)
#12 pc 000000000000e598 /system/lib64/libnativedisplay.so (android::EGLConsumer::EglImage::~EglImage()+16) (BuildId: 3b0b03d2c8ab7eb49d16eb7be29eb3fd)
#13 pc 000000000000e434 /system/lib64/libnativedisplay.so (android::EGLConsumer::onFreeBufferLocked(int)+156) (BuildId: 3b0b03d2c8ab7eb49d16eb7be29eb3fd)
#14 pc 000000000000bda0 /system/lib64/libnativedisplay.so (android::SurfaceTexture::freeBufferLocked(int)+48) (BuildId: 3b0b03d2c8ab7eb49d16eb7be29eb3fd)
#15 pc 00000000000bc294 /system/lib64/libgui.so (android::ConsumerBase::onBuffersReleased()+172) (BuildId: f219f4196018eeed01e28ec428c73c99)
#16 pc 000000000008d9d4 /system/lib64/libgui.so (android::BufferQueue::ProxyConsumerListener::onBuffersReleased()+92) (BuildId: f219f4196018eeed01e28ec428c73c99)
#17 pc 0000000000099608 /system/lib64/libgui.so (android::BufferQueueProducer::disconnect(int, android::IGraphicBufferProducer::DisconnectMode)+184) (BuildId: f219f4196018eeed01e28ec428c73c99)
#18 pc 00000000000eb3ec /system/lib64/libgui.so (android::Surface::disconnect(int, android::IGraphicBufferProducer::DisconnectMode)+268) (BuildId: f219f4196018eeed01e28ec428c73c99)
#19 pc 00000000000eaf04 /system/lib64/libgui.so (android::Surface::hook_perform(ANativeWindow*, int, ...)+264) (BuildId: f219f4196018eeed01e28ec428c73c99)
#20 pc 0000000000031214 /system/lib64/libvulkan.so (vulkan::driver::DestroySurfaceKHR(VkInstance_T*, VkSurfaceKHR_T*, VkAllocationCallbacks const*)+56) (BuildId: 44c563855311012ead3ce5e7afdb9792)
#21 pc 000000000039bb40 /vendor/lib64/egl/libGLESv2_samsung.so (void std::__Cr::__function::__policy_invoker<void (void*)>::__call_impl<std::__Cr::__function::__default_alloc_func<rx::WindowSurfaceVk::destroy(egl::Display const*)::$_0, void (void*)> >(std::__Cr::__function::__policy_storage const*, void*)+140) (BuildId: acced3587e668343)
#22 pc 0000000000522114 /vendor/lib64/egl/libGLESv2_samsung.so (angle::UnlockedTailCall::runImpl(void*)+56) (BuildId: acced3587e668343)
#23 pc 000000000027dcec /vendor/lib64/egl/libGLESv2_samsung.so (EGL_DestroySurface+260) (BuildId: acced3587e668343)
This CL will fix the ASSERT as well as remove possibility of calling
same callback twice.
Bug: angleproject:8127
Change-Id: I8e56981d0db2ef5723afedc22d5286421237444b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4874040
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
9740b01b
|
2023-09-08T16:30:08
|
|
Enhance UnlockedTailCall run method
UnlockedTailCall::CallType is now std::function<void(void *)>
This is in preparation for upcoming changes where unlocked
tail calls need access to objects outside block and namespace
scope.
Bug: angleproject:8340
Tests: UnlockedTailCall*
Change-Id: Ida6822b701c5c11ce4b8f6e3aae53108755e2cad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4852021
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
8b0af482
|
2023-08-21T00:00:00
|
|
Validate active draw buffers for dual-source blending
Fail if more than MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT
draw buffers are enabled when dual-source blending
is used.
Drive-by:
Do not invalidate draw state on changing blend
equations if KHR_blend_equation_advanced is
not enabled.
Bug: angleproject:1085
Bug: angleproject:7177
Change-Id: Ieff80ce777c53b1d8183e1d0a52b7d2224347448
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4823164
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
73f9cf00
|
2023-03-31T00:00:00
|
|
GL: Implement polygon mode extensions
* Implemented polygon mode extensions
on the OpenGL backend
* Supported capture and serialization
of the new commands and state
* Added PolygonModeTest end2end tests
Bug: angleproject:1791
Bug: angleproject:8132
Change-Id: I3bc08546a02f110dd739950129bee25ccc507bf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4492683
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1328f2f3
|
2023-04-17T16:43:12
|
|
Vulkan: Destroy the surface without holding the EGL lock
This change defers surface destruction to the end of the entry point
that causes it so that it is done without holding the EGL lock. This
works around a specific deadlock in Android. On this platform:
- For EGL applications, parts of surface creation and destruction are
handled by the platform, and parts of it are done by the native EGL
driver. Namely, on surface destruction, native_window_api_disconnect
is called outside the EGL driver.
- For Vulkan applications, vkDestroySurfaceKHR takes full responsibility
for destroying the surface, including calling
native_window_api_disconnect.
Unfortunately, native_window_api_disconnect may use EGL sync objects and
can lead to calling into the EGL driver. For ANGLE, this is
particularly problematic because it is simultaneously a Vulkan
application and the EGL driver, causing `vkDestroySurfaceKHR` to call
back into ANGLE and attempt to reacquire the EGL lock.
Since there are no users of the surface when calling
vkDestroySurfaceKHR, it is safe for ANGLE to destroy it without holding
the EGL lock.
Note that only eglDestroySurface and eglMakeCurrent may lead to the
destruction of a window surface.
Bug: b/275176234
Bug: angleproject:8127
Change-Id: I02dc52e53e150943457e3f503e7ef30469f96b05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4428754
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e809e7bd
|
2023-03-13T00:00:00
|
|
Reland "Implement EXT_depth_clamp"
This is a reland of commit f8c1418319ac2aef4b3101e322005b1d0f73120f
Host GPU bugs are observable in iOS Simulator
Original change's description:
> Implement EXT_depth_clamp
>
> * Added depthClamp to the RasterizerState
> * Added DepthWriteTest end2end tests covering
> both clipped and clamped depth writes
>
> Capture
> * Updated serialized rasterizer state
> * Updated CaptureMidExecutionSetup
>
> OpenGL
> * Requires GL 3.2 or ARB_depth_clamp
> on desktop contexts
> * Maps to EXT_depth_clamp on ES
>
> D3D11
> * Maps to the opposite of
> D3D11_RASTERIZER_DESC.DepthClipEnable
> * The new tests uncover several edge cases where
> a workaround is needed to implement unextended
> OpenGL semantics on top of D3D
>
> Metal
> * Maps to the setDepthClipMode command
>
> Bug: angleproject:8047
> Bug: angleproject:8077
> Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I8c5f8304276c97c51b2c3382cd2764592ee0c3fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4349938
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
4a77b0f5
|
2023-03-18T00:16:24
|
|
Revert "Implement EXT_depth_clamp"
This reverts commit f8c1418319ac2aef4b3101e322005b1d0f73120f.
Reason for revert: This change breaks angle_end2end_tests on Metal backend: https://ci.chromium.org/ui/p/chromium/builders/ci/ios-angle-intel/26035/overview
Original change's description:
> Implement EXT_depth_clamp
>
> * Added depthClamp to the RasterizerState
> * Added DepthWriteTest end2end tests covering
> both clipped and clamped depth writes
>
> Capture
> * Updated serialized rasterizer state
> * Updated CaptureMidExecutionSetup
>
> OpenGL
> * Requires GL 3.2 or ARB_depth_clamp
> on desktop contexts
> * Maps to EXT_depth_clamp on ES
>
> D3D11
> * Maps to the opposite of
> D3D11_RASTERIZER_DESC.DepthClipEnable
> * The new tests uncover several edge cases where
> a workaround is needed to implement unextended
> OpenGL semantics on top of D3D
>
> Metal
> * Maps to the setDepthClipMode command
>
> Bug: angleproject:8047
> Bug: angleproject:8077
> Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I829add68c006c72b7b4acf03aee3efa8a9a16fac
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4350876
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
f8c14183
|
2023-03-13T00:00:00
|
|
Implement EXT_depth_clamp
* Added depthClamp to the RasterizerState
* Added DepthWriteTest end2end tests covering
both clipped and clamped depth writes
Capture
* Updated serialized rasterizer state
* Updated CaptureMidExecutionSetup
OpenGL
* Requires GL 3.2 or ARB_depth_clamp
on desktop contexts
* Maps to EXT_depth_clamp on ES
D3D11
* Maps to the opposite of
D3D11_RASTERIZER_DESC.DepthClipEnable
* The new tests uncover several edge cases where
a workaround is needed to implement unextended
OpenGL semantics on top of D3D
Metal
* Maps to the setDepthClipMode command
Bug: angleproject:8047
Bug: angleproject:8077
Change-Id: I1b3448e5b84443e4be18af9bc22d2f8495ac8267
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4347753
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ef0fe638
|
2023-01-16T00:00:00
|
|
Implement EXT_polygon_offset_clamp
* Added polygonOffsetClamp to the RasterizerState
* Adjusted State::setPolygonOffsetParams
* Added PolygonOffsetClampTest end2end tests
* Added StateChangeTestES3.PolygonOffsetClamp test
* Suppressed the affected dEQP test as it has a bug
Capture
* Updated serialized rasterizer state
* Updated CaptureMidExecutionSetup
OpenGL
* Rely on the EXT extension defined both
for desktop and ES contexts
* On desktops, might as well use the ARB extension
or GL 4.6 once ANGLE supports them
D3D11
* Requires FL10_0 or higher
* Maps to D3D11_RASTERIZER_DESC.DepthBiasClamp
* Drive-by cleanup of extensions init code
Vulkan
* Requires depthBiasClamp physical device feature
* Maps to the depthBiasClamp parameter
of the vkCmdSetDepthBias command
Metal
* Maps to the clamp parameter
of the setDepthBias command
Bug: angleproject:7957
Change-Id: If6b28df4084f0a81db29f75fb434e75d394c8730
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4169945
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
704ad44b
|
2022-09-15T10:47:18
|
|
Fix -Wdeprecated-copy-with-user-provided-copy
Example error:
definition of implicit copy assignment operator for 'Foo'
is deprecated because it has a user-provided copy constructor
Bug: chromium:1363759
Change-Id: Ieec435b5c6847ba153bcaebb9a4287ced44fef1f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900494
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Arthur Eubanks <aeubanks@google.com>
|
|
a2f00721
|
2022-06-19T15:17:22
|
|
Vulkan: Extend bounding box when pruning updates
Add support for extending the bounding box when there are updates that
enclose the current bounding box.
Bug: angleproject:4691
Bug: angleproject:7389
Test: Texture2DArrayTestES3.TextureArrayPruneSupersededUpdates*
Change-Id: Ie7e3cc28f17213361b1be407dbb2d984865fe6bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3712897
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
8a8b9665
|
2022-06-08T14:54:37
|
|
Vulkan: Prune superseded staged updates in a texture
Add support for pruning superseded staged updates from a client buffer
to the texture. If the staged update count or the cumulative staged
updates' size exceeds a threshold we check for superseded updates and
prune the list.
Bug: angleproject:4691
Bug: angleproject:7389
Test: Texture2DTest.InterleavedSupersedingTextureUpdates*
Texture2DTest.ManySupersedingTextureUpdates*
Change-Id: I4b84f13fa20004a3dc68baa552a0af656d92c0a1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3691092
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
62ca6449
|
2022-04-13T09:36:40
|
|
Reland "Fix BlendStateExt::mMaxColorMask initialization"
This is a reland of commit 50d008a7efcab80f34eb742148d05389b2ed247e
Besides fixing the BlendStateExt color mask initialization bug,
the following changes were made:
* All fields were made private with accessor functions.
* A new assertion was added that ensures 64-bit storage for factors
and equations. This allowed dropping one redundant mask.
* Two new helper functions were added.
* BlendStateExt::mMaxDrawBuffers was renamed to mDrawBufferCount.
* The BlendStateExt class is now aligned to 8 bytes with an assertion.
* Expanded test coverage.
Also fixed incorrect usage of BlendStateExt fields in:
* StateManagerGL::syncBlendFromNativeContext
* StateManagerGL::restoreBlendNativeContext
Original change's description:
> Fix BlendStateExt::mMaxColorMask initialization
>
> This variable should not have its unused bits set.
>
> To avoid confusion with other masks of the same class,
> the variable was renamed to mAllColorMask.
>
> Bug: angleproject:7200
> Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:7200
Change-Id: I87a5fe0f9dfbbf5e525b9120f772aa9adb39ce5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3593234
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
f4fc8e16
|
2022-04-20T04:32:48
|
|
Revert "Fix BlendStateExt::mMaxColorMask initialization"
This reverts commit 50d008a7efcab80f34eb742148d05389b2ed247e.
Reason for revert: Causes the win-trace bot to fail
Original change's description:
> Fix BlendStateExt::mMaxColorMask initialization
>
> This variable should not have its unused bits set.
>
> To avoid confusion with other masks of the same class,
> the variable was renamed to mAllColorMask.
>
> Bug: angleproject:7200
> Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:7200
Change-Id: Ib9a0927ba4e152d5b4ae4c034e6748faf6b5aa87
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3594802
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
50d008a7
|
2022-04-13T09:36:40
|
|
Fix BlendStateExt::mMaxColorMask initialization
This variable should not have its unused bits set.
To avoid confusion with other masks of the same class,
the variable was renamed to mAllColorMask.
Bug: angleproject:7200
Change-Id: I72542d49ff8da3dbb8d61c5034ce37c1e8fcc6e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3581990
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3ddb21fd
|
2022-02-23T14:15:48
|
|
Front-end support for KHR_blend_equation_advanced
Bug: angleproject:3586
Change-Id: I27086295e7455ce8848db1c6004917fea40202e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3484785
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ab426735
|
2021-10-29T13:54:09
|
|
Template gl::Rectangle so it can be used for float
Bug: angleproject:6598
Change-Id: I8cf5894f0e34c56a6ad856c978be93ea9d5ae113
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3253131
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d2816b4e
|
2021-06-25T14:52:02
|
|
Fix a -Wdeprecated-copy warning.
Bug: chromium:1221591
Change-Id: Idbbb4aa16e58a9f4e7e25590667cf15706233de4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2989632
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
72b68950
|
2020-12-02T16:22:21
|
|
Ignore redundant Texture state changes
Dirtying the state unnecessarily was causing Vulkan backend to create
new framebuffer objects when it didn't need to.
Bug: b/174700581
Change-Id: I74e0ed51a2c6598ab3dca9a955c247ec97b6856f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2570201
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
1ed5a1a7
|
2020-11-16T16:43:02
|
|
Vulkan: Reuse GetBoundBufferAvailableSize in ProgramExecutableVk
This change simplifies the implementation of GetBoundBufferAvailableSize
and replaces GetShaderBufferBindingSize in ProgramExecutableVk.cpp
Bug: angleproject:3573
Change-Id: I811e616989560ed74f88377742ddbb73e14b218c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2542862
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a0e91016
|
2020-10-30T10:01:36
|
|
Vulkan: Don't break the render pass on scissor change
Prior to this change, the render area was decided when the render pass
was started, and remained fixed. If a small scissor was initially used,
this created a render pass with a small area. If then the scissor
region was expanded, the render pass was broken.
This change instead expands the render area on scissor change to avoid
breaking the render pass. If glInvalidateSubFramebuffer previously
successfully resulted in storeOp=DONT_CARE, this optimization may need
to undo that. As a result, the invalidate area is stored in the render
pass and if the render area grows beyond that, invalidate is undone.
Bug: angleproject:4988
Change-Id: I4e8039dec53a95a193a97cb40db3f71e397568d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2508983
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
42e10d3e
|
2020-10-30T16:36:45
|
|
Noop empty-scissor clears
Bug: angleproject:4988
Change-Id: I64909292927e20c65141302c9bf5e7ef09af84b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2511370
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
68bd685a
|
2020-10-10T22:58:41
|
|
Reland: "4 Vulkan content defined CLs."
Reland "Vulkan: Avoid content restore by detecting no-op stencil"
This relands commit 243d0f899e443cd931c78aba7489382dff79edbb.
Reland "Vulkan: Restore at the end of RP if write-after-invalidate"
This relands commit e5d52ac3b9a00656acdd912ee8cd62dd14784075.
Reland "Vulkan: Invalidate/restore depth/stencil separately."
This relands commit 61fa0878964a796f6d3b3c13bc3a3849403ecdbd.
Reland "Vulkan: Move content-defined tracking to ImageHelper"
This relands commit 2392e6b34c0ddfbfd7b4c3cb67323ba463e11a57.
Reason for revert: Caused crashes in Fuchsia x64 and on ARM.
Reland fixes content defined for external images.
Original CL message:
Content-defined tracking was done in render targets prior to this
change. This had multiple drawbacks:
- When a framebuffer attachment is changed (including the first time
it's set), it's unknown whether the contents of the attachment is
defined.
- Invalidate takes effect at the end of render pass, at which point the
render target objects may be gone. Attachment ImageHelpers are
however correctly tracked.
This change moves content-defined tracking to the ImageHelper itself,
and tracks it per subresource. ImageHelper::onWrite() now receives the
subresource that is being written, and marks it as having defined
content.
A future optimization can make use of this change to
ImageHelper::onWrite to track "dirty" subresources. This can lead to
the removal of unnecessary barriers when same-kind writes are done on
different subresources of the image. See http://anglebug.com/3347#c15
Bug: b/167275320
Bug: angleproject:4836
Bug: angleproject:5159
Change-Id: If5c1ae7152657fd7c94db7d55bea4fb9ddf835ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464825
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d6b1c17b
|
2020-10-10T14:29:15
|
|
Revert 4 Vulkan content defined CLs.
Revert "Vulkan: Avoid content restore by detecting no-op stencil"
This reverts commit 243d0f899e443cd931c78aba7489382dff79edbb.
Revert "Vulkan: Restore at the end of RP if write-after-invalidate"
This reverts commit e5d52ac3b9a00656acdd912ee8cd62dd14784075.
Revert "Vulkan: Invalidate/restore depth/stencil separately."
This reverts commit 61fa0878964a796f6d3b3c13bc3a3849403ecdbd.
Revert "Vulkan: Move content-defined tracking to ImageHelper"
This reverts commit 2392e6b34c0ddfbfd7b4c3cb67323ba463e11a57.
Causes crashes in Fuchsia x64 and on ARM.
Original CL message:
Content-defined tracking was done in render targets prior to this
change. This had multiple drawbacks:
- When a framebuffer attachment is changed (including the first time
it's set), it's unknown whether the contents of the attachment is
defined.
- Invalidate takes effect at the end of render pass, at which point the
render target objects may be gone. Attachment ImageHelpers are
however correctly tracked.
This change moves content-defined tracking to the ImageHelper itself,
and tracks it per subresource. ImageHelper::onWrite() now receives the
subresource that is being written, and marks it as having defined
content.
A future optimization can make use of this change to
ImageHelper::onWrite to track "dirty" subresources. This can lead to
the removal of unnecessary barriers when same-kind writes are done on
different subresources of the image. See http://anglebug.com/3347#c15
Bug: b/167275320
Bug: angleproject:4836
Bug: angleproject:5159
Change-Id: I93d9dfe973caa7ce70aefa46b5b7d04a8637efb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2464822
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
243d0f89
|
2020-10-08T21:54:45
|
|
Vulkan: Avoid content restore by detecting no-op stencil
Previously, as long as stencil was enabled, it was considered that it is
also being modified. This caused stencil invalidate to be undone in a
number of situations, such as:
- glEnable(GL_STENCIL_TEST); // with func/ops default
- glDrawArrays();
- glInvalidateFramebuffer([GL_STENCIL_ATTACHMENT]);
- glClear(GL_DEPTH_BUFFER_BIT);
- Close render pass
In the above scenario, invalidation of stencil was undone at the end of
render pass.
In this change, the following cases are considered read-only stencil:
- Func = GL_NEVER, stencilFail = GL_KEEP
- Func = GL_ALWAYS, stencilPassDepth* = GL_KEEP
- stencilFail = GL_KEEP, stencilPassDepth* = GL_KEEP
Note that while the above scenario is fixed for no-op stencil, a similar
issue persists if stencil was not no-op. The reason stencil invalidate
is undone in that case is due to the fact that it's assumed any command
after the invalidate call will be a draw call that outputs to stencil,
but that is not the case with the glClear call in this example.
Bug: angleproject:4836
Change-Id: Ie2ea2d52b7c8ee2394f5456773a7ef434e2b2b16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2461465
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
e99a9df2
|
2020-09-10T13:21:39
|
|
Added integer overflow detection to ClipRectangle
Used angle::CheckedNumeric to make sure none of the additions
in ClipRectangle produces an integer overflow.
Bug: chromium:1091364
Change-Id: I23b7943259010bb6bfde3d8ebc41e87a04f5b4f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2404441
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
b4efc051
|
2020-08-28T14:45:18
|
|
Enable -Wdeprecated-copy.
This is another warning turned on in Skia. It enforces an explicit
copy assignment operator in some implicitly-generated cases. It
caught one potential error in SubresourceUpdate.
Bug: skia:7647
Change-Id: Ia501f619cf7f3d2e8647cdbbda2936f51f9721ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2381953
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c757e607
|
2020-07-21T10:18:41
|
|
Vulkan: Fix deferred clears and noop clear and blit
Imagine the following situation:
1. Clear draw framebuffer
2. Noop operation on the framebuffer (Clear, ClearBuffer,
BlitFramebuffer with flags specifying non-existing attachments)
3. Change framebuffer's attachment
4. Draw into framebuffer
At step 2, FramebufferVk::syncState was called before noop-ing the
operation. During syncState, deferred clears were stored in the
framebuffer and weren't flushed because the actual operation was not
performed.
At step 4, the deferred clear meant for the prior attachment gets
applied to the new attachment.
Bug: angleproject:4865
Change-Id: I5b096bacf00356b4dccd4cbc9561b87b1bb557d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2309224
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b0245f68
|
2020-06-23T22:38:12
|
|
Vulkan: Remove superseded updates when flushing to image
Especially with emulated formats and robust resource init, a clear is
staged that's often superseded by a data upload to the same subresource.
This change ensures that superseded updates are dropped to avoid
unnecessary GPU work.
Bug: angleproject:4691
Change-Id: I697ccd438b92fd2fff17a5800550694658c95c54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2262574
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
779a25a8
|
2020-04-27T02:11:58
|
|
D3D11: Migrate to the new blend state tracking
Migrate D3D ClearParameters struct to the new color mask storage
Bug: angleproject:4394
Change-Id: Ibeb64e4bbb2758b9c8271fc3c59d2d675850b0a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2165886
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d6c7bac9
|
2020-04-18T01:41:14
|
|
Add BlendStateExt helper structure
It provides compact storage and comparison operations for
per-drawbuffer blend states.
Added BitSetT::Zero() static constexpr.
Bug: angleproject:4394
Change-Id: I66d6275facb7b28022fc24ff9cc0d8c3c976c99d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2154669
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
605ab763
|
2020-02-24T19:43:32
|
|
D3D11: Implement OES_draw_buffers_indexed
Existing CONSTANT_COLOR/CONSTANT_ALPHA limitation was generalized to independent blend states with draw call invalidation and a new end2end test. dEQP tests that are incompatible with this limitation result in INVALID_OPERATION and are marked as FAIL.
D3D11 renderer always normalizes and deduplicates requested blend states based on their enabled features and bound framebuffer.
Bug: angleproject:4394
Change-Id: I284796e18be71de1b5bfb087d36f6a45be4c3f70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070575
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b8c6521a
|
2020-02-14T14:23:08
|
|
Reland "Move sampleAlphaToCoverage out of blendState"
This is a reland of f6e73131c528b1317067624bc71c3ce41a48f9aa
Aligned BlendStateKey fields
Original change's description:
> Move sampleAlphaToCoverage out of blendState
>
> This is the second step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer). This flag is global in all graphics APIs, however D3D11 technically puts it in the blend state.
>
> D3D11: BlendStateKey was extended to keep existing D3D11 state caching semantics.
>
> D3D9: a comment was added explaining why this feature was never implemented there.
>
> Bug: angleproject:4394
> Change-Id: Ie6a294eeb6fcf4c868a1f1001c4f7efd61692ccd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057063
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:4394
Change-Id: Ia7aed863f0f9f6066daf1b02ecade3256f494062
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2066698
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
38bb9fdf
|
2020-02-19T13:02:00
|
|
Revert "Move sampleAlphaToCoverage out of blendState"
This reverts commit f6e73131c528b1317067624bc71c3ce41a48f9aa.
Reason for revert: Crashes on Win10 FYI x64 Debug (NVIDIA) and Win7 FYI Debug (AMD) in the webgl CTS
Original change's description:
> Move sampleAlphaToCoverage out of blendState
>
> This is the second step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer). This flag is global in all graphics APIs, however D3D11 technically puts it in the blend state.
>
> D3D11: BlendStateKey was extended to keep existing D3D11 state caching semantics.
>
> D3D9: a comment was added explaining why this feature was never implemented there.
>
> Bug: angleproject:4394
> Change-Id: Ie6a294eeb6fcf4c868a1f1001c4f7efd61692ccd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057063
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,lexa.knyazev@gmail.com
Change-Id: I650624b5dfb7f2777c316906b9145a411243f42f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:4394
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2062605
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
f6e73131
|
2020-02-14T14:23:08
|
|
Move sampleAlphaToCoverage out of blendState
This is the second step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer). This flag is global in all graphics APIs, however D3D11 technically puts it in the blend state.
D3D11: BlendStateKey was extended to keep existing D3D11 state caching semantics.
D3D9: a comment was added explaining why this feature was never implemented there.
Bug: angleproject:4394
Change-Id: Ie6a294eeb6fcf4c868a1f1001c4f7efd61692ccd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057063
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
caf7becc
|
2020-02-11T19:05:11
|
|
Move dither from blend state to rasterizer state
Dither is technically not a part of blend state so it was removed from there as a first step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer).
Rasterizer state seems to be the closest (although also not accurate) place for it to keep code changes to a minimum. ANGLE's D3D11, Vulkan, and Metal renderers ignore dithering altogether.
Bug: angleproject:4394
Change-Id: Ib138624b9218851d18cd63e2033e8e8ac8ca71d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050464
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
652dbfc6
|
2019-11-06T16:56:28
|
|
Init Blend State color mask defaults.
This is an unrelated code cleanup. Previously we would only init these
member variables in the gl::State initialization code.
Bug: angleproject:3611
Change-Id: I3aa34958ce5b00542d45ef63e0b32010b2eb3220
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1902188
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b407e1a0
|
2019-06-03T17:15:51
|
|
Vulkan: implement ES3 blit
Augment the resolve shaders to be able to stretch and blit too. The
UtilsVk resolve function is accordingly expanded to include blit.
Bug: angleproject:3200
Change-Id: I30b172a5e388089735ab494f55cbfdc2781a8bf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1635753
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
127990f9
|
2019-04-04T13:52:04
|
|
Vulkan: Use render pass loadOp for scissored clears
At this point, every clear is done through render pass loadOp, except
masked color or stencil clears. The only fallback is clearWithDraw,
that can clear both color and stencil at the same time.
Bug: angleproject:2361
Change-Id: I805fc12475e832ad2f573f665cdfeb766e61a6d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1553740
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
f6c937f8
|
2019-04-02T17:04:08
|
|
Vulkan: fix masked stencil clear
Previously, masked stencil clear was done by clearing every stencil bit
to the ClearValue & Mask. The correct behavior as implemented in this
change is to clear only the bits that are set in Mask. This can only be
done through a draw call, with ClearValue as the stencil reference, and
Mask as the stencil write mask.
Note: this change relies on the depthClamp Vulkan feature which is not
available on ARM.
Bug: angleproject:3241
Change-Id: I0a181c32f881ee813f144e7bdd6f42c8ea6f1966
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1548442
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
6e18a238
|
2019-01-16T13:27:14
|
|
Optimize more front-end VertexArray binding.
Improves perf slightly (1-2%) in the Vulkan VBO state change test.
Bug: angleproject:3014
Change-Id: Ia8082b5b3f5e847a6b2775e896893fa8d38c1afd
Reviewed-on: https://chromium-review.googlesource.com/c/1393904
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8543630
|
2018-10-02T19:46:14
|
|
Support GL_OES_texture_border_clamp
Added support for GL_TEXTURE_BORDER_COLOR and GL_CLAMP_TO_BORDER in
OpenGL/OpenGLES, Direct3D9 and Direct3D11 backends.
For integer textures in OpenGLES3 contexts these additional entry points
are available now:
void glTexParameterIivOES(enum target, enum pname, const int *params);
void glTexParameterIuivOES(enum target, enum pname, const uint *params);
void glGetTexParameterIivOES(enum target, enum pname, int *params);
void glGetTexParameterIuivOES(enum target, enum pname, uint *params);
void glSamplerParameterIivOES(uint sampler, enum pname, const int *params);
void glSamplerParameterIuivOES(uint sampler, enum pname, const uint *params);
void glGetSamplerParameterIivOES(uint sampler, enum pname, int *params);
void glGetSamplerParameterIuivOES(uint sampler, enum pname, uint *params);
BUG=angleproject:2890
TEST=angle_end2end_tests.TextureBorderClamp*
Change-Id: Iee3eeb399d8d7851b3b30694ad8f21a2111f5828
Reviewed-on: https://chromium-review.googlesource.com/c/1257824
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4e6f2aea
|
2018-09-19T11:09:51
|
|
Implement ANGLE_copy_texture_3d Extension
Adds copyTexture3DANGLE and copySubTexture3DANGLE that adds copy
operations on volumetric textures.
Bug: angleproject:2762
Test: angle_end2end_tests
Change-Id: I0076989c2b7ed69abfc73143c325065bdb06a360
Reviewed-on: https://chromium-review.googlesource.com/c/1207216
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8a561914
|
2018-09-12T11:03:06
|
|
Pack SamplerState into small struct.
Is much faster for completeness cache checks in syncProgramTextures.
Bug: angleproject:2763
Change-Id: Iffdacbb8a4f6640caa5051643c379a7b4c3311b6
Reviewed-on: https://chromium-review.googlesource.com/1171508
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
097d3c0c
|
2018-09-12T11:03:05
|
|
Make SamplerState a contained class.
This will more easily allow us to use a cached completeness comparison
value. The cached value only gets updated on certain setters.
Bug: angleproject:2763
Change-Id: Ib80db8517560617087ae8360f7af69d6c2392b76
Reviewed-on: https://chromium-review.googlesource.com/1171507
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
04796cda
|
2018-05-24T19:52:16
|
|
Remove gl::PrimitiveType.
This replaces the usages with gl::PrimitiveMode. Also replaces
the ProgramD3D Geometry Shader executable storage with a
PackedEnumMap.
Bug: angleproject:2574
Change-Id: I476dd2ba92d6267b9ea2bb9a37ee15fb6a91e627
Reviewed-on: https://chromium-review.googlesource.com/1067115
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
493f9571
|
2018-05-24T19:52:15
|
|
Add PrimitiveMode packed GLenum.
Bug: angleproject:2574
Change-Id: I3d7bd7ca0d69a364a611dc04799ea34906fc4a6c
Reviewed-on: https://chromium-review.googlesource.com/1067114
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
47155b17
|
2018-04-26T12:14:10
|
|
Clean up BlitGL
Simplify handling of reversing the blitted area and calculate shader
parameters in a way that doesn't require lengthy explanation.
BUG=chromium:830046
TEST=angle_end2end_tests
Change-Id: Ie9bce812be4ef04a969153fc7c484039fc48a198
Reviewed-on: https://chromium-review.googlesource.com/1030172
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b3474d9d
|
2018-04-20T17:37:44
|
|
Clean up ClipRectangle
It's not necessary to set the intersection rectangle in case the
intersection is empty.
BUG=chromium:830046
TEST=angle_end2end_tests
Change-Id: I0b99cdb7d6623b2d8a95dbe946a6eead6a44351d
Reviewed-on: https://chromium-review.googlesource.com/1021695
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
0946393d
|
2018-04-04T05:26:59
|
|
Move Buffer Subject/Observer to front end.
This makes BufferImpl into an Observer Subject. It also refactors
the Vertex Array updates for the D3D11 backend use more of a dirty
bit coding style.
This change makes it so Buffer contents changes trigger front-end
dirty bits from the back-end, which may be undesirable.
Bug: angleproject:2389
Change-Id: Iac8ce1171284a86851c18cd1373ddf24fcefe40b
Reviewed-on: https://chromium-review.googlesource.com/979812
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
30b604d8
|
2018-03-12T17:26:57
|
|
Check that transform feedback will not overflow its buffers.
Also fix the check for uniform buffer size to use the actual buffer
size instead of the size of the bound range.
Bug: 820639
Change-Id: Iaa2a617ee7ce5ce7cfabbf64bd1d6f8c82c46b65
Reviewed-on: https://chromium-review.googlesource.com/965627
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
99d492c2
|
2018-02-27T15:17:10
|
|
Use packed enums for the texture types and targets, part 2
This completes the refactor by using the packed enums in the gl:: layer
and in the backends.
The packed enum code generation is modified to support explicitly
assigning values to the packed enums so that the TextureTarget cube map
faces are in the correct order and easy to iterate over.
BUG=angleproject:2169
Change-Id: I5903235e684ccf382e92a8a1e10c5c85b4b16a04
Reviewed-on: https://chromium-review.googlesource.com/939994
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c405ae71
|
2017-12-06T14:15:03
|
|
Optimize Vertex Shader Attribute Type Validition
Improves ValidateVertexShaderAttributeTypeMatch by storing vertex
attributes types into masks for quick comparisons when needed. This shows
2% improvement to glDrawElements for the aquarium workload.
BUG=angleproject:2202
Change-Id: I87fa3d30c3d8cdba6dfd936cd1a41fd27b1c6b77
Reviewed-on: https://chromium-review.googlesource.com/814795
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
76746f9b
|
2017-11-22T11:44:41
|
|
Optimize Fragment Shader Type Match Validation
Improves ValidateFragmentShaderColorBufferTypeMatch by storing input and
output types into a bitmask for quick comparison when validation is
needed. This shows a 2% improvement to glDrawElements for the aquarium
workload.
BUG=angleproject:2203
Change-Id: Iade2ecf28383164e370b48442f01fba6c0962fba
Reviewed-on: https://chromium-review.googlesource.com/775019
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
acf2f3ad
|
2017-11-21T19:22:44
|
|
Apply Chromium style fixes.
This addresses several minor code quality issues that are validated
in Chromium, but not yet applied to ANGLE:
* constructors and destructors must be defined out-of-line
* auto is not allowed for simple pointer types
* use override everywhere instead of virtual
* virtual functions must also be defined out-of-line
Slightly reduces binary size for me (~2k on Win, 150k on Linux).
Bug: angleproject:1569
Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6
Reviewed-on: https://chromium-review.googlesource.com/779959
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f1b47e89
|
2017-11-21T22:58:31
|
|
Fix ComputeGenericHash.
ANGLE's internal hash maps would run MurmurHash on c++ structs to
come up with hash values. Since the hash ran on 4 byte words only,
it would have no understanding that sometimes our structs would only
have meaninful data in the first N bytes, and would include the
garbage at the end in the hash calculation. This fixes the problem by
forcing our structs to be aligned at compile-time.
It also adds custom copy operators for a few classes to ensure that
all bits are copied when the struct is initialized, including the
padding.
Bug: angleproject:1569
Bug: chromium:721648
Change-Id: I4d11f6e12d9a067b36e1416c7ed15586eff99aab
Reviewed-on: https://chromium-review.googlesource.com/783990
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4751aabb
|
2017-10-30T15:14:52
|
|
Fix minor issues with ANGLE_texture_rectangle.
* Some texture parameters were not initialized correctly.
* Binding points were not created for enableable texture extensions.
BUG=angleproject:1650
BUG=angleproject:1523
Change-Id: Id3436fe1dbb4069eafad97e722ac519a6b59e5db
Reviewed-on: https://chromium-review.googlesource.com/744446
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
2e568cfb
|
2017-09-18T17:05:22
|
|
Add generator for packed GL enums.
For testing this also converts two unimportant GLenums, gl::BufferUsage
and gl::CullModeFace.
BUG=angleproject:2169
Change-Id: If1e86a97d0fed3fd567303aca6506ec579503076
Reviewed-on: https://chromium-review.googlesource.com/688000
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e5285d29
|
2017-07-14T16:23:53
|
|
Handle ANGLE_multiview state queries
The patch extends glGetIntegerv and glGetFramebufferAttachmentParameteriv
logic to handle the new tokens from the ANGLE_multiview extension.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ide145279cd7b58cd03502458d7d3a1a0f5e9e86d
Reviewed-on: https://chromium-review.googlesource.com/573780
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
aa0a5446
|
2017-05-25T13:30:23
|
|
Ensure gl State structs are zero filled.
In some cases we would hash or memcmp against structs with bools or
other non-filled data. This could have implementation differences,
and may have been causing cache errors on Clang.
BUG=chromium:721648
BUG=angleproject:2044
Change-Id: I981a1e6e8d50a33f7fade568497b72b919accfce
Reviewed-on: https://chromium-review.googlesource.com/516383
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
b66a9097
|
2016-05-16T15:59:14
|
|
Add support for OES_EGL_image_external and OES_EGL_image_external_essl3.
BUG=angleproject:1372
Change-Id: I8489e7fd0ab409b0775041ad5e9fbf0aab53886d
Reviewed-on: https://chromium-review.googlesource.com/344734
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
d14e3c45
|
2016-02-12T10:08:19
|
|
Initialize TextureState::usage.
This was probably omittted some time ago, and was showing up as
garbage in the debugger in some cases.
BUG=angleproject:1260
Change-Id: Ifca5243d0c94e7659a2245e327a72eed9dd918ab
Reviewed-on: https://chromium-review.googlesource.com/327401
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cc86d64e
|
2015-11-24T13:00:07
|
|
Make Framebuffer size check ES2-only.
This is an ES2-only incompleteness check. We also need to require
matching dimensions in D3D11, but make this an implementation
specific check. Also make all implementation specific errors
'UNSUPPORTED' since that catches all "non-ES" framebuffer
restrictions.
Note that we can't be conformant here in D3D11 currently, since the
spec only makes an exception for mismatching formats for UNSUPPORTED,
not for size checks. However, we don't have an easy solution.
BUG=angleproject:1225
Change-Id: Ic80a04bce397fc12643b010c874f432033babc5d
Reviewed-on: https://chromium-review.googlesource.com/313990
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
76f8fa66
|
2015-10-29T10:32:56
|
|
Refactor Geometry Shader support to enable pass-through.
This should be a refactoring change only. The new code is exercised in
follow-up CLs.
BUG=angleproject:754
Change-Id: I99285e1e7772cae467013102f25c911ebc9f54a9
Reviewed-on: https://chromium-review.googlesource.com/309153
Reviewed-by: Geoff Lang <geofflang@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>
|
|
d5451f11
|
2015-06-05T10:59:04
|
|
Inline comparison operators of several small ANGLE structs.
Improves draw call overhead of RendererGL.
DrawCallPerf_gl:
Before: 129779 score
After: 136973 score
Improvement: 5.543%
No noticeable difference in DLL size or draw call perf of the D3D
renderers.
BUG=angleproject:959
Change-Id: Id54d49e9e2cfb69431ee26d632c58fee2c42b82c
Reviewed-on: https://chromium-review.googlesource.com/275408
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
d3dfda2b
|
2015-07-06T08:28:49
|
|
Refactor how we store vertex formats.
Instead of storing a vertex format as a struct with the full info,
instead use an enum, and look up the info when we need it. This
saves a lot of constructor initialization time, operator comparison
time, and storage. It also will allow us to look up D3D format info
more quickly.
BUG=angleproject:959
Change-Id: I202fd1ea96981073bc1b5b232b1ec3efa91485cb
Reviewed-on: https://chromium-review.googlesource.com/277289
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
5ead927f
|
2015-03-25T12:27:43
|
|
Don't use a helper function to get the vertex attributes.
The overhead of the function call ended up being a hot spot for draw calls
since the attributes are iterated over many times in VertexDataManager.
BUG=angleproject:959
Change-Id: I9bbfcbd115661ad629db9ed93d683cd8d0dc9a78
Reviewed-on: https://chromium-review.googlesource.com/263102
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5b97287e
|
2015-03-30T19:52:55
|
|
Revert "Don't use a helper function to get the vertex attributes."
Caused a warning on 32-bit builds.
This reverts commit 20d78d241b448aa0b2e3f49d902d3ab63a551932.
Change-Id: I4d61024fb29978e7f1bacdd693fc6f1bc00bd0cc
Reviewed-on: https://chromium-review.googlesource.com/262918
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
20d78d24
|
2015-03-25T12:27:43
|
|
Don't use a helper function to get the vertex attributes.
The overhead of the function call ended up being a hot spot for draw calls
since the attributes are iterated over many times in VertexDataManager.
BUG=angleproject:959
Change-Id: I6c11d4a5a22c314c69b3403dfdeb2d950b1c7639
Reviewed-on: https://chromium-review.googlesource.com/262336
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
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>
|
|
7dd2e10d
|
2014-11-10T15:19:26
|
|
Merge the ProgramBinary class into Program.
BUG=angle:731
Change-Id: I2ee97155841dc62f04bb71c1f2035d210fd3883c
Reviewed-on: https://chromium-review.googlesource.com/232694
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
21329414
|
2014-12-02T20:50:30
|
|
Revert "Merge the ProgramBinary class into Program."
Issues appeared on the FYI waterfall, content_gl_tests hangs.
This reverts commit 2195a6d6032883ed05468d5ecd019e7cb9a27bce.
Change-Id: I9fe1a53cf40887ae5a98fd77b4872f41085fcea7
Reviewed-on: https://chromium-review.googlesource.com/232386
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
2195a6d6
|
2014-11-10T15:19:26
|
|
Merge the ProgramBinary class into Program.
BUG=angle:731
Change-Id: Ia0a356c0684f3a3576c71dfd04b00874318dd084
Reviewed-on: https://chromium-review.googlesource.com/228701
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>
|