Age | Commit message (Collapse) | Author | Files | Lines |
|
Change-Id: Ibf432697aa363911d911790a14df4d23c6ca46f9
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
Separate depth/stencil attachments are almost never
supported on desktop OpenGL, so return GL_FRAMEBUFFER_UNSUPPORTED
in this case, standard allows it
Change-Id: Ia141c1990b072dd38bc96218dc9b99a1c59211bc
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
Return proper error codes and statuses
Change-Id: Ic75f7605c3eabe8aae8074188b9669ecb7c007c3
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
When unbinding buffer object we should detach it
from all attachment points, not just the first one
Change-Id: I61dc449a6d20cbda112137ea12d8b084d6dfdeb2
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
Should be int, not unsigned int
Change-Id: I1a12d41addf1d5b965147078c819467dc2875109
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
This query should fail when attachment is GL_DEPTH_STENCIL_ATTACHMENT
Change-Id: I79efaf1a075d02a0e540ce586fcfbcf3ca1764a4
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
ETC2 textures were unpacking incorrectly if
width or height were not multiple of block size. This
is now fixed
Change-Id: I68f249b61e285af8142115c4f7e907f66483ec78
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
Sized GL_DEPTH_COMPONENT textures are treated as luminance
textures in desktop OpenGL, but according to OpenGL ES 3.0
they should be red, thus, we need to swizzle them.
Also, when texture data is respecified we should unswizzle
the texture when needed
Change-Id: Ia1d5d3de860c04848a09bf84ac4a98f94466ea97
Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
|
|
Change-Id: Iccd757b9ff0096faf69619a9ff5e1344ae0cab7e
|
|
GLESv3 merge version bump
Change-Id: Ice426f2047d3669b33d75ad0d17141bb0f0ffcc1
|
|
* glClearBufferfv must clamp floats by itself or else
host OpenGL driver will crash
* Don't call glGetIntegerv(GL_MAX_VARYING_COMPONENTS)
* Features that are in core profile are not exposed in extension list,
take this into account while creating our own extension list
Change-Id: Ia9d1744b3a4880a2f20ea104e94811df34f2e241
|
|
GL_XXX_BITS is deprecated in OpenGL 3.1+ core, so
implement it ourselves
Change-Id: I8c44feb22350c852d9f003985d41e0bb728d00f0
|
|
Just moving these to the header isn't right,
they can be enclosed in preprocessor. We can
just strip them instead, it's pretty safe thing to do
Change-Id: Idd61f3dab899c47e0cf1236cb4e971865ebfc3cc
|
|
bias parameter in texture2D, texture2DProj, etc. is
only available in fragment shader
Change-Id: Ica52e929d68e114237c970623197d81b32c12098
|
|
1. GL_ALPHA to GL_RGBA conversion is wrong after all, previous
conversion was correct
2. GLESv1_CM should never convert textures since it always uses
legacy host OpenGL context
Change-Id: I1b8062c85f377b32bc2f75a58ff969e83acd65d0
|
|
If original GLSL source has #extension constructs then
we need to move them to the header, so that our own
declarations go after it
Change-Id: Id8f8f85b520fe71ad86dd618ce30c6bfb19478b5
|
|
Replacing texture2D, texture2DProj, etc. with texture,
textureProj, etc. is not enough because there
might be things like this in the shader:
uniform sampler2D texture;
texture2D(texture, ...);
thus, after replacement this code will turn
into:
uniform sampler2D texture;
texture(texture, ...);
it'll lead to implementation-defined behavior in
most cases it'll just output blackness. Now we
workaround such situations by defining thunk
texture2D, texture2DProj, etc. at the top of the
shader, according to GLSL standard it's allowed
and it'll shadow builtin functions. Inside we
make a call to texture, textureProj, etc. Since
our function is just a thunk any decent GLSL
compiler will optimize it out, so no performance
penalty is introduced
Change-Id: I80449a6f9afdc17d1a6ab71e77501c84d41f3a25
|
|
We used to set 'gen_locations' to 1 by default, but that's bad,
since app may do something like this:
if (glGetUniformLocation(p, "my_uniform") == -1) {
// do logic when 'my_uniform' is not in the shader
} else {
// do logic when 'my_uniform' is in the shader
}
i.e. 'gen_locations == 1' will break this logic, thus, we
now set gen_locations to 0 by default
Change-Id: I75bc2935f763979dda82fbf91e5e0af60a06f83d
|
|
gl_MaxVaryingFloats was replaced with gl_MaxVaryingComponents
in OpenGL 3.1 and gl_MaxVaryingComponents in turn was
removed in OpenGL 3.2, thus, we just use a constant when
host OpenGL version is >= 3.1.
Also, patch for textureXXProj, textuureXXLod and textureXXProjLod
was added
Change-Id: Ia952cb2644fe7fd9ebbeee6158a72830f98468e6
|
|
Our old method of GLSL ES patching via simple tokenization
isn't feasible for GLESv3 support, there're many GLSL ES
and desktop GLSL variations and we must handle all of them.
Also, we would like to have full shader validation in
the future, thus, we can just extend this parser instead of
introducing a new one
Change-Id: Ib505a0b22c6dfa810b99a7353b15e8800ff5b55f
|
|
weston can call glTexSubImage2D with
format = GL_RGB and type = GL_UNSIGNED_SHORT_5_6_5
while texture's internal format is GL_BGRA. Such
combination is not allowed in OpenGL ES, but we allow
it
Change-Id: Ifce29ec49108d26801ea3c56307a13db71b7f42f
|
|
Change-Id: Ia61a404a1104fb5a68194ddb6978cb9567778cc9
|
|
Change-Id: Ie75f90abff3a430c6a3647f3ba8d38c7ebe5dd16
|
|
Change-Id: I8230f24bf40ffb46556969b35d7f4a7354b1c012
|
|
They cause crashes with some host OpenGL drivers, so
disable them for now
Change-Id: Ice85c38758556b6aded15de57bc86422d918f725
|
|
Some more transform feedback checks, we
now pass khronos CTS 3.0 transform_feedback
and transform_feedback2 tests (except for
overflow tests, these will be fixed later)
Change-Id: Ia3af2deac6e0cb75d33b3a35382e9119a5841b65
|
|
Draw/read buffers must reside inside framebuffer object as
well as inside context. When no framebuffer is bound context's
values are used, when framebuffer is bound values from framebuffer
are used
Change-Id: I14af385e9c1d70870dfd6455305a608f13e9f2b6
|
|
And khronos CTS 3.0 framebuffer_srgb test now passes
Change-Id: I7b8eeece78b1ca71693c9e5c85fe305f632d908c
|
|
These texture formats are not supported in OpenGL 3.1+ core, so we
implemented them by converting to RGBA. However, just converting
pixel data to RGBA is not enough, we have to make sure that
glCopyTexImage2D works and that texture is sampled correctly from
shaders. To make this work we use swizzles and since swizzles are not
available in OpenGL 2.1 we revert back to using these formats as they
are and perform no converions when in OpenGL 2.1 mode
Change-Id: I6fc4a58817253767d088975b94856a16c0c4adc4
|
|
Change-Id: Id3548ee62dc4f76eb45934cdfe189ea94320404d
|
|
Now that we have much better validations
we also need to have an object for texture zero, so
that operations on texture zero wouldn't fail
Change-Id: I4279a6b54abd866a3d0994def7aeb2fcee3bd791
|
|
GLESv3 has SRGB framebuffer turned on by default
Change-Id: I2bb9f027059f5150120f7ae3315f36a7d056ce83
|
|
Correct validation in glReadPixels, glCopyTexImage2D,
glTexImage3D, glTexStorage3D, etc.
Change-Id: Ifc7e1d99d3d5f72dc6e8d81ed717c92c8923d414
|
|
The right thing to do here is crash, that's what host
OpenGL drivers do, but we don't want to crash on host, we
want to crash the app on target
Change-Id: I4d92076352775f17bbc3ab8db9b70422beb88a43
|
|
This sounds illogical, but adreno does this. Also, khronos CTS 3.0
attempts to test GLESv2 extensions with GLESv3 context, so
it's probably ok
Change-Id: Ie5f9940ce9fe7b57e6c5ec411d76942245607071
|
|
We introduce yagl_pixel_format that is now used to describe
pixel formats, it's also capable of doing target <-> host conversions.
This is much better than old approach, it allows us to have all
format descriptions in one place, validation is also easier and
adding new format is a matter of adding new yagl_pixel_format
Change-Id: I81cedb55ef2f871420aaf80c7b9d47d9fbf9aca2
|
|
* yagl_gles_get_stride made static, it's now only used inside yagl_gles_utils.c
* removed assert(count > 0) from yagl_gles2_context_pre_draw, this can happen
on integer overflow and it's normal
Change-Id: I246a501288a7e8f115d96e76b8eefc7c6b3acfc4
|
|
Change-Id: I81e7dbb3b5ca04cf0849a0af57f8bfd6fc3804d2
|
|
Host OpenGL vertex attribute 0 is "magic", OpenGL ES
vertex attribute 0 is usual, we now handle this properly
Change-Id: Ic3e4a021f17c0e1cff18248c4a8f32fe2e260b38
|
|
Change-Id: If46861bb32664c86d9f40018bd611fe12d2f5cdd
|
|
Change-Id: If8cbec23351b9f91d822ff11e4b138d3e5ef05e2
|
|
Change-Id: Ia18a7846faac041e7b75e0b4877cd70528e8dfc5
|
|
All GLESv3 functions have been implemented, so no
need for dummy.c anymore. Remaining functions were
program binary related, we don't support them for now,
so they just generate GL_INVALID_OPERATION
Change-Id: I6f020406c422eabb35eaefd47ea4463b6ce183c7
|
|
Change-Id: I5e885bfc96992505863febd400e420ea9f7f309d
|
|
Change-Id: Idd5428a0da0cc02cda08e584f78bb4786e8449b3
|
|
We can implement glFramebufferTexture3D, but it's not
needed for GLESv3, so we just place a dummy for now
Change-Id: I6e74a2d83056df8a71a8739403c910bf2dfd92fa
|
|
Change-Id: I582da14c8bfba8721abd5c333b4724f0014a406b
|
|
glInvalidateSubFramebuffer is currently a no-op
Change-Id: Ic2fd7d5cf1872f69dca466016b2196b7e13c1cfe
|
|
Change-Id: I3f6d7ab114f627da0463eb6bc0898e7a6d6629fb
|
|
Change-Id: I8b9f797b1de8190699e6411959d1e162284101c6
|