History log of /frameworks/native/opengl/libs/GLES2/gl2.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5f1af0457a8a6c2922a0d5e55cb6c248ec539f7f 10-Mar-2017 Mathias Agopian <mathias@google.com> get rid of the dependency on utils/CallStack.h

this makes it more explicit that we depend on
libbacktrace (and therefore libbase, libunwind).

this also completely get rid of our direct
dependency on libutils

Test: compiled
Bug: treble
Change-Id: Ib7b9d6be4f08cef401afe0d3d347e0250924a94f
a5e161b1207ef447a51e99856097d69d4a6111e1 29-Sep-2016 Mark Salyzyn <salyzyn@google.com> Replace cutils/log.h and rationalize log/log.h and android/log.h

- cutils/log.h treat as deprecated and lead by example
- android/log.h to be used instead of log/log.h if required
- add system includes that are assumed as side effects of log.h
- modules that use SLOG should use SLOG for all logging (installd)
- define LOG_TAG first
- remove logging infrastructure if not used

Test: build
Bug: 31289077
Change-Id: Iea147a0104c7ab7f12451304131d6500f42141e7
3e8fce48a6c768036c11290b93116665e8e8bdda 23-Mar-2016 Stephen Hines <srhines@google.com> Switch GLES wrappers over to using Clang (and fix inline assembly).

Bug: http://b/18003438

The GLES wrapper implementations make direct calls to their underlying
function without specifying that they are retaining the original
argument register(s). This change makes the retention of these argument
registers more explicit, and then removes the LOCAL_CLANG override,
since Clang no longer optimizes the code into a bad state.

We also switch to "naked" functions, so that we control all stack layout
information. This prevents us from accidentally still corrupting
arguments on x86 (and for other functions with many parameters).

Change-Id: I37f2ef4a697373388950b41f0a292393c9fcbac7
edfe72ed6738d3798c5384b7aec8ab73af549d79 22-May-2015 Alistair Strachan <alistair.strachan@imgtec.com> Fix EGL shim extension injection for GL ES 3 drivers.

The Android EGL shim injects GL_EXT_debug_marker into the ES driver
EXTENSIONS string for the OpenGL ES 1.x and 2.0/3.0/3.1 drivers if
the extension is not already provided. This feature is used by

In Open GL ES 3.0 it became possible to query an indexed version of
the EXTENSIONS string via GetStringi(). NUM_EXTENSIONS Gets were
also added to the specification (taken from Open GL).

If the shim does not have to inject the extension, then there is no
problem, as glGetString() and glGetStringi() / NUM_EXTENSIONS will
be consistent. However, if the Android EGL shim injects the
extension, NUM_EXTENSIONS and GetStringi() will report one less
extension than is really available.

Consistency between these methods is tested by the dEQP framework
with the dEQP-GLES3.functional.state_query.string.extensions test.
If the driver does not provide GL_EXT_debug_marker, this test

This change wraps all of the affected entry points so that the
wrapped driver extensions are never visible directly to dEQP,
eliminating the inconsistency.
ecacc3f164f2bf2c8c4ff5a20496511249d2cd4b 03-Feb-2015 Duane Sand <duane.sand@imgtec.com> [MIPS] Fix mips32r1 build

Fix regression from 6701fbe5f0d799c5245b0cdf3a69ecdcbfd9fb08 .
The rdhwr instruction is unsupported by mips32r1 cpus, but is
supported via kernel emulation on those cpus.

Change-Id: Ieb3343fff0f0da54003044f451c90e1c761208eb
5f5f65183c9a77bd4b5dc63b5767af69ac938b39 26-Dec-2014 Nikola Veljkovic <Nikola.Veljkovic@imgtec.com> Use register numbers instead of register names

Avoid ambiguity by using register numbers. Register names are
interpreted depending on the ABI. Fixes the issue with mips64 gcc,
where registers t0-t4 are translated into $8-$11 (o32 ABI) instead
of $12-$15 (o64 ABI).

Also, use t9 ($25) for storing function address
(in getProcAddress.cpp).

Change-Id: I12ef5cd98bf14dab3c01f2756889cc02856c1cd8
6701fbe5f0d799c5245b0cdf3a69ecdcbfd9fb08 26-Nov-2014 Duane Sand <duane.sand@imgtec.com> [MIPS] Further opengl support for mips64 and mipsr6

Combines 4 patches by Dragoslav and Douglas:

Use t9 to hold the address of the called function.
Add support for gl binding.
Fix inline assembly code to be R6 compatible.
Fix some more inline assembly code to be R6 compatible.

Change-Id: I0b899813790b2ba4ca538bb21692014cc1933f66
701048cbe8d35fcd7e00c875e128fae022b27607 08-Aug-2014 Michal Wajdeczko <michal.wajdeczko@intel.com> EGL: make x86/64 wrappers resistant to -fno-omit-frame-pointer flag

Wrapper functions were broken on builds that forced -fno-omit-frame-pointer flag.

Change-Id: I5a80f9587fb3db821b4156af56acda59a0b4579b
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
83142a12fbc1249c53551765e3d99b4471b58f19 06-Aug-2014 Jesse Hall <jessehall@google.com> am e2e17e5b: Merge "GlES2: Add NULL check"

* commit 'e2e17e5b238ccd214c72ec1a1864cf391425f09f':
GlES2: Add NULL check
0627071cc983aadb8d7447fe222b05d15c7c25be 05-Nov-2013 Anshuman Dani <adani@codeaurora.org> GlES2: Add NULL check

Check for NULL before calling thread specific glGetString.

CRs-fixed: 569609

Change-Id: Ifee8257152ba7ca7a05df5d7b113171b71d16c82
0d7271527fa48c26b657d689faffbc94c93e5b3c 07-Jun-2014 Jesse Hall <jessehall@google.com> am 17cbadf0: am 6fa169fa: Merge "Add aarch64 EGL/GLES trampolines"

* commit '17cbadf0f598b0d02179262ad5b6b270850ccb94':
Add aarch64 EGL/GLES trampolines
30a41aa1ccc47de41642308a243fa5df2bfeec06 31-May-2014 Jesse Hall <jessehall@google.com> Add aarch64 EGL/GLES trampolines

Change-Id: Ia90e18d26ff3bdb7e643aff8d77cbaddd2ac2a03
c2774f9b7341980c626c52a70e4fdf64d1b426e8 28-May-2014 Jesse Hall <jessehall@google.com> am 92374318: am 618c78c0: am dc273621: Merge "EGL: add x86/64 assembly code for EGL/GLES wrappers"

* commit '92374318b82945f3d03461f3d0c659adb8409fc5':
EGL: add x86/64 assembly code for EGL/GLES wrappers
c80aafa61d619087a879dc1095ddf1ca2a5e69fb 26-May-2014 mwajdecz <michal.wajdeczko@intel.com> EGL: add x86/64 assembly code for EGL/GLES wrappers

There was no explicit support for x86/64 architecture in EGL/GLES wrappers.
This resulted either in failures or sub-optimal implementation of the wrapper functions.

Change-Id: I20d99d7372fbf642ee4b94a05c8cb971cba29988
Signed-off-by: Wajdeczko, Michal <michal.wajdeczko@intel.com>
fca1b54031a1ba2a3c82bbbbe71716cd7e6a61d7 18-May-2014 Jesse Hall <jessehall@google.com> opengl: Regenerate code with ES 3.1 and new extensions

Enable ES 3.1 generation in glgen.py, and regenerate everything to add
support for that as well as these new extensions in the registry:
- EXT_copy_image
- EXT_draw_buffers_indexed
- EXT_geometry_shader
- EXT_gpu_shader5
- EXT_primitive_bounding_box
- EXT_shader_implicit_conversions
- EXT_shader_io_blocks
- EXT_tessellation_shader
- EXT_texture_border_clamp
- EXT_texture_buffer
- EXT_texture_cube_map_array
- EXT_texture_view

Bug: 15028495
Change-Id: I3f45a7ef5367c70e54ce6b36a8c030ae11033434
fe3b15a5b0e580a5775b0e0dbf222132fdcfa856 20-May-2014 Jesse Hall <jessehall@google.com> Revert "opengl: Regenerate code with ES 3.1 and new extensions"

This reverts commit 6cb7d3dc9f1ce37547646979e0625992264ea4d0.

Change-Id: I2eb7fd721dda9c14a0bfcef1b1c9d9843bbec94b
6cb7d3dc9f1ce37547646979e0625992264ea4d0 18-May-2014 Jesse Hall <jessehall@google.com> opengl: Regenerate code with ES 3.1 and new extensions

Enable ES 3.1 generation in glgen.py, and regenerate everything to add
support for that as well as these new extensions in the registry:
- EXT_copy_image
- EXT_draw_buffers_indexed
- EXT_geometry_shader
- EXT_gpu_shader5
- EXT_primitive_bounding_box
- EXT_shader_implicit_conversions
- EXT_shader_io_blocks
- EXT_tessellation_shader
- EXT_texture_border_clamp
- EXT_texture_buffer
- EXT_texture_cube_map_array
- EXT_texture_view

Bug: 15028495
Change-Id: I35acb473cba2433b9aeb95d1b8bfbdcfadf22532
bbbddb83bbd3ca2032294b55c91b1023acc927ac 14-May-2014 Jesse Hall <jessehall@google.com> Disable warnings when generating GL wrappers

Bug: 15028495
Change-Id: Ic0c974e868d05632a06748c90cedbdd409ce2aa8
4c0596f4cc7d3a0bbbe5862cb38585a58ef4d0a3 14-May-2014 Jesse Hall <jessehall@google.com> Rationalize GLES2/3 .in files.

We weren't using gl2_api.in, since gl3_api.in was a superset. And
gl3ext_api.in was empty, and Khronos has decided to keep it that way
(any GLES2/3/... extensions will be in gl2ext.h).

Since libGLES2.so will have all future backwards-compatible GLES APIs,
it makes sense to just use gl2_api.in and gl2ext_api.in to build its
contents. This changes renames gl3_api.in to gl2_api.in and updates
uses of it, and removes gl3ext_api.in and references.

Bug: 15028495
Change-Id: I0745eda27ec91ee625f03e957e4fdb22035dd781
e0ea89ceef3b0fc5f3efc5d709a8156f0628c6c8 15-Jun-2013 Mathias Agopian <mathias@google.com> improve GLES jumptables

in the common case this saves one instructions per jump
(which will help with the i-cache).

this change also gets rid of the "use slow tls" option,
which was useless. So at least now architectures that don't have
assembly bindings will perform much better.

Change-Id: I31be6c06ad2136b50ef3a1ac14682d7812ad40d2
39c24a20bbc697630d2b92c251b70c04d6f9d00c 05-Apr-2013 Mathias Agopian <mathias@google.com> fix local include paths

Change-Id: Icb921fa796ec08612dbb2feb7e7161bcb0cf4a99
441f69463ec595ad42fdaad1bbfbb0f7a932437c 31-Mar-2013 Jesse Hall <jessehall@google.com> Fix MIPS assembly variable names to not conflict with GL API parameter names

Change-Id: I8e93fb55018de53a596cb176d48dbfdf1fd396e4
ea116f1acb911963751d72515714803aeae95d59 29-Mar-2013 Keun-young Park <keunyoung@google.com> am 111d920b: am d3b2c029: Merge "[MIPS] Add MIPS architecture support to opengl framework"

* commit '111d920bb588669006bdd8699e786d6305f14c36':
[MIPS] Add MIPS architecture support to opengl framework
46b4253b760916ea8f64c8c32a51ae85ec3b050e 27-Mar-2013 Duane Sand <duane.sand@imgtec.com> [MIPS] Add MIPS architecture support to opengl framework

Change-Id: Id7704d35bed14d96a85dc1f29db0566cd03872b5
f5c7cb316cc8c8e2d6ae93a659ac771420cbfa2b 24-Feb-2013 Jesse Hall <jessehall@google.com> Merge changes Ic344ef63,If9bb02be,Ic8f94634

* changes:
Symlink /system/lib/libGLESv3.so -> libGLESv2.so
Add ES3 support to libGLESv2 and tracing tools
Import OpenGL ES 3.0 headers from Khronos SVN
288870ebc3da8121b7a237a53280bd8b931b7a2f 14-Feb-2013 Elliott Hughes <enh@google.com> Simplify OpenGL TLS access on ARM.

bionic now assumes the TLS register is available, so OpenGL can too.

Change-Id: If2b56a4c08de9f887759b78f70022026a181dc47
4774338bd0ad1ebe42c311fd0c72f13786b5c800 08-Feb-2013 Jesse Hall <jessehall@google.com> Add ES3 support to libGLESv2 and tracing tools

Since ES3 is backwards compatible with ES2, a new wrapper isn't
necessary, and the Khronos implementation guidelines recommend
supporting both versions with the same library.

Change-Id: If9bb02be60ce01cc5fe25d1f40c4e7f37244ebf6
16928bfeca8858a0acae6942fc68c14a040b92ff 19-Oct-2012 Romain Guy <romainguy@google.com> Add runtime debugging capabilities to OpenGL

The shell property debug.egl.trace can now be set to:

disables tracing
logs all GL calls
checks glGetError after every GL call, logs a stack trace on error
logs each GL call to systrace

Change-Id: I34a2a2d4e19c373fd9eaa1b0cd93e67c87378996
8d5d2019805df1f27cbec07eeca47dd5ab453dad 08-Oct-2012 Chet Haase <chet@google.com> Revert "Add GL Error logs (temporary)"

This reverts commit 2da2c15068327a4fdad411f638905abcb2209d8a.
2da2c15068327a4fdad411f638905abcb2209d8a 05-Oct-2012 Chet Haase <chet@google.com> Add GL Error logs (temporary)

Adding logs to tell which specific methods throw OpenGL errors.

Change-Id: I1d73c7566ed1ea6610392020411762c6255a0ede
e8b0fac720b249639fa1cf2f3a06f7d88d207b76 28-Sep-2012 Chet Haase <chet@google.com> Re-enable FAST_TLS in gl2 code

Temporarily changed USE_FAST_TLS_KEY ifdef during debugging. Changing it
back now.

Change-Id: I7c2fcf7265b3d545e31ff7683bd7614100fad3e5
f12fe43e8c280923fde743f22cea238e48c929f1 28-Sep-2012 Romain Guy <romainguy@google.com> New compile-time flags to make debugging easier for us poor souls
Bug #7195815

Change-Id: I23e7ac991891b9586cb8ed20b1305c8b1b3e2b43
7e5099a9ece6a3ed7edb1b5bf60a43422428326c 02-Aug-2012 Jesse Hall <jessehall@google.com> Add compile-time option to systrace GL-ES calls

Change-Id: Ibec103bbf159626ad9745d0e071192ad424bc0e9
7c0441ac271f4e00a2d63eb3048c037ebffa90b9 15-Feb-2012 Mathias Agopian <mathias@google.com> Don't wrap EGLImageKHR and EGLSyncKHR anymore

this simplify our EGL wrapper implementation a lot.
This wrapping is no longer needed now that we can only
support a single underlaying EGL implementation.

Change-Id: I8213df7ac69daac447f1fe6e37044b78aac4e9a9
48d438d05f14c2f4bd83ae89f520368cd49122df 29-Jan-2012 Mathias Agopian <mathias@google.com> add support for GL_EXT_debug_marker

This extension is always added to the GL_EXTENSIONS
extension string for the current GL context, regardless
of if it's supported by the h/w driver.

The extension itself will be handled by GLES_trace (eventually),
when GLES_trace is not enabled, it'll result to a no-op.

If the h/w implementation has this extension, we'll call that version
instead of our dummy version.

Change-Id: Ie5dd3387c4d45cd5ed5f03b73bda6045620a96bc
9d4536835248525f32f1504a3d28d5bbfa0a2910 20-Dec-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/156016

Bug: 5449033
Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
30faafb7d3544ab013958fbc920c1bc4d3f05472 24-Sep-2010 Mathias Agopian <mathias@google.com> am 4eb1ad5e: am 524a6d8e: Merge "better fix for [3028370] GL get error should return a valid error if no context is bound." into gingerbread

Merge commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e'

* commit '4eb1ad5e98c7b36f7ac4ec8c3270f9763afd107e':
better fix for [3028370] GL get error should return a valid error if no context is bound.
6f0871222f04dfeb479d37fe9753d491e3150e42 24-Sep-2010 Mathias Agopian <mathias@google.com> better fix for [3028370] GL get error should return a valid error if no context is bound.

it turns out that we cannot return INVALID_OPERATION from glGetError() because the
GL spec says that it must be called in a loop until it returns GL_NO_ERROR.

now, we always return 0 from GL functions called from a thread with no
context bound. This means that glGetError() will return NO_ERROR in this case,
which is better than returning a random value (which could trap the app in a loop).

if this happens in the main thread of a process, we LOG an error message once.

Change-Id: Id59620e675a890286ef62a257c02b06e0fdcaf69
761eaed2ffc5022606de252997630dbcd9e805d9 10-Aug-2010 Romain Guy <romainguy@google.com> Fix tons of bugs and add new text rendering support.

Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
8fb47ec10e7f4dad630fcac4ed47d243d4f33375 30-Mar-2010 Mathias Agopian <mathias@google.com> Fix Android's glEGLImageTargetRenderbufferOES() wrapper

glEGLImageTargetRenderbufferOES() pass the wrapped EGLImage
to the implementation, rather than the unwrapped one.

Change-Id: I149f9ed73e6ab9089110600e1db4311ba7a8c83a
673d2dbaae647abc58b08de873fd364f0b2fa3f5 14-Oct-2009 Mathias Agopian <mathias@google.com> Use the TLS register if HAVE_ARM_TLS_REGISTER is defined

this will be needed for SMP, but would improve dispatching GL calls a bit
on armv6 and above.
618fa10949c42eb83fa5fe105fe542bcff833dda 14-Oct-2009 Mathias Agopian <mathias@google.com> fix [2187212] add support for GLESv2 dispatch based on TLS

Instead of using a different function pointer table for ES 1.x and ES 2.x,
we use a single one that is the union (sort|uniq) of both tables. Two
instances of this table are initialized with pointers to GL ES 1.x and GL ES 2.x
When a context is created, we store its version number and when it is bound to a
thread we set the approruiate table based on the stored version.

This introduce no penalty while dispatching gl calls to the right API version.

[Pending Dr No approval for MR1]
b1a39d67be99fe6c4545b25e10ac82a5dd1df634 28-May-2009 Mathias Agopian <mathias@google.com> Added most of the support needed for GLES 2.x