Issue 2670 in angleproject: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES

0 views
Skip to first unread message

jmad… via monorail

unread,
Jun 18, 2018, 1:35:24 PM6/18/18
to angleproj...@googlegroups.com
Status: Accepted
Owner: ----
Priority: Medium
Renderer: Vulkan
Type: Enhancement

New issue 2670 by jmad...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670

These there extensions are all pretty closely related. They should all be natively supported by Vulkan. It's unclear how much modification the Vulkan back-end will need.

ETC2 is backwards-compatible with ETC1. Thus ETC2 can override ETC1 in the formats map. The VkFormat is VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK I believe.

There are specific tests for this extension set in CopyCompressedTextureTest. Turning on those tests will require also implementing GL_CHROMIUM_copy_compressed_texture. There are also several dEQP tests in dEQP-GLES2.functional.texture that will come online once GL_ETC1_RGB8_OES is exposed.

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

jmad… via monorail

unread,
Oct 1, 2018, 12:38:01 PM10/1/18
to angleproj...@googlegroups.com
Updates:
Blocking: -1578 2816

Comment #1 on issue 2670 by jmad...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c1

(No comment was entered for this change.)

geoffl… via monorail

unread,
Jan 15, 2019, 12:54:59 PM1/15/19
to angleproj...@googlegroups.com
Updates:
Owner: ynov...@chromium.org

Comment #2 on issue 2670 by geoffl...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c2

geoffl… via monorail

unread,
Jan 15, 2019, 1:00:53 PM1/15/19
to angleproj...@googlegroups.com

Comment #3 on issue 2670 by geoffl...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c3

This one may be hard to test without an ES3 context. I couldn't find tests for these extensions because they become core in ES3. This may be worth holding off on until we have ES3 testing set up on the bots.

jmad… via monorail

unread,
Feb 5, 2019, 9:59:19 AM2/5/19
to angleproj...@googlegroups.com

Comment #4 on issue 2670 by jma...@google.com: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c4

If you look in gles2-master.txt for dEQP GLES 2.0 you can find some ETC1 tests:

dEQP-GLES2.functional.texture.format.etc1_2d_pot
dEQP-GLES2.functional.texture.format.etc1_cube_pot

dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_nearest_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_nearest_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_etc1

dEQP-GLES2.functional.texture.filtering.cube.nearest_nearest_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.linear_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.nearest_mipmap_nearest_nearest_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.nearest_mipmap_nearest_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.linear_mipmap_nearest_nearest_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.linear_mipmap_nearest_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.nearest_mipmap_linear_nearest_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.nearest_mipmap_linear_linear_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.linear_mipmap_linear_nearest_clamp_etc1
dEQP-GLES2.functional.texture.filtering.cube.linear_mipmap_linear_linear_clamp_etc1

I think we can probably implement this and have tests with an ES 2.0 context. Apparently this extension is needed for the T-Rex scene.

syouss… via monorail

unread,
Feb 5, 2019, 10:26:55 AM2/5/19
to angleproj...@googlegroups.com
Updates:
Owner: syou...@chromium.org

Comment #5 on issue 2670 by syou...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c5


(No comment was entered for this change.)

bugdroid via monorail

unread,
Feb 15, 2019, 11:55:32 PM2/15/19
to angleproj...@googlegroups.com

Comment #6 on issue 2670 by bugdroid: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c6

The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/028df5f51e45f50ebfef480fd93fc9325a7bf0b8

commit 028df5f51e45f50ebfef480fd93fc9325a7bf0b8
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Sat Feb 16 04:54:55 2019

Vulkan: Implement transfer path for texture copy

This is primarily in preparation for compressed texture copy, but has
the following side effect:

- When transfer is possible, it's faster than draw
- When texture format does not support draw (but transfer is possible),
it will avoid copying through CPU.

Bug: angleproject:2670
Change-Id: I49e1b51e6ccec875db3f971106687c7d48c4916f
Reviewed-on: https://chromium-review.googlesource.com/c/1470595
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Yuly Novikov <ynov...@chromium.org>

[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/TextureVk.cpp
[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/vk_helpers.cpp
[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/TextureVk.h
[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/vk_helpers.h
[modify] https://crrev.com/028df5f51e45f50ebfef480fd93fc9325a7bf0b8/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp

bugdroid via monorail

unread,
Mar 1, 2019, 1:15:01 PM3/1/19
to angleproj...@googlegroups.com

Comment #8 on issue 2670 by bugdroid: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c8


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/76bd848cabd52907e392151835c973ccab4f45c9

commit 76bd848cabd52907e392151835c973ccab4f45c9
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Fri Mar 01 18:14:25 2019

Vulkan: Support ETC, S3TC and BPTC compressed textures

Fixes the format table so the correct Vulkan format for the types are
generated. Additionally, implements CHROMIUM_copy_compressed_texture as
well as other functions relevant to initializing compressed textures.

Bug: angleproject:2670, angleproject:2904
Change-Id: I682d36574262525027cddf8f329515f38cd77dc0
Reviewed-on: https://chromium-review.googlesource.com/c/1468048
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Jamie Madill <jma...@google.com>

[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/RendererVk.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/tests/gl_tests/WebGLCompatibilityTest.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/tests/gl_tests/DXT1CompressedTextureTest.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_format_utils.h
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/TextureVk.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/gen_angle_format_table.py
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/tests/gl_tests/CopyCompressedTextureTest.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/scripts/run_code_generation_hashes.json
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_helpers.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/TextureVk.h
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/Format_table_autogen.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_helpers.h
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/ImageVk.cpp
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/angle_format_data.json
[modify] https://crrev.com/76bd848cabd52907e392151835c973ccab4f45c9/src/libANGLE/renderer/vulkan/vk_format_map.json

jmad… via monorail

unread,
Mar 1, 2019, 1:17:18 PM3/1/19
to angleproj...@googlegroups.com

Comment #10 on issue 2670 by jmad...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c10

Nice work Shabi!

jmad… via monorail

unread,
Mar 13, 2019, 7:46:37 AM3/13/19
to angleproj...@googlegroups.com
Updates:
Cc: fei.y...@arm.com jmad...@chromium.org

Comment #11 on issue 2670 by jmad...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c11

Issue 3258 has been merged into this issue.

syouss… via monorail

unread,
Mar 13, 2019, 10:08:39 AM3/13/19
to angleproj...@googlegroups.com
Updates:
Status: Accepted

Comment #12 on issue 2670 by syou...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c12

Reopening as it's missing the part where ETC1 is supported through ETC2.

bugdroid via monorail

unread,
Mar 18, 2019, 3:28:54 PM3/18/19
to angleproj...@googlegroups.com

Comment #13 on issue 2670 by bugdroid: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c13


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c

commit 507e8d30166fbfde564e3bad4aa0e0854b5d3d7c
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Mon Mar 18 19:23:17 2019

Add missing entries in texture load functions map

GetLoadFunctionsMap() is expected to cover all possible combinations of
texture internalformat and upload data format. Several of these
combinations were missing, especially w.r.t to compressed types. This
change adds the missing combinations that are hit on any of the
configurations being tested. An assert is added to catch missing
conversion functions in the future.

Bug: angleproject:2670
Change-Id: I793ac2c57f65eeb1cc8da8f1b223f6a9a44c7708
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1524462
Reviewed-by: Yuly Novikov <ynov...@chromium.org>
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>

[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/image_util/loadimage.cpp
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/image_util/loadimage.h
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/libANGLE/renderer/gen_load_functions_table.py
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/libANGLE/renderer/load_functions_table_autogen.cpp
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/scripts/run_code_generation_hashes.json
[modify] https://crrev.com/507e8d30166fbfde564e3bad4aa0e0854b5d3d7c/src/libANGLE/renderer/load_functions_data.json

bugdroid via monorail

unread,
Mar 20, 2019, 11:37:41 PM3/20/19
to angleproj...@googlegroups.com

Comment #14 on issue 2670 by bugdroid: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c14


The following revision refers to this bug:
https://chromium.googlesource.com/angle/angle/+/cf8735dcdec95ee016bb4b41a4fe914503f39d40

commit cf8735dcdec95ee016bb4b41a4fe914503f39d40
Author: Shahbaz Youssefi <syou...@chromium.org>
Date: Thu Mar 21 03:36:51 2019

Vulkan: Add support for ETC1

The ETC2 format is backwards compatible with ETC1. ETC1 RGB8 is thus
supported by implicitly using the ETC2 RGB8 Vulkan format.

Bug: angleproject:2670
Change-Id: I59a112da5ed3a0b90f90a8b4c350c94d43b31120
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520987
Commit-Queue: Shahbaz Youssefi <syou...@chromium.org>
Reviewed-by: Tim Van Patten <ti...@google.com>

[modify] https://crrev.com/cf8735dcdec95ee016bb4b41a4fe914503f39d40/scripts/run_code_generation_hashes.json
[modify] https://crrev.com/cf8735dcdec95ee016bb4b41a4fe914503f39d40/src/libANGLE/renderer/vulkan/vk_format_map.json
[modify] https://crrev.com/cf8735dcdec95ee016bb4b41a4fe914503f39d40/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
[modify] https://crrev.com/cf8735dcdec95ee016bb4b41a4fe914503f39d40/src/libANGLE/renderer/load_functions_table_autogen.cpp
[modify] https://crrev.com/cf8735dcdec95ee016bb4b41a4fe914503f39d40/src/libANGLE/renderer/load_functions_data.json

syouss… via monorail

unread,
Mar 20, 2019, 11:39:25 PM3/20/19
to angleproj...@googlegroups.com
Updates:
Status: Fixed

Comment #15 on issue 2670 by syou...@chromium.org: Vulkan: Implement OES_compressed_ETC2_RGB8_texture / GL_OES_compressed_ETC1_RGB8_texture / GL_ETC1_RGB8_OES
https://bugs.chromium.org/p/angleproject/issues/detail?id=2670#c15

Should be fixed, but looks like we don't have decent testing of this until ES3. 3197 is tracking further necessary work should that be necessary.
Reply all
Reply to author
Forward
0 new messages