|
f4e776a8
|
2024-10-14T22:41:34
|
|
GLES1: Fix eye distance for fog
Distance should be non-negative, so use abs().
From the spec, OpenGL ES 1.1 ยง3.8. Note the 'abs' symbols.
An implementation may choose to approximate the eye-coordinate
distance from the eye to each fragment center by |z_{e}|.
Bug: b/369665616
Test: angle_trace_tests --gtest_filter="*minetest*"
Change-Id: Ic6c162ba2469600fa6a8c8d61e5bccf5c0cb12d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5933566
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Lina Versace <linyaa@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Lina Versace <linyaa@google.com>
|
|
3dd79798
|
2023-04-07T12:57:05
|
|
GLES1: Convert ints to uints for mediump values
Mobile drivers are limiting mediump values to 16 bits, which follows
the GLSL spec.
Our shader was using signed mediump ints for enum values. That limits
their value range to [-2^15, 2^15-1], which is [-32768, 32767].
We started failing tests that use TexEnv mode GL_COMBINE (0x8570)
which converts to 34160 in decimal, exceeding the range.
This translated to a failure to switch on envMode in textureFunction.
To fix, convert all the mediump ints in the shader to mediump uints.
Test: GLES1ConformanceTest.TexCombine/ES1_Vulkan
Test: angle_trace_tests --gtest_filter="*wayward_souls*"
Bug: b/277220840
Change-Id: I5219fe1e725c80929906aee3eebd0729a2a29a9b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4409684
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
8b81a3d2
|
2023-03-27T10:03:34
|
|
GLES1: Use ASCII minus in comment
Bug: angleproject:7933
Change-Id: I05fb4512594447ff02078f1845c1ceb74c1b27ce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374097
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
abcbd54c
|
2022-12-19T14:38:49
|
|
GLES1: Optimize texcoord varyings
Use vec3 instead of vec4. Either 2 or 3 components are used based on 2D
or cube map textures. On hardware that can pack the varyings, this can
reduce pressure on varyings.
Additionally, this is a minor optimization to texture coord calculation
(when !draw_texture) as one row of the 4x4 matrix multiplication doesn't
need calculation.
Bug: angleproject:6644
Change-Id: I2abac511a0ced575c089dfb3a3b506f51a111a54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116676
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
91d6c3e6
|
2022-12-05T17:12:49
|
|
GLES1: Reduce pressure on vertex input / varyings
Typically, not all texture units are used. This change ensures no
vertex input / varying is consumed when fewer than maximum textures are
used.
Bug: angleproject:6644
Change-Id: Iea0e35dc12ec4fcb342818786f307286bf7fc5bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4081116
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
66a7117a
|
2022-11-30T10:34:30
|
|
GLES1: Use less precision for color and tex coords
Per the GLES1 spec, color and tex coords are satisified by
half-precision floats.
Bug: angleproject:6644
Change-Id: Ia3f8e45d4c35557a25373f9ad572e87708bc2001
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4067803
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
bc447ca4
|
2022-09-20T22:38:16
|
|
GLES1: Move lighting to vertex shader
In the spec, lighting is done as part of vertex processing, and results
in a new vertex color. Texturing is applied later. ANGLE however did
lighting in the fragment shader.
With this change, lighting is moved to the vertex shader. This fixes
rendering of lit objects, as interpolation is done linearly or flat
between the vertices per spec, instead of done precisely per fragment.
While typically this is inferior to per-fragment lighting, it's what the
spec mandates.
On the dr_driving trace, this reduces the render pass time by ~20% on
Pixel 6.
Bug: angleproject:6201
Bug: angleproject:6644
Change-Id: I10e37df8c56c22d520a738af8f8630bc6a01ca7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3906394
Reviewed-by: Constantine Shablya <constantine.shablya@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
69714184
|
2022-09-16T00:38:03
|
|
GLES1: Implement logic op through framebuffer fetch
Bug: angleproject:7654
Change-Id: Id5ee7aee8d38eb295b2fd9ff484f4755962c279a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3900513
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f6a171d5
|
2022-09-20T16:05:20
|
|
GLES1: Fix Fog rendering
The spec requires that:
- The fog factor is clamped to [0, 1]
- The fog only affects RGB, and not alpha
Bug: angleproject:7598
Change-Id: Iaea2933b5ccfa79b7db0a3e74193b1c5c10f11e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3907881
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f44a6fd2
|
2021-11-18T20:15:31
|
|
GLES1: Hard code integer values in the ubershader
This CL continues the process of removing uniform values from
the GLES1 ubershader to increase speed on mobile platforms.
The first phase removed bools 2091451e.
We've identified integers (enums) as providing the biggest bang for
buck to optimize speed while having acceptable program generation.
Allowing floats as well proved too much specialization. Many GLES1
conformance tests would grind to a halt while providing little to no
benefit to app traces.
This CL does the following:
* Create a GLES1ShaderState class that contains hashable data
* Populate it with all states influencing ubershader generation
* Hash the class to perform the lookup of existing programs
Frame times on Android ARM with locked GPU clocks:
Trace Before After
dr_driving: 4.2986 -> 0.8155
sonic_the_hedgehog: 2.8223 -> 0.6254
summoners_war: 15.9810 -> 2.3937
wordscapes: 7.6167 -> 1.1496
zillow: 2.9368 -> 1.9318
Test: end2end, perftests, gles1_conformance
Bug: angleproject:6644
Change-Id: I060280e282d7b514d3e410c4f8c5e09659e85d3b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3280355
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
2091451e
|
2021-10-27T22:57:34
|
|
GLES1: Create multiple shaders based on state
This CL introduces the concept of having optimized shaders for given
state combinations. In this first pass, all uniform bools have been
moved to hard coded values in the GLES1 ubershader.
Frame times on Android ARM with locked GPU clocks:
Trace Before After
dr_driving: 27.8145 -> 4.2986
sonic_the_hedgehog: 17.9779 -> 2.8223
summoners_war: 93.2040 -> 15.9810
wordscapes: 53.9227 -> 7.6167
zillow: 15.0323 -> 2.9368
Bug: angleproject:6644
Bug: angleproject:6652
Change-Id: I548bc5c6aa24bad5fbd740b9552c4a703ae41354
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251688
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
0df813c3
|
2018-07-12T12:52:06
|
|
GLES1: GL_OES_draw_texture
BUG=angleproject:2306
This implements GL_OES_draw_texture using a few bits of new state
in the renderer and adding a code path for it in the shader, using
gl_VertexID to draw the quad backing the texture draw. This allows us
to avoid allocating a separate vertex array for the texture draw and
reuses the current shader as much as possible, plugging in to the
existing multitexturing pipeline.
- Add unit test and sample
- No new test expectations, but advertising GL_OES_draw_texture makes
the DrawTex GLES1 conformance test non-trivial and actually test
glDrawTex*.
Change-Id: I1485098249fe44d46a01cab4bb7b2c39d0492923
Reviewed-on: https://chromium-review.googlesource.com/1135930
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
9c4c0926
|
2018-06-13T09:29:00
|
|
Reland "GLES1: Point rasterization (partial implementation)"
This is a reland of 4004ae0e033a0169de3cb53c0a036833ad47178a
Fix: Put the missing early-out in ValidatePointParameterCommon
Original change's description:
> GLES1: Point rasterization (partial implementation)
>
> - Not included: Smooth points
>
> - GL_OES_point_sprite
> - Update test expectations. Note: due to different random sampling,
> edge cases were hit in UserClip. Disabling that test for now.
>
> BUG=angleproject:2306
>
> Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
> Reviewed-on: https://chromium-review.googlesource.com/1101910
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Lingfeng Yang <lfy@google.com>
Bug: angleproject:2306
Change-Id: Id8e71352a77ff0ce71cb604965effbfb8aca613e
Reviewed-on: https://chromium-review.googlesource.com/1108458
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
a58d69e9
|
2018-06-20T18:07:11
|
|
Revert "GLES1: Point rasterization (partial implementation)"
This reverts commit 4004ae0e033a0169de3cb53c0a036833ad47178a.
Crash in PointParameterTest.NegativeEnum/ES1_OPENGL.
https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20FYI%20GPU%20ASAN%20Release/1178
angle_end2end_tests on Intel GPU on Mac on Mac-10.12.6
angle_end2end_tests on ATI GPU on Mac Retina on Mac-10.12.6
Original change's description:
> GLES1: Point rasterization (partial implementation)
>
> - Not included: Smooth points
>
> - GL_OES_point_sprite
> - Update test expectations. Note: due to different random sampling,
> edge cases were hit in UserClip. Disabling that test for now.
>
> BUG=angleproject:2306
>
> Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
> Reviewed-on: https://chromium-review.googlesource.com/1101910
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Lingfeng Yang <lfy@google.com>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,lfy@google.com
Change-Id: I776ce0506d349382b3af035c962aa2c3f6826b99
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2306
Bug: angleproject:2680
Reviewed-on: https://chromium-review.googlesource.com/1108457
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
4004ae0e
|
2018-06-13T09:29:00
|
|
GLES1: Point rasterization (partial implementation)
- Not included: Smooth points
- GL_OES_point_sprite
- Update test expectations. Note: due to different random sampling,
edge cases were hit in UserClip. Disabling that test for now.
BUG=angleproject:2306
Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
Reviewed-on: https://chromium-review.googlesource.com/1101910
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
6c60641d
|
2018-06-08T14:39:29
|
|
GLES1: Multitexture pipeline
- Update test expectations
BUG=angleproject:2306
Change-Id: I4a0376db1d095d7b14e00a5779631dcf2a6c427c
Reviewed-on: https://chromium-review.googlesource.com/1093795
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7ba3f425
|
2018-06-01T09:43:04
|
|
GLES1: Fog API and rendering
- Update test expectations
BUG=angleproject:2306
Change-Id: Ic5aa5f052bcbe9c5adaf0eb0c6c06df66fd1720c
Reviewed-on: https://chromium-review.googlesource.com/1082978
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
060088a5
|
2018-05-30T20:40:57
|
|
GLES1: Clip plane API and rendering
- Add unit tests for the API
- Update test expectations
+ Pass through point size from the vertex array to the shader,
required for new tests to pass.
BUG=angleproject:2306
Change-Id: Ib19436c1f4cb12873adea94f734c821363f9e27d
Reviewed-on: https://chromium-review.googlesource.com/1079993
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
32749b94
|
2018-05-30T19:24:18
|
|
GLES1: Alpha test
- Update test expectations
BUG=angleproject:2306
Change-Id: Ib49900c7c4d6b808ebfab9483d42d3fd98644f9e
Reviewed-on: https://chromium-review.googlesource.com/1079991
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
1478afaf
|
2018-05-17T10:43:34
|
|
GLES1: Lighting and materials (renderer)
- Update test expectations
- Add gles1 sample app that shows simple lighting.
BUG=angleproject:2306
Change-Id: I545dcf860374abd9d628b0d554153cb634098f6d
Reviewed-on: https://chromium-review.googlesource.com/1065501
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
461b09a8
|
2018-04-23T09:02:09
|
|
GLES1: Renderer (minimal)
This is the renderer code for GLES1 that delivers basic vertex
attributes, matrices, and allows texturing for unit 0 only (more units
mean implementing the multitexturing pipeline).
+ Sample
+ Update test expectations for GLES1 conformance tests
BUG=angleproject:2554
BUG=angleproject:2306
Change-Id: I398edc764f982fbfc4c5e0f9d6bfef1e91aec47c
Reviewed-on: https://chromium-review.googlesource.com/1057356
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
66aafcb4
|
2018-05-12T19:21:31
|
|
Revert "GLES1: Renderer (minimal)"
This reverts commit a69099212f7b3be8e6113ba349eee56af589f3de.
Reason for revert: New tests failing on gpu fyi bot. anglebug.com/2554
Original change's description:
> GLES1: Renderer (minimal)
>
> This is the renderer code for GLES1 that delivers basic vertex
> attributes, matrices, and allows texturing for unit 0 only (more units
> mean implementing the multitexturing pipeline).
>
> + Sample
> + Update test expectations for GLES1 conformance tests
>
> BUG=angleproject:2306
>
> Change-Id: Id5d5603c967e577290085e5946f2cb7a03d7e017
> Reviewed-on: https://chromium-review.googlesource.com/1023988
> Commit-Queue: Lingfeng Yang <lfy@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,lfy@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:2306
Change-Id: Ib6fd9db433cd1a13589d5a9e82cb2c40f3cf71ff
Reviewed-on: https://chromium-review.googlesource.com/1056229
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
a6909921
|
2018-04-23T09:02:09
|
|
GLES1: Renderer (minimal)
This is the renderer code for GLES1 that delivers basic vertex
attributes, matrices, and allows texturing for unit 0 only (more units
mean implementing the multitexturing pipeline).
+ Sample
+ Update test expectations for GLES1 conformance tests
BUG=angleproject:2306
Change-Id: Id5d5603c967e577290085e5946f2cb7a03d7e017
Reviewed-on: https://chromium-review.googlesource.com/1023988
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|