|
800e82c6
|
2021-08-23T11:05:23
|
|
Translator: Validate precisions
When declaring a variable, a struct field, function parameter etc,
there's a precision necessarily applied to the entity being declared.
AST Validation is added to enforce this. Intermediate nodes derive
their precision from these entities automatically.
Consistency of intermediate nodes is not validated. This is because AST
transformations replace a node with a transformed one, and that may not
have the same precision. Take the following code:
mediump float x = ...;
mediump float y = ...;
... x + y ...
and assume is transformed as such:
highp float driver_uniform;
... (x * driver_uniform) + y ...
The addition was originally done in mediump, but would seemingly need to
be done in highp after transformation. There are a number of options
here:
- Make sure that when nodes are replaced, the precision is unaffected.
This can be intrusive, requiring temp variables.
- Bubble up the new precision
- Accept the discrepancy
ANGLE opts for the last option, which actually respects the original
shader's intended precision for operations, even if some transformation
needs to temporarily evaluate an expression at a higher precision.
Bug: angleproject:4889
Bug: angleproject:6132
Change-Id: Ibcde3a230de159157783b1c6d5ef1cd63ceb4d8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3114027
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d191bc32
|
2021-08-06T12:59:39
|
|
Reintroduce TType::isRank0.
This concept was used in the direct-to-Metal compiler, and its
replacement with isScalar wasn't completely correct. Fixes several
assertion failures in tests.
Bug: angleproject:4889
Bug: angleproject:5505
Change-Id: I9b8800ed50591560c8e53faa81eca581c4f07a02
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078474
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
a65b4056
|
2021-07-30T23:00:57
|
|
Reland "Translator: Clean up type cloning"
This is a reland of f016c4352f5203c10511df078b1ed5359afc1b35
Original change's description:
> Translator: Clean up type cloning
>
> TType has a constructor that aids cloning + helpers to convert between
> types. A number of places where a type is constructed from the
> information gathered from another type is changed to clone the type and
> then use one of these helpers.
>
> This clean up is part of an ongoing work to improve precision handling.
> This change removes many references to TType::getPrecision().
>
> Bug: angleproject:4889
> Change-Id: Ib85659ab5363b56ad298f8648fca856edc1ebf8b
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3063944
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Tim Van Patten <timvp@google.com>
Bug: angleproject:4889
Change-Id: I35772f178eb4f6cf2b64bfeb37a4a144acdb4daf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3067802
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c5c8a25a
|
2021-08-03T14:40:33
|
|
Revert "Translator: Clean up type cloning"
This reverts commit f016c4352f5203c10511df078b1ed5359afc1b35.
Reason for revert: Suspect for crbug.com/1236060
Original change's description:
> Translator: Clean up type cloning
>
> TType has a constructor that aids cloning + helpers to convert between
> types. A number of places where a type is constructed from the
> information gathered from another type is changed to clone the type and
> then use one of these helpers.
>
> This clean up is part of an ongoing work to improve precision handling.
> This change removes many references to TType::getPrecision().
>
> Bug: angleproject:4889
> Change-Id: Ib85659ab5363b56ad298f8648fca856edc1ebf8b
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3063944
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Tim Van Patten <timvp@google.com>
Bug: angleproject:4889
Change-Id: I9b5ecacc410b41be382232292ceae2f7ea7906c7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3064393
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Austin Eng <enga@chromium.org>
|
|
f016c435
|
2021-07-30T23:00:57
|
|
Translator: Clean up type cloning
TType has a constructor that aids cloning + helpers to convert between
types. A number of places where a type is constructed from the
information gathered from another type is changed to clone the type and
then use one of these helpers.
This clean up is part of an ongoing work to improve precision handling.
This change removes many references to TType::getPrecision().
Bug: angleproject:4889
Change-Id: Ib85659ab5363b56ad298f8648fca856edc1ebf8b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3063944
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
cb87d78c
|
2021-07-08T08:28:04
|
|
Enable -Wshadow with Clang.
Also fixes a few instances of variable shadowing in the code.
Bug: angleproject:6148
Change-Id: Ic51d722a3f953f246f51af6d74abb302f832cf44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3014875
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d7aa0130
|
2021-04-26T16:56:15
|
|
Upstream Apple's direct-to-Metal backend: compile translator.
This change is meant to merge the translator changes from Apple's
direct-to-Metal backend. Taken from Kyle Piddington's CL:
https://chromium-review.googlesource.com/c/angle/angle/+/2857366/
The goal of this CL is to merge the translator code in a state that
compiles, but not to switch the Metal backend over to use this
translator backend yet.
Bug: angleproject:5505
Change-Id: I68a6354604498cd5fd1eb96c13fc56f3b38f2bd0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2897536
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|