summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-03-31YaGL: Report OpenGL ES 3.0 support in eglQueryStringsubmit/tizen/20140402.053430accepted/tizen/ivi/panda/20140402.181503accepted/tizen/ivi/20140410.160645accepted/tizen_ivi_pandaStanislav Vorobiov1-1/+5
Change-Id: Ibf432697aa363911d911790a14df4d23c6ca46f9 Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
2014-03-21YaGL: Fix separate depth/stencil attachmentssubmit/tizen/20140327.052722accepted/tizen/ivi/panda/20140327.194438Stanislav Vorobiov1-2/+20
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>
2014-03-21YaGL: Fix glClientWaitSync and glGetSyncivStanislav Vorobiov2-8/+24
Return proper error codes and statuses Change-Id: Ic75f7605c3eabe8aae8074188b9669ecb7c007c3 Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
2014-03-21YaGL: Fix buffer object unbindingStanislav Vorobiov1-3/+9
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>
2014-03-21YaGL: Fix pixel format bpp data typeStanislav Vorobiov1-2/+2
Should be int, not unsigned int Change-Id: I1a12d41addf1d5b965147078c819467dc2875109 Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
2014-03-21YaGL: Fix GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE queryStanislav Vorobiov1-4/+8
This query should fail when attachment is GL_DEPTH_STENCIL_ATTACHMENT Change-Id: I79efaf1a075d02a0e540ce586fcfbcf3ca1764a4 Signed-off-by: Stanislav Vorobiov <s.vorobiov@samsung.com>
2014-03-21YaGL: Fix ETC2 textures unpackingStanislav Vorobiov1-24/+24
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>
2014-03-21YaGL: Fix sized GL_DEPTH_COMPONENT texturesStanislav Vorobiov2-0/+28
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>
2014-03-06Merge branch 'glesv3' into tizenStanislav Vorobiov123-4185/+24236
Change-Id: Iccd757b9ff0096faf69619a9ff5e1344ae0cab7e
2014-03-06YaGL: Version bumpglesv3Stanislav Vorobiov1-1/+1
GLESv3 merge version bump Change-Id: Ice426f2047d3669b33d75ad0d17141bb0f0ffcc1
2014-03-06YaGL: Fixes for Mac OS XStanislav Vorobiov4-14/+42
* 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
2014-03-05YaGL: Don't call host's glGetIntegerv(GL_XXX_BITS)Stanislav Vorobiov6-240/+487
GL_XXX_BITS is deprecated in OpenGL 3.1+ core, so implement it ourselves Change-Id: I8c44feb22350c852d9f003985d41e0bb728d00f0
2014-03-05YaGL: Always strip #extension constuctsStanislav Vorobiov4-69/+36
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
2014-03-04YaGL: Fix for texture2D, texture2DProj, etc. bias parameterStanislav Vorobiov1-27/+41
bias parameter in texture2D, texture2DProj, etc. is only available in fragment shader Change-Id: Ica52e929d68e114237c970623197d81b32c12098
2014-03-04YaGL: Convert textures properlyStanislav Vorobiov9-81/+116
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
2014-03-04YaGL: Move GLSL #extension constructs to the headerStanislav Vorobiov2-30/+42
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
2014-03-03YaGL: Patch texture2D, texture2DProj, etc. properlyStanislav Vorobiov3-34/+253
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
2014-03-03YaGL: Make glGetUniformLocation conformant againStanislav Vorobiov1-11/+22
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
2014-03-03YaGL: Replace gl_MaxVaryingFloats when necessaryStanislav Vorobiov5-83/+219
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
2014-03-01YaGL: Using flex/bison-based GLSL ES patcherStanislav Vorobiov13-459/+1062
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
2014-02-20YaGL: Fix for weston incorrect glTexSubImage2D callStanislav Vorobiov1-1/+1
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
2014-02-20YaGL: Updated for surface scanout flagStanislav Vorobiov2-0/+2
Change-Id: Ia61a404a1104fb5a68194ddb6978cb9567778cc9
2014-02-20Merge branch 'tizen' into glesv3Stanislav Vorobiov2-10/+0
Change-Id: Ie75f90abff3a430c6a3647f3ba8d38c7ebe5dd16
2014-02-20YaGL: Allow zero draw/read fbo in glBlitFramebufferStanislav Vorobiov1-2/+16
Change-Id: I8230f24bf40ffb46556969b35d7f4a7354b1c012
2014-02-19YaGL: Disable minifying/magnifying blits in glBlitFramebufferStanislav Vorobiov1-0/+10
They cause crashes with some host OpenGL drivers, so disable them for now Change-Id: Ice85c38758556b6aded15de57bc86422d918f725
2014-02-19YaGL: Fix transform feedback checksStanislav Vorobiov6-12/+111
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
2014-02-19YaGL: Correct draw/read buffer set/getStanislav Vorobiov7-52/+67
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
2014-02-19YaGL: Support more glGetFramebufferAttachmentParameteriv queriesStanislav Vorobiov4-21/+110
And khronos CTS 3.0 framebuffer_srgb test now passes Change-Id: I7b8eeece78b1ca71693c9e5c85fe305f632d908c
2014-02-19YaGL: Proper GL_ALPHA/GL_LUMINANCE/GL_LUMINANCE_ALPHAStanislav Vorobiov12-110/+321
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
2014-02-15YaGL: Fix GL_ALPHA to GL_BGRA conversionsStanislav Vorobiov1-7/+7
Change-Id: Id3548ee62dc4f76eb45934cdfe189ea94320404d
2014-02-15YaGL: Support texture zeroStanislav Vorobiov11-89/+115
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
2014-02-15YaGL: Enable SRGB framebufferStanislav Vorobiov1-0/+7
GLESv3 has SRGB framebuffer turned on by default Change-Id: I2bb9f027059f5150120f7ae3315f36a7d056ce83
2014-02-14YaGL: Various format validation fixesStanislav Vorobiov18-304/+1051
Correct validation in glReadPixels, glCopyTexImage2D, glTexImage3D, glTexStorage3D, etc. Change-Id: Ifc7e1d99d3d5f72dc6e8d81ed717c92c8923d414
2014-02-06YaGL: Fixed drawing calls without vertex array pointerStanislav Vorobiov3-0/+41
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
2014-02-06YaGL: Expose GLESv2 extensions in GLESv3 contextsStanislav Vorobiov4-150/+86
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
2014-02-05YaGL: Better pixel format handling and validationStanislav Vorobiov21-957/+2090
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
2014-02-04YaGL: Minor fixesStanislav Vorobiov7-93/+44
* 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
2014-02-04YaGL: Fixes for khronos CTS 3.0 / uniform_buffer_objectStanislav Vorobiov10-74/+149
Change-Id: I81e7dbb3b5ca04cf0849a0af57f8bfd6fc3804d2
2014-02-04YaGL: Fixed vertex attribute 0 problemStanislav Vorobiov10-121/+614
Host OpenGL vertex attribute 0 is "magic", OpenGL ES vertex attribute 0 is usual, we now handle this properly Change-Id: Ic3e4a021f17c0e1cff18248c4a8f32fe2e260b38
2014-02-03YaGL: Fixed khronos CTS 3.0 host crashesStanislav Vorobiov2-1/+6
Change-Id: If46861bb32664c86d9f40018bd611fe12d2f5cdd
2014-02-03YaGL: Some more minor fixes for khronos CTS 3.0Stanislav Vorobiov3-18/+18
Change-Id: If8cbec23351b9f91d822ff11e4b138d3e5ef05e2
2014-02-03YaGL: Fixes for khronos CTS 3.0 / ES30 GLCoverageStanislav Vorobiov11-27/+192
Change-Id: Ia18a7846faac041e7b75e0b4877cd70528e8dfc5
2014-01-31YaGL: GLESv3 function stub file removedStanislav Vorobiov3-29/+44
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
2014-01-31YaGL: glDrawRangeElements implementedStanislav Vorobiov9-758/+878
Change-Id: I5e885bfc96992505863febd400e420ea9f7f309d
2014-01-31YaGL: glGetFragDataLocation implementedStanislav Vorobiov9-286/+384
Change-Id: Idd5428a0da0cc02cda08e584f78bb4786e8449b3
2014-01-31YaGL: glFramebufferTexture3D dummyStanislav Vorobiov1-5/+1
We can implement glFramebufferTexture3D, but it's not needed for GLESv3, so we just place a dummy for now Change-Id: I6e74a2d83056df8a71a8739403c910bf2dfd92fa
2014-01-31YaGL: Implemented glUniformMatrixAxBfvStanislav Vorobiov7-276/+750
Change-Id: I582da14c8bfba8721abd5c333b4724f0014a406b
2014-01-31YaGL: glClearBuffer and glInvalidateSubFramebuffer implementedStanislav Vorobiov7-525/+726
glInvalidateSubFramebuffer is currently a no-op Change-Id: Ic2fd7d5cf1872f69dca466016b2196b7e13c1cfe
2014-01-31YaGL: Integer vertex attributes and uniforms supportedStanislav Vorobiov16-732/+1767
Change-Id: I3f6d7ab114f627da0463eb6bc0898e7a6d6629fb
2014-01-30YaGL: 64-bit parameter queries and indexed queries implementedStanislav Vorobiov4-38/+238
Change-Id: I8b9f797b1de8190699e6411959d1e162284101c6