History log of /external/swiftshader/src/Renderer/ETC_Decoder.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f08be92d68e6c966fcc71dba8b77c5335eb2c963 18-Dec-2017 Alexis Hetu <sugoi@google.com> ETC2 RGBA fix

Since EAC is no longer decoded to an 8 bit format, but ETC2 alpha
still is, we need to distinguish between the 2. Added an argument
to DecodeBlock for that purpose.

Change-Id: Ied4263cecc43f88609a357437c11f4e43af229b8
Reviewed-on: https://swiftshader-review.googlesource.com/15228
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
/external/swiftshader/src/Renderer/ETC_Decoder.cpp
f46493fe09205383fc22ab18bbb6cc1ddcb94079 18-Dec-2017 Alexis Hetu <sugoi@google.com> Fixed EAC failures

The ETC2 decoder spec has a slight difference with the EAC decoder
spec when it comes to handling the 0 multiplier corner case.

For ETC2, we have (OpenGL ES 3.0 spec, section C.1.3):
"An encoder is not allowed to produce a multiplier of zero, but
the decoder should still be able to handle also this case (and
produce 0 x modifier = 0 in that case)."

For EAC, we have (OpenGL ES 3.0 spec, section C.1.5):
"If the multiplier value is zero, we should set the multiplier
to 1.0/8.0"

In order to take this into account, the EAC decoded output can no
longer be represented by an 8 bit value, but must be represented by
a minimum of 11 bits, as the spec requires. For now, the EAC decoder
decodes EAC into a 32 bit integer format, which then gets converted
to a 32 bit float format internally.

Eventually, it would be possible for the EAC decoder to decode the
image to a signed 16 bit integer internal format, if it was supported.

Fixes all failures in:
dEQP-GLES3.functional.texture.wrap*

Change-Id: I32106383ade56e375229231ff230a2574791caa6
Reviewed-on: https://swiftshader-review.googlesource.com/15188
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
/external/swiftshader/src/Renderer/ETC_Decoder.cpp
0bac285a78df6a6d7a6b68784748b92805420ffb 07-May-2016 Nicolas Capens <capn@google.com> Apply the Apache 2.0 license.

Change-Id: I4a7aeefedcd2d891093520d5a10ebefadcddb5be
Reviewed-on: https://swiftshader-review.googlesource.com/5320
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
/external/swiftshader/src/Renderer/ETC_Decoder.cpp
0de50d45bcb034864c837c27c7fc5ed2d30d80c4 09-Sep-2015 Alexis Hetu <sugoi@google.com> ETC2 decoder

A new ETC2 decoder was added to SwiftShader, based on the
OpenGL ETC2 specification. The decoder is fully standalone
and does not rely on any outside code (there are no files
included in the header and the source file only include the
header file, so it can easily be ported to any other project).

Things to note:
- In Surface.cpp, signed ETC2 images are decoded to full 32FP
images, because of the lack of support for signed 8 bit R
and RG internal formats. This should be fixed as soon as
these formats are made available.
- sRGB conversion is not performed within the decoder, so it has
been added as a loop inside Surface::decodeETC2 after the ETC2
decoding is performed. This is to make sure that there is no
loss of precision, should we choose to do the conversion to a
higher bit precision format. The loop is fairly straightforward
and does the conversion in place, so the impact on performance
compared to doing the sRGB conversion in the decoder should be
minimal.

Change-Id: I3a1af623353344bf35818ba9c9f4cf349b587e2f
Reviewed-on: https://swiftshader-review.googlesource.com/3960
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
/external/swiftshader/src/Renderer/ETC_Decoder.cpp