|
baf5d945
|
2017-08-28T20:45:48
|
|
ES31: Add UNIFORM support for ProgramInterface
Add program resource properties for uniform.
BUG=angleproject:1920
TEST=angle_end2end_tests:ProgramInterfaceTest*
Change-Id: Ia5cf6219db43b8b1f73efbb3565d21c86e9d3ec0
Reviewed-on: https://chromium-review.googlesource.com/638050
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fb997ec1
|
2017-09-20T15:44:27
|
|
Removed "name" and "used" from variable location.
The used flag was redundant with the index (which used MAXUINT). The
name was redundant with the stored uniform. Removing these gives a
very minor performance speed up when iterating and retrieving
uniform locations.
BUG=angleproject:1390
Change-Id: Ieeccdff7c131e1359e754e246d3648b73aad5baf
Reviewed-on: https://chromium-review.googlesource.com/659224
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
729b2c6e
|
2017-08-14T09:36:11
|
|
ES31: Enable shader storage buffer support for OpenGL backend
BUG=angleproject:1951
TEST=angle_end2end_tests:ShaderStorageBuffer
Change-Id: I1afc3cd005ad2e595c6ce937fc53e17423f8ec8b
Reviewed-on: https://chromium-review.googlesource.com/618132
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d68248be
|
2017-09-11T14:34:14
|
|
Update Texture dirty bits documentation.
BUG=angleproject:1387
Change-Id: Ie2277874acb9e7a3eed4bce327f2c08750213967
Reviewed-on: https://chromium-review.googlesource.com/660419
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
81c2e253
|
2017-09-09T23:32:46
|
|
Add top-level dirty bits for texture and samplers.
These will have to be fleshed out in the back-ends.
Also currently uses a single bit for all the bindings, and we can
extend this to more fine-grained updates in the future.
This patch implements top-level updates for texture completeness.
Sampler completeness caches are removed from the Texture class, and
replaced by a cache in the gl::State class. The State class also
keeps a channel binding to the bound textures so it can be notified
when textures might change from complete <-> incomplete.
In future CLs we skip updating back-ends if texture state doesn't
change.
BUG=angleproject:1387
Change-Id: If580b4851303c86f3240e62891f5f6047eefb6a2
Reviewed-on: https://chromium-review.googlesource.com/648053
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fe8b5989
|
2017-09-07T17:00:18
|
|
Program: Fixed unreferenced Samplers.
The calculation for unreferenced was incorrect - it checked the 'used'
flag of the uniform location, but if samplers started at index zero,
all the unused uniforms were to be considered valid samplers. Instead,
initialize the uniform index to INVALID_INDEX.
This bug was uncovered after doing work on the Texture dirty bits.
BUG=angleproject:1387
Change-Id: I5e404e367caed38368bcc0e581699ae2c911bcc9
Reviewed-on: https://chromium-review.googlesource.com/655930
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
134f93d1
|
2017-08-31T17:11:00
|
|
D3D: Small optimizations to uniform updates.
Uses more of the type info table for updates.
Also special-case clamping when uniform count == 1.
Improves the speed of the d3d11 uniform stress test by ~20%.
BUG=angleproject:1390
Change-Id: I6707c67db84c94a28b1519b0bbee5d28fe38b189
Reviewed-on: https://chromium-review.googlesource.com/646828
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
be5e2ec3
|
2017-08-31T13:28:28
|
|
Remove uniform memory copy from GL front-end.
This moves the uniform query to the back-end. In D3D, this requires
a bit more redesign, especially for matrix uniforms.
Gives about a 10% speed improvement in the GL/NULL uniforms stress
test on Windows (UniformsBenchmark.Run/gl_null_400_vec4).
BUG=angleproject:1390
Change-Id: Idac22a77118e9e94d2f28c585e31ff0bc785ba94
Reviewed-on: https://chromium-review.googlesource.com/623929
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
855d964b
|
2017-05-17T14:05:06
|
|
Prefix user-defined names in GLSL output
Now user-defined names are prefixed by _u in GLSL output in case name
hashing is not on. Internal names such as names of temporary variables
created in AST transformations are written out as such.
This makes handling of internal function names and internal variable
names consistent. It also removes the possibility of name conflicts
between user-defined names and internal names in case name hashing is
not on. In the same vein, it makes it safe to use GLSL reserved words
that are not reserved in ESSL as variable names in case name hashing
is not on.
This also makes the GLSL output more consistent with how names are
handled in HLSL output. Name hashing code is shared between
VariableInfo and OutputGLSLBase to ensure names are handled
consistently in both. The name that's used in the shader source for a
given interface variable is written out to ShaderVariable::mappedName.
An exception needs to be made for identifiers close to the length
limit, since adding any prefix would take them over the limit. But
they can be just written out as such, since we don't have any builtins
or ANGLE internal variables that have as long names and could create a
conflict.
BUG=angleproject:2139
BUG=angleproject:2038
TEST=angle_unittests, angle_end2end_tests, WebGL conformance tests
Change-Id: Id6ed052c4fab2d091227dc9a3668083053b67a38
Reviewed-on: https://chromium-review.googlesource.com/507647
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
39e78122
|
2017-08-29T14:34:22
|
|
Fix assert when linking nonexistent transform feedback varying
linkValidateTransformFeedback needs to be run after packing varyings,
since it relies on nonexistent varyings being already handled.
BUG=angleproject:2141
TEST=angle_end2end_tests on debug
Change-Id: I6178348f05a19070a2d17caf90f732df9eb06b9d
Reviewed-on: https://chromium-review.googlesource.com/641152
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
54164b0c
|
2017-08-28T15:17:37
|
|
Add getUniform impl methods.
This will let us remove some of the uniform data management code in
the GL front-end, and simplify the GL back-end. It will also enable
us to implement uniform data more efficiently in the D3D11 back-end,
and probably Vulkan back-end later.
This also implements a new impl method for the ProgramGL class to
flag optimized-out uniforms as no longer used, post-link. This is
important because otherwise the optimized uniforms get assigned
valid locations, and then the getUniform calls are expected to
succeed.
We also use a workaround for uniform value queries for the GL
back-end. It seems as though some drivers (seen on NVIDIA and AMD)
may not properly clamp to the maximum representable integer value
when querying out-of-range floating point values. Work around this by
always calling the driver with the proper type and then casting the
value in ANGLE.
BUG=angleproject:1390
Change-Id: I03dc2382e7af52455c356a2bf3971a4d1bd46ec6
Reviewed-on: https://chromium-review.googlesource.com/616785
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9b11ea4f
|
2017-07-11T16:50:08
|
|
Gather UniformBlock and ShaderStorageBlock separately
Refactor InterfaceBlocks since it only stands for UniformBlock before
ES31. But for ES31, uniform block and shader storage block both belong
to interface block.
This CL will add GetUniformBlocks and GetShaderStorageBlocks in
ShaderLang.h. Meanwhile, keep GetInterfaceBlocks which can return all
the interface blocks together.
BUG=angleproject:1951
Change-Id: I3036e201aadfbd490575ed03538c81bcc3793ff3
Reviewed-on: https://chromium-review.googlesource.com/582546
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
880683b1
|
2017-04-12T16:21:55
|
|
ES31: Add glGetProgramResourceiv API
Add API entry and validation checks(GLES 3.1 section 7.3).
Add the first 2 interfaces(PROGRAM_INPUT and PROGRAM_OUTPUT) implementation.
BUG=angleproject:1920
TEST=angle_end2end_tests:ProgramInterfaceTestES31.*
Change-Id: I50057f7b99f4dc7c23ca87fa9b797ca424f66e3d
Reviewed-on: https://chromium-review.googlesource.com/475075
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6c58b062
|
2017-08-01T13:44:25
|
|
Add histograms for the program cache.
Also includes some tracking of if a cache hit comes from a binary
inserted after a Link call, or sourced from the external disk cache.
Chromium-side CL: https://chromium-review.googlesource.com/c/592151/
BUG=angleproject:2118
Change-Id: I80eefd203d8ce31d1ac03dd1a36459d3581128f5
Reviewed-on: https://chromium-review.googlesource.com/590689
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
44183cce
|
2017-08-01T12:48:34
|
|
Micro-optimizations to draw call entry point.
Thanks to Markus from NVIDIA. This inlines some methods and optimizes
the check if a uniform is a bool type.
BUG=angleproject:2119
Change-Id: I6f2c2d22c577458b39de600d3c56ec8e1a456a7a
Reviewed-on: https://chromium-review.googlesource.com/591699
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
23176cea
|
2017-07-31T14:14:33
|
|
Fix performance regression in stream init.
Regressed: https://chromium-review.googlesource.com/531798
This was because the std::stringstream constructor was being called
every draw call, for the InfoLog of the dynamically recompiled
shaders in the D3D back-ends. The constructor was allocating memory
and freeing it on destruction. Instead use a lazy init for the
std::stringstream in InfoLog like we do for Error.
BUG=chromium:750685
Change-Id: I9cd429ae4e1439ae504943a9cad31cbbed17ef32
Reviewed-on: https://chromium-review.googlesource.com/594629
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7cf6166a
|
2017-07-26T17:10:53
|
|
Generate error on program-framebuffer num views mismatch
According to the ANGLE_multiview spec Draw* commands should generate
an INVALID_OPERATION error if the program uses the multiview extension
and the number of views in the active draw framebuffer and active
program differs. The patch addresses this by extending the base draw
call validation.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I369070beb5ccb17211dbe61ebec40bfcbcf5bc4e
Reviewed-on: https://chromium-review.googlesource.com/586605
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
0328b575
|
2017-06-26T15:51:36
|
|
Bind all elements of unbound image arrays to unit zero
Spec GLSL ES 3.10, section 4.4.5, Any uniform sampler, image or atomic
counter variable declared without a binding qualifier is initially bound
to unit zero. If the binding qualifier is used with an array, the first
element of the array takes the specified unit and each subsequent element
takes the next consecutive unit.
BUG=angleproject:1987
TEST=angle_end2end_tests:ComputeShaderTest
Change-Id: I6a8188449a91bf3e8ded37e067205dcae4e47fa7
Reviewed-on: https://chromium-review.googlesource.com/547977
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
84db5733
|
2017-07-13T08:00:02
|
|
Merge "Fix non statically used fragment input structs on HLSL"
|
|
caa5cda0
|
2017-06-15T21:14:03
|
|
Validate uniforms and attributes name conflicts when linking
Uniforms and attribute names have global scope, according to:
GLSL 1.017 sections 4.2.6, 4.3.3 and 4.3.4.
Thus, they can't have same names.
BUG=angleproject:2014
Change-Id: Ibeb064aca877e404a67b9e3e9b57a0cc42e86f9f
|
|
06a06f5e
|
2017-07-12T12:22:15
|
|
Fix non statically used fragment input structs on HLSL
Add static use information to struct fields that mirrors the static
use information on the struct itself. This way dynamically generated
HLSL doesn't need special handling for initializing fragment inputs
if they are structs.
This fixes a problem with the previous code where dynamically
generated HLSL ended up trying to initialize structs that are not
declared in the HLSL output because they were not being referenced.
BUG=angleproject:2104
TEST=angle_end2end_tests
Change-Id: I21283ce4fe26515d62d95e61f8155dc9a9b44cf1
|
|
eaef1e5e
|
2017-06-13T10:44:11
|
|
Link atomic counters to buffers
Gather counters from each shader and group them according the
layout qualifier 'binding' into each buffer.
BUG=angleproject:1729
TEST=angle_end2end_tests:AtomicCounterBufferTest
Change-Id: I8d0cd0d2bf65be37c035b0e1540481c8bee0bae4
|
|
3244736a
|
2017-06-28T14:53:52
|
|
Use MemoryProgramCache.
Add the member functions for saving and loading from the binary cache,
and hook them into the Program class. Requires that the Renderer
supports the program binary extension.
BUG=angleproject:1897
Change-Id: I2dc8d21b02da705ded58c5cd1943562c9c97c49b
Reviewed-on: https://chromium-review.googlesource.com/522874
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ffe00c03
|
2017-06-27T16:26:55
|
|
Add program cache transform feedback workaround.
On Qualcomm devices, they don't seem to correctly save transform
feedback info. Work around this by disabling caching on these devices.
This mirrors a Chromium workaround.
BUG=angleproject:2088
Change-Id: I6496d2fb6a03788379a6968bcd5eb3a9cb9d15d4
Reviewed-on: https://chromium-review.googlesource.com/549981
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
65ec0b2e
|
2017-03-28T16:10:52
|
|
ES31: Add support for bindImageTexture on GL backend
This patch refers to https://chromium-review.googlesource.com/c/380636/
BUG=angleproject:1987
Change-Id: If621eed6ecaa7298214843a2a133801ca1487b03
Reviewed-on: https://chromium-review.googlesource.com/462088
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7a20b973
|
2017-06-13T14:25:26
|
|
Refactor uniform block binding
Remove mUniformBlockBindings and move its bindings to mUniformBlocks.
BUG=angleproject:1442
Change-Id: I62b4471990a44e626d2357c41cb914abc27cb18f
Reviewed-on: https://chromium-review.googlesource.com/532834
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
34ca4f5b
|
2017-06-13T11:49:39
|
|
Remove Shader::getSemanticIndex.
This method doesn't really belong to GL, and was only used by the D3D
back-end to compute some attribute indexes. Simplify the code by
moving it into ProgramD3D. Also add the ability for the ShaderImpl to
assert that any pending compiles have resolved.
BUG=angleproject:1156
Change-Id: I0af3d3082ff8c908e6a87b9734989efbefd28808
Reviewed-on: https://chromium-review.googlesource.com/526336
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4f86d053
|
2017-06-05T12:59:26
|
|
Introduce MemoryProgramCache.
This class will manage GPU binary programs in memory. It will be
owned by the Display, and shared between Contexts. Currently this
CL just refactors the Program binary saving and loading into static
members of this new class.
BUG=angleproject:1897
Change-Id: I34f5afb2c02416f6fd80dd65ba3827a8637ce190
Reviewed-on: https://chromium-review.googlesource.com/522873
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
83418fb1
|
2017-06-05T12:59:24
|
|
Don't allow for error in ProgramImpl::save.
Refactoring cleanup patch only.
BUG=angleproject:1897
Change-Id: I6d12de5dab16ead9684886a1cf15b570e3c98156
Reviewed-on: https://chromium-review.googlesource.com/522871
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
982f6e01
|
2017-06-07T14:33:04
|
|
Improvements to the gl::Range class.
Make this a proper class, fix the extends method (previously did not
work as expected), add a contains method, and add tests. Also add an
iterator helper class so we can iterate over the range with range-for
loops.
This also fixes the shader resource unsetting code, which was not
actually unsetting all the possible applied textures.
BUG=angleproject:2052
Change-Id: I2a6fa97f96ccb612ad01a5e3f24dc869c54c967b
Reviewed-on: https://chromium-review.googlesource.com/527318
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bb1e750c
|
2017-06-05T16:40:09
|
|
Validate that structure names match when linking uniforms.
GLSL 1.017 4.2.4:
Structures must have the same name, sequence of type names, and
type definitions, and field names to be considered the same type.
TEST=conformance/glsl/misc/shaders-with-uniform-structs
BUG=angleproejct:2013
Change-Id: Ieedaaca2d28ef4e1cc0b5480f413ebd513c1dc1f
Reviewed-on: https://chromium-review.googlesource.com/524036
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bd044ed8
|
2017-06-05T12:59:21
|
|
Defer shader compiles when possible.
When using the program binary memory cache inside ANGLE, this will
give a potential fast path. If the user doesn't query the shader
compile status or info log before calling LinkProgram, then we can
check the program cache before translating the program, and if it
finds a hit, we don't even need to call the translator.
To preserve the shader settings at compile time, a reference to the
current shader translator is kept in a binding pointer on the call
to compile. This mirrors a similar implementation in Chromium's
command buffer. Also the compile options and source are cached at
compile to preserve the correct shader state.
BUG=angleproject:1897
Change-Id: I3c046d7ac8c3b5c8cc169c4802ffe47f95537212
Reviewed-on: https://chromium-review.googlesource.com/517379
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fccbac2c
|
2017-05-28T17:29:26
|
|
Validate precision in uniform blocks for WebGL.
In WebGL mode turn on checking that precision qualifiers match in
corresponding vertex/fragment uniform blocks. Add test for this behavior.
BUG=angleproject:2015
Change-Id: Ie035138e8c46e430bdcf8fb5bbc3e0a3ab7d6391
Reviewed-on: https://chromium-review.googlesource.com/517724
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e7557744
|
2017-06-01T13:09:57
|
|
WebGL compatibility: remove UB for draw buffers in the GL backend.
WebGL adds two rules:
- Fragment outputs declared but not written to should default to black.
- FBO attachments for outputs not declared in the shader should not be
written to (it is UB in OpenGL ES).
Fix the first one by using the SH_INIT_OUTPUT_VARIABLES compiler
options, and the second one by messing with glDrawBuffers so that the
enabled draw buffers are always a subset of the ones declared by the
shader.
BUG=angleproject:2048
Change-Id: I1d851c190959c1acfc3e41d837e6990aec1d4086
Reviewed-on: https://chromium-review.googlesource.com/521682
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c564c070
|
2017-06-01T12:45:42
|
|
Pass gl::Context to impl methods instead of ContextImpl.
In some cases we might have to call back into the GL layer, passing
the Context, and if we just have a ContextImpl pointer this isn't
possible. It also removes the need for SafeGetImpl.
BUG=angleproject:2044
Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6
Reviewed-on: https://chromium-review.googlesource.com/516835
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e0cff190
|
2017-05-30T13:04:56
|
|
Validate that fragment shader output matches the draw buffer type.
TEST=conformance2/rendering/fs-color-type-mismatch-color-buffer-type
BUG=angleproject:1688
Change-Id: I17848baf40b6d32b5adc1458fe2369b850164da3
Reviewed-on: https://chromium-review.googlesource.com/518246
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
af713a24
|
2017-04-19T09:10:56
|
|
ES31: Implement binding layout for uniform blocks
The binding point of uniform blocks can be specified in shaders with
this CL. See spec ESSL 3.10, section 4.4.4, page 58 for more info.
dEQP-GLES31.functional.ubo.* still can't completely pass as
the missing of arrays-of-arrays feature. Neither can
dEQP-GLES31.functional.layout_binding.ubo.* due to the incomplete
implementation of program interface APIs.
TEST=angle_end2end_tests:UniformBufferTest
BUG=angleproject:1442
Change-Id: If95d468fc109834a132b9b817730d3fdc3a615da
Reviewed-on: https://chromium-review.googlesource.com/483848
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c1d770e8
|
2017-04-13T17:31:24
|
|
Refactor remaining GLES 2.0 entry points.
This will pave the way for several features, like auto-generation.
BUG=angleproject:747
Change-Id: Ic390ac412f4e6b61346629093f185a4c07ea0284
Reviewed-on: https://chromium-review.googlesource.com/474118
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a9042d3c
|
2017-03-17T08:50:45
|
|
ES31: Add array element transformfeedback
This enhances the PackedVarying to be either one element of array, or
whole array. Correspondingly the VaryingPacking is expanded to pack it
properly.
BUG=angleproject:1950
Change-Id: I0529d7ac4367d42b2b433410fbf08351412aada8
Reviewed-on: https://chromium-review.googlesource.com/459115
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
20e005b2
|
2017-04-07T14:19:22
|
|
Rename BitSetIterator.h to bitset_utils.h
BUG=angleproject:1814
Change-Id: I152ae13b6b7cf0ba72259967f0f124e199b20e07
Reviewed-on: https://chromium-review.googlesource.com/471826
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fd7c3b52
|
2017-03-21T15:36:03
|
|
ES31: Add glGetProgramResourceName API
Add API entry and validation checks(GLES 3.1 section 7.3).
Add the first 2 interfaces(PROGRAM_INPUT and PROGRAM_OUTPUT) implementation.
BUG=angleproject:1920
Change-Id: Ide7d5ad40a611a091c3dffab47fd31da57b69f1d
Reviewed-on: https://chromium-review.googlesource.com/457523
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
61afff14
|
2017-03-14T15:34:03
|
|
ES31: Add PROGRAM_SEPARABLE to ProgramParameter and GetProgram
BUG=angleproject:1939
TEST=angle_end2end_tests
Change-Id: I97ad11360f7c015947a2c0cc7d4a47f994726834
Reviewed-on: https://chromium-review.googlesource.com/454264
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
48fed633
|
2017-03-16T12:05:30
|
|
Set sampler uniform values from binding qualifiers
The usual set uniform call is used to set initial sampler uniform
values based on binding layout qualifiers. This is the simplest way to
ensure that the uniform values are set correctly in both internal data
structures of the Program class and on the different backends. This is
done as one of the last steps of program linking.
TEST=dEQP-GLES31.functional.uniform_binding.sampler*
BUG=angleproject:1442
Change-Id: I2f58c98e175f6a10a90042050f4fcbea77ad97ac
Reviewed-on: https://chromium-review.googlesource.com/456597
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
15015f7f
|
2017-03-16T13:54:21
|
|
ES31: Add glGetProgramResourceIndex API
Add API entry and validation checks(GLES 3.1 section 7.3).
Add the first 2 interfaces(PROGRAM_INPUT and PROGRAM_OUTPUT) implementation.
BUG=angleproject:1920
Change-Id: Ib2dedded9fd79b315e9f38de7c27a5e4ec4c6066
Reviewed-on: https://chromium-review.googlesource.com/453085
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
36e120ef
|
2017-03-14T14:53:58
|
|
Refactor the staticUse checks for attribute and output
Remove these needless checks as GetActiveShaderVariables in Shader.cpp has
filtered them already.
BUG=angleproject:1920
Change-Id: Ife85614a8f636768dd585a827bca81e2f15009c8
Reviewed-on: https://chromium-review.googlesource.com/454129
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b78707c8
|
2017-03-09T15:03:11
|
|
Move default-block uniform linking to a separate file
The code is easier to understand when it's encapsulated better.
This change is pure refactoring with no functional changes.
BUG=angleproject:1442
TEST=angle_end2end_tests
Change-Id: I6128fd72c65ca7a87af596cda4866c74c2a66c48
Reviewed-on: https://chromium-review.googlesource.com/452502
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
6ca2b65c
|
2017-02-19T18:05:10
|
|
Implement location layout qualifier for uniforms
This is a complete implementation of the uniform location layout
qualifier. Uniform location set in the shader is plumbed to shader
linking, which does several link-time checks for conflicts and
recursively applies the location to struct members.
Validate that location is consistent as specified in the table in
section 9.2.1 of the ESSL 3.10.4 spec. The location set in the shader
overrides the one set via the CHROMIUM_bind_uniform_location API.
Location conflicts must be checked even if the uniforms are not
statically used. Because of this unused uniforms are now recorded
during uniform linking. After linking checks are done, unused uniforms
are pruned from the program state.
Location is validated against the maximum number of uniform locations
at compile time as specified in section 4.4.3 of the ESSL 3.10.4 spec.
All dEQP uniform location tests don't yet pass due to unrelated bugs.
BUG=angleproject:1442
TEST=angle_end2end_tests, dEQP-GLES31.functional.uniform_location.*
Change-Id: I1f968e971f521fbc804b01e1a7c2b4d14f24d20f
Reviewed-on: https://chromium-review.googlesource.com/447942
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
817232ef
|
2017-02-22T18:36:10
|
|
Validate invariance of built-in variables when linking
According to ESSL 1.00.17 paragraph 4.6.4
BUG=angleproject:1876
Change-Id: I61e142c31dce11eec28fe240a9bc9ce2c632daf6
Reviewed-on: https://chromium-review.googlesource.com/446870
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
547cbd46
|
2017-02-27T11:54:00
|
|
Validate uniform binding at link time
GLSL ES Spec 3.10.4, section 4.4.5 has the rules for linking uniforms
with binding layout qualifiers. If a binding layout qualifier for a
uniform variable is specified in both vertex and fragment shaders, the
qualifiers must match.
BUG=angleproject:1893
TEST=dEQP-GLES31.functional.layout_binding.*binding_contradictory*
Change-Id: I0ae6a1a8967df818be8136510c22daee848b9da7
Reviewed-on: https://chromium-review.googlesource.com/447557
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
4a92cebc
|
2017-02-19T17:51:24
|
|
Clarify code around setting uniform locations
Use the name "uniformLocationBindings" for location information set by
the API instead of "uniformBindings", which can be easily confused
with binding layout qualifiers that can be set for some types of
uniforms. Also use more straightforward names throughout the
indexUniforms function.
BUG=angleproject:1442
Change-Id: I47d504479b36def696305f060e9c9bd3de3ade48
Reviewed-on: https://chromium-review.googlesource.com/445236
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
6c1f671b
|
2017-02-14T19:08:04
|
|
Add destroy hooks for several GL objects.
These hooks allow the back-end renderer to free object resources
without having to store pointers to shared device handles for
each and every object. This will allow us to save memory on
back-ends that really care about memory overhead.
There is a downside in that there is more boilerplate in passing
gl::Context handles around everywhere.
BUG=angleproject:1684
Change-Id: I89463bba8d23f92920e8956650cb73c7fc6d66b7
Reviewed-on: https://chromium-review.googlesource.com/426401
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8ecf7f9b
|
2017-01-13T17:29:52
|
|
Vulkan: Implement shader compilation.
This hooks up the Vulkan GLSL, decorated with locations, to glslang,
and then pipes the SPIRV back to the Program implementation for later
use when making pipelines to run draw calls.
The program compilation tests work now, but don't really test
anything other than not generating Vulkan validation layer errors
during compilation and shader object generation.
BUG=angleproject:1576
Change-Id: I625e42219f4b4d1433dd3109b94e1a2f666ba4bd
Reviewed-on: https://chromium-review.googlesource.com/408519
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4ddf5afb
|
2016-12-01T14:30:44
|
|
Refactor ResourceManager into separate managers per resource type.
BUG=angleproject:1639
Change-Id: I943f553cfb0e0feb57953770784b48e22fccc875
Reviewed-on: https://chromium-review.googlesource.com/423172
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ac4e9c3f
|
2017-01-13T14:07:12
|
|
Micro-optimize Uniform updates.
This saves a few re-computations of the same stuff.
BUG=angleproject:1671
Change-Id: I28f955cd880366a86c0bb22285a119e97661e2cb
Reviewed-on: https://chromium-review.googlesource.com/427326
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a4595b80
|
2017-01-11T17:36:34
|
|
WebGL: Validate simple rendering feedback loops.
This adds the most basic form of rendering feedback loop detection:
when we're rendering to a texture that's also bound as an input. It
doesn't filter by selected mipmap level or 3D texture slice, or
do depth attachment validation. It also is missing checks for feedback
loops against the default Framebuffer.
BUG=angleproject:1685
Change-Id: Idb0ee2bfe1c35611544d132204c0da832c0f1c48
Reviewed-on: https://chromium-review.googlesource.com/425489
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e7d8432d
|
2017-01-10T18:21:59
|
|
Move ProgramGL's sampler bindings to gl::Program.
This saves code duplication and makes the sampler validation a bit
simpler. In the future we might be able to use it to replace the
custom D3D logic for caching sampler info, but this relies on
some shader-specific non-merged data.
This also introduces some code duplication in Uniform1iv.
BUG=angleproject:1685
Change-Id: I258607a21886ca20766607bddf958cd511fac3f1
Reviewed-on: https://chromium-review.googlesource.com/426781
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
acd1898e
|
2017-01-04T10:46:42
|
|
Replace Error(GL_NO_ERROR) with NoError().
In order to make the errors be consistent throughout ANGLE.
BUG=angleproject:1686
Change-Id: I0a2d86091d640aedeac94beae345c1fb6971b00d
Reviewed-on: https://chromium-review.googlesource.com/424835
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
192745a7
|
2016-12-22T15:58:21
|
|
Add varying packing validation for WebGL.
This CL moves the varying packing from the D3D layer up to Program.
This is necessary for WebGL validation, and gives us consistency
for the various back-ends. There may be some additional cleanup work
on the VaryingPacking class, because it does some work that is D3D-
specific.
WebGL requires strict varying packing. Instead of allowing success
unconditionally, it's an explicit error to succeed to pack a set of
varyings that the sample algorithm would fail to pack.
Introduce a new packing mode option to the varying packing class to
handle this different packing style, while keeping our old more
relaxed packing method for ES code.
BUG=angleproject:1675
Change-Id: I674ae685ba573cc2ad7d9dfb7441efa8cb2d55fc
Reviewed-on: https://chromium-review.googlesource.com/423254
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a7d12dc7
|
2016-12-13T15:08:19
|
|
Store uniform block bindings in program binaries.
This affects all back-ends - we weren't saving this. Note that
bindings can only be set after program linking. The spec is fairly
clear in that any programs saved must be loadable and runnable under
the same set of state, which would include block bindings.
Also add validation for zero binary formats in GetProgramBinary.
Also add a workaround for AMD where the block bindings were not
applied properly after link, similarly to our original bug.
This CL also includes a few fixups for GLProgram (raii).
BUG=angleproject:1637
Change-Id: Iae068eb4e1e4c763aa9f9332c033e38708026c8f
Reviewed-on: https://chromium-review.googlesource.com/418393
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a2c74985
|
2016-12-12T11:20:42
|
|
Don't load binaries across client versions.
BUG=angleproject:523
Change-Id: Id54033dce15f01a0f2891533172acd8b99896e12
Reviewed-on: https://chromium-review.googlesource.com/418240
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
eb979bfd
|
2016-11-15T12:28:46
|
|
Program: Small cleanup to linkAttributes.
The comment here was incorrect, and the signature passed some
redundant arguments.
Noticed this when I was looking at the code for Vulkan/glslang.
BUG=angleproject:1576
Change-Id: Ie9e7eb7cbe4b65503901b2550e95cd818b7c28c0
Reviewed-on: https://chromium-review.googlesource.com/412324
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8b7d8144
|
2016-11-15T13:40:37
|
|
Clamp "count" in glUniform* before passing to the backend
The OpenGL spec allows "count" to overflow safely implemented but some
drivers like the Intel Windows OpenGL driver don't handle this
correctly and crash on overflow tests.
BUG=661413
Change-Id: I10de9292c75daa375f002850900bb5e1cbfce3b6
Reviewed-on: https://chromium-review.googlesource.com/411387
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
15ac534a
|
2016-11-03T17:06:39
|
|
Program: clamp the number of uniforms to be copied
Reland with a temporary test suppression.
BUG=661413
Change-Id: I552b64de754b326dcd499b84d9f337b9d015dc8e
Reviewed-on: https://chromium-review.googlesource.com/411473
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
399d1a17
|
2016-11-15T14:55:06
|
|
Revert "Program: clamp the number of uniforms to be copied"
This reverts commit 9863a3ef180edb17307665e0cc65a16603222103.
Change-Id: I840a735b49bc4f2319c8af5f620d7f52bb7eecf1
Reviewed-on: https://chromium-review.googlesource.com/411470
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b0a838bf
|
2016-11-13T20:02:12
|
|
Program: Make LinkResult use gl::ErrorOrResult.
This simplifies the error handling code, and allows the use of the
ANGLE_TRY macro (and friends).
BUG=angleproject:1576
Change-Id: I3142388b10d0dd67a7f49a5c8c3d11102996be93
Reviewed-on: https://chromium-review.googlesource.com/411201
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9863a3ef
|
2016-11-03T17:06:39
|
|
Program: clamp the number of uniforms to be copied
BUG=661413
Change-Id: I1a146dae0d01edeb272a58610355261b0e23dec1
Reviewed-on: https://chromium-review.googlesource.com/406745
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
0350a64c
|
2016-11-01T17:01:51
|
|
Fixed the bug using uniform block array
At the beginning of Program::defineUniformBlock, getUniformBlockSize will call
getUniformBlockIndex on MacOS to check if the block is an active block with
giving blockName. However, it didn't distinguish array and non-array situations
and unified to use interfaceBlock.name as the blockName to call
getUniformBlockIndex. It would result that INVALID_INDEX was returned when
it's a block array. For example, using 'blockName' not 'blockName[0]'.
In OpenGL 4.3 spec, section 7.3.1, there are following descriptions:
If name exactly matches the name string of one of the active resources for
programInterface, the index of the matched resource is returned. Additionally, if
name would exactly match the name string of an active resource if "[0]" were
appended to name, the index of the matched resource is returned. Otherwise, name
is considered not to be the name of an active resource, and INVALID_INDEX is
returned.
So, for array block case, we use blockName appending [0] to check the activity.
BUG=angleproject:1543
Change-Id: I8189b62066b779f7d392a7dba1cf5cb02a31936d
Reviewed-on: https://chromium-review.googlesource.com/405830
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
60e6edfa
|
2016-10-31T12:17:19
|
|
Make ASSERT reference the conditional expression.
This should prevent further unexpected bot breakage due to
unreferenced variables in the ASSERT expression.
Also remove the no longer needed variable referencing macro.
BUG=angleproject:1586
Change-Id: I127695165bdfe39c51fe8d17e00daf6bf2fa8252
Reviewed-on: https://chromium-review.googlesource.com/404948
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6899b87f
|
2016-10-14T11:30:13
|
|
Implement the robust GetActiveUniformBlockiv entry point.
BUG=angleproject:1354
Change-Id: I2e8051910f50dc040f6be4922142364d36788c4e
Reviewed-on: https://chromium-review.googlesource.com/399041
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ef300b15
|
2016-10-07T15:12:09
|
|
Refactor some entry point stuff.
BUG=angleproject:747
Change-Id: I80634b5e6de8bae1433c49a56a92d3b19c24e11d
Reviewed-on: https://chromium-review.googlesource.com/395568
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
054f7ed0
|
2016-09-20T17:15:59
|
|
preprocessor: Miscellaneous cleanups
- Use full header paths in includes
- Use ASSERT instead of assert
- Use angle::NonCopyable instead of PP_DISALLOW_COPY_AND_ASSIGN
- Use range-for in a couple places
- Remove pp_utils.h
BUG=angleproject:1522
Change-Id: If107fef89e8465bca65cf664926d1051c5d1e232
Reviewed-on: https://chromium-review.googlesource.com/387212
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4c4c8e72
|
2016-08-04T12:25:34
|
|
Add compute program compilation and linking support
Compute shaders can be now compiled and linked to create programs.
Some tests are added to verify successful and unsuccessful compute
shader linking.
The patch also replaces std::array<int, 3> with a custom struct
WorkGroupSize.
BUG=angleproject:1442
TEST=angle_end2end_tests
TEST=angle_unittests
Change-Id: I4ab0ac05755d0167a6d2a798f8d7f1516cf54d84
Reviewed-on: https://chromium-review.googlesource.com/366740
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
3f6a398c
|
2016-07-15T15:20:45
|
|
Fix type conversion warnings.
BUG=angleproject:1382
Change-Id: Idee8882a7d7576faaa08418d9d399d836cec8fa7
Reviewed-on: https://chromium-review.googlesource.com/360903
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
46eaa946
|
2016-06-29T10:26:37
|
|
Support CHROMIUM_path_rendering fragment operations
This brings two new APIs, BindFragmentInputLocation and
ProgramPathFragmentInputGen that together dictate how the
fragment shader varyings are used.
BUG=angleproject:1382
Change-Id: I4b52fd8a3555235a73aecd4f3dba2d500789cbb0
Reviewed-on: https://chromium-review.googlesource.com/357071
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Sami Väisänen <svaisanen@nvidia.com>
Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
|
|
a1f6dc95
|
2016-06-15T23:27:04
|
|
Varying invariance must match between shaders in ESSL 1.00
While in ESSL 3.00 invariant is allowed only for out varyings.
Verify that, and update test expectations.
BUG=angleproject:1293
TEST=GLSLTest*.Invariant*
Change-Id: I5cab6c68f2b94ea2179719119668d905fe7a9b3d
Reviewed-on: https://chromium-review.googlesource.com/352743
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
cfa48d37
|
2016-06-15T22:14:36
|
|
Shader versions must match.
Per GLSL_ES_Specification_3.00.4 paragraph 3.3 Version Declaration:
"Shaders declaring version 3.00 of the shading language
cannot be linked with shaders declaring version 1.00."
BUG=angleproject:1361
TEST=GLSLTest_ES3.VersionMismatch
Change-Id: Icee672b798dcdb41a189e4a6459c4e643daf1fa6
Reviewed-on: https://chromium-review.googlesource.com/353182
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
dfde6abf
|
2016-06-09T07:07:18
|
|
Context: Remove mutable gl::State getter.
This will preserve layering - the API layer doesn't mutate the state
directly, it passes the API call through to the Context. Is also
removes the possiblity of any shenanigans of the Validation layer
changing the GL state.
Also, this CL refactors a few validation entry points to take
ValidationContext instead of Context. ValidationContext will be the
correct way to interact with the gl::Context in the Validation code.
Finally, additional refactorings make ContextState a proper class with
private data. This allows the ContextState itself to keep a mutable
pointer to the gl::State, so ValidationContext can modify it if
necessary (and it will be necessary for Framebuffer completeness
caching).
BUG=angleproject:1388
Change-Id: I86ab3561573caa9535c8d1b8aad4ab3d0e7cd470
Reviewed-on: https://chromium-review.googlesource.com/348954
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e2e406c3
|
2016-06-02T13:04:10
|
|
Add base::numerics for safe math and conversions.
This replaces are "IsUnsignedXXXSafe" family of methods.
Also add overflow checks to unpack block sizes.
BUG=angleproject:1397
Change-Id: Ib47be149b0486c70f795b0d0f8899441faac9340
Reviewed-on: https://chromium-review.googlesource.com/348062
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
53ea9cc6
|
2016-05-17T10:12:52
|
|
Replace rx::Renderer with rx::ContextImpl.
Previously Context had no Impl class, but had a special relationship
with the instanced Renderer class. Having a ContextImpl backing every
Context will allow new designs to enable things like multithreading
(where each ContextImpl stores a Context-specific device) or non-
virtual Contexts on Android or other platforms where it is more
efficient.
A large refactoring patch that touches every back-end.
BUG=angleproject:1363
Change-Id: Icb73a7d37447f08a664eeb499a310ba05d71a57e
Reviewed-on: https://chromium-review.googlesource.com/342052
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7aea7e05
|
2016-05-10T10:39:45
|
|
Add EGLImplFactory.
Also rename ImplFactory to GLImplFactory.
This will allow us to use the same factory design pattern for EGL
objects, and to use State helper classes to share data with Impls.
BUG=angleproject:1363
BUG=angleproject:1369
Change-Id: I07a8fe40838d5d4ca32b04910c306edeab4d25a7
Reviewed-on: https://chromium-review.googlesource.com/342051
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
48ef11b2
|
2016-04-27T15:21:52
|
|
Rename gl::Framebuffer::Data to gl::FramebufferState.
Moving this out of the Framebuffer class allows us to forward-
declare it.
BUG=angleproject:1363
Change-Id: I91971c37a92151df508cdf7f0eb8c3e93506d112
Reviewed-on: https://chromium-review.googlesource.com/340741
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9082b982
|
2016-04-27T15:21:51
|
|
Rename gl::Data to gl::ContextState.
Part of the new world order of renaming the Obj::Data classes to ObjState.
BUG=angleproject:1363
Change-Id: I15cf002b8b093d687f540b9e86f045874af24a7e
Reviewed-on: https://chromium-review.googlesource.com/340740
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d860552f
|
2016-04-13T10:19:12
|
|
Implement support for CHROMIUM_bind_uniform_location.
BUG=angleproject:1353
Change-Id: Ia219ff973de0de2f8e112c276b3ab6319f7d3884
Reviewed-on: https://chromium-review.googlesource.com/334252
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6596c465
|
2016-03-17T17:26:58
|
|
Program::getUniformInternal: return only one array element
Reland with a compilation fix for GPU Builder, with a fix for
UniformTest.BooleanArrayUniformStateQuery and better formatting.
When getUniformInternal detected a mismatch between the glGetUniform
type and the uniform type, it entered a code path where it wrongly wrote
the whole array instead of a single element, causing a buffer overflow.
Adds a regression test.
BUG=595836
Change-Id: Ie860b87ad56046483650f457457116cc22bf3c0f
Reviewed-on: https://chromium-review.googlesource.com/334448
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
5051eee5
|
2016-03-23T01:35:01
|
|
Revert "Program::getUniformInternal: return only one array element"
It breaks compilation on GPU Builder
This reverts commit 3ea54ba890f25fcce9213d8ab7c7f8a9fdf10cad.
Change-Id: Ie18f876b1db353d75cbd5a612f0a433cfc552ef2
Reviewed-on: https://chromium-review.googlesource.com/334405
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
3ea54ba8
|
2016-03-17T17:26:58
|
|
Program::getUniformInternal: return only one array element
When getUniformInternal detected a mismatch between the glGetUniform
type and the uniform type, it entered a code path where it wrongly wrote
the whole array instead of a single element, causing a buffer overflow.
Adds a regression test.
BUG=595836
Change-Id: Id7372faece276d28363a30bf3183497d97357c76
Reviewed-on: https://chromium-review.googlesource.com/333771
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
586bc55c
|
2016-03-04T11:46:03
|
|
Return the correct count from getAttachedShaders
The count should be the total amount of shader ids written. Before
this patch the code used to write the amount of attached shaders
to count regardless of the value of maxCount.
BUG=angleproject:1101
TEST=dEQP-GLES3.functional.state_query.shader.*
Change-Id: I5ae729748c7809f03fd496c927a76f60398d2b42
Reviewed-on: https://chromium-review.googlesource.com/329865
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
39046169
|
2016-02-08T15:05:17
|
|
CollectVariables: Don't include block name in field name.
The spec mandates that the instance name of a block determines how the
active uniform name for this field is reported. However, our handling
of this was a bit bugged. We would include the proper prefix on the
compiler-side, but this mangled the hashing, and was also not strictly
needed. We now also expose the instance name, so we can determine the
proper prefix for variable linking on the GL-side of things. This also
is consistent with how we handle other spec issues, where the GL-side
handles the GL-API specific functionality.
This also allows us to fix name hashing of instanced uniform blocks,
which was previously broken because we would hash the full name of the
active uniform, instead of just the field.
BUG=angleproject:1306
Change-Id: I06ace6dbc3f75fdd8129677360dcc142aa89136e
Reviewed-on: https://chromium-review.googlesource.com/326681
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
70d0f499
|
2015-12-10T17:45:46
|
|
Implement GL_KHR_debug.
BUG=angleproject:520
Change-Id: I9ced3e7ab1515feddf2ec103c26b2610a45b1784
Reviewed-on: https://chromium-review.googlesource.com/319830
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
66988745
|
2015-12-22T19:39:19
|
|
Revert "Implement GL_KHR_debug."
This reverts commit 6c521b7a70a53b1c9f7762e53e34b5a8146b0f7b.
Change-Id: I6ff981198e31f34d3e405edea6277ee75516d6ee
Reviewed-on: https://chromium-review.googlesource.com/319820
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
6c521b7a
|
2015-12-10T17:45:46
|
|
Implement GL_KHR_debug.
BUG=angleproject:520
Change-Id: I78d14cc8c94f5cef58604220f0ca847473b25bf8
Reviewed-on: https://chromium-review.googlesource.com/317820
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
c5629759
|
2015-12-07T16:29:04
|
|
Implement full program binary support for ES3.
Refactor validation to be used in both the OES and ES3 entry points.
BUG=angleproject:600
BUG=angleproject:1101
Change-Id: I2008c4ea04ce07910f03ae0b997f8a77b66203d8
Reviewed-on: https://chromium-review.googlesource.com/316620
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
28afae5d
|
2015-11-09T15:07:57
|
|
Rename LinkedVarying to D3DVarying.
Also move this type to D3D-only world. It was only used in the D3D
renderer and has specific stuff like register/semantic indexes.
Refactoring patch to clean up further work with Varyings.
BUG=angleproject:1202
Change-Id: I4b1d6899e9eef356efc7d11e9cd6cf88b234aa76
Reviewed-on: https://chromium-review.googlesource.com/311240
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
c4c74422
|
2015-11-04T09:39:47
|
|
ES3: Don't validate precision qualifiers when linking UBOs.
According to the resolution of Khonos bug 10287, we shouldn't be
validating these precisions. Note that this is counter to the
current ESSL spec text, but there's an open action item to change
the spec language.
TEST=dEQP-GLES3.functional.shaders.linkage.uniform.block.differing_precision
BUG=angleproject:1088
Change-Id: Ib05dca792b89e57e90d3a5f9efdb3a202230f585
Reviewed-on: https://chromium-review.googlesource.com/310760
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
1a683460
|
2015-09-29T15:09:59
|
|
Implement TransformFeedbackGL.
Reland with supression for TransformFeedbackTest.MultiContext on Linux
AMD.
BUG=angleproject:889
Change-Id: I6f2a2e856dacf16308de222dd0936bedbb3b175c
Reviewed-on: https://chromium-review.googlesource.com/307871
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a9ca8e20
|
2015-10-22T14:34:20
|
|
Revert "Implement TransformFeedbackGL."
Failing on AMD Linux bots.
This reverts commit a9c5288192f90ebf03b0d26d86964b4fbce74bcb.
Change-Id: I2a2db8c3d96c4b927d7d784486c6df772ae63084
Reviewed-on: https://chromium-review.googlesource.com/308130
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a9c52881
|
2015-09-29T15:09:59
|
|
Implement TransformFeedbackGL.
BUG=angleproject:889
Change-Id: I347ac21cfd0a56654a75fb41ac24c6c67ede3a05
Reviewed-on: https://chromium-review.googlesource.com/302351
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7a3e8e24
|
2015-10-08T15:50:06
|
|
Don't include samplers in uniform vector count validation
Change-Id: Id2820643b70d3266c82eb10a5f05d3a5886e9323
Reviewed-on: https://chromium-review.googlesource.com/304871
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Austin Kinross <aukinros@microsoft.com>
|