Fix FLOAT texture sampling precision problems on some mobile GPUs#1395
Merged
bors-servo merged 1 commit intoservo:masterfrom Jun 17, 2017
Merged
Fix FLOAT texture sampling precision problems on some mobile GPUs#1395bors-servo merged 1 commit intoservo:masterfrom
bors-servo merged 1 commit intoservo:masterfrom
Conversation
Member
|
Looks good, thanks! @bors-servo r+ |
Contributor
|
📌 Commit 74cb194 has been approved by |
Contributor
bors-servo
pushed a commit
that referenced
this pull request
Jun 17, 2017
Fix FLOAT texture sampling precision problems on some mobile GPUs Hi, I'm working on running WebGL/WebVR demos on a Samsung Galaxy S7. I found that WR renders a white screen in all WebGL or CSS demos, even the simple ones. It's weird because it works correctly on other old Android phones such as Nexus 4 (released 5-6 years ago). I thought that it was caused by a GPU driver issue but after heavy debugging I found that texelFetch was getting corrupt values for big float values (e.g. local_clip_rect). They are stored correctly on the texture data but clamped to maximum half_float value (65504.0) when computed in the shaders. Adding highp precision qualifier to the FLOAT sampler2D fixes the issue. Samsung Galaxy S7 has Mali-T880 GPU. The precision qualifier wasn't need on other Android mobiles I have tested (mostly Adreno GPUs). <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/1395) <!-- Reviewable:end -->
Contributor
|
☀️ Test successful - status-travis |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi,
I'm working on running WebGL/WebVR demos on a Samsung Galaxy S7. I found that WR renders a white screen in all WebGL or CSS demos, even the simple ones. It's weird because it works correctly on other old Android phones such as Nexus 4 (released 5-6 years ago). I thought that it was caused by a GPU driver issue but after heavy debugging I found that texelFetch was getting corrupt values for big float values (e.g. local_clip_rect). They are stored correctly on the texture data but clamped to maximum half_float value (65504.0) when computed in the shaders.
Adding highp precision qualifier to the FLOAT sampler2D fixes the issue. Samsung Galaxy S7 has Mali-T880 GPU. The precision qualifier wasn't need on other Android mobiles I have tested (mostly Adreno GPUs).
This change is