User-mode driver binaries for Qualcomm’s Adreno 3xx GPU on Nexus 4, 5 & 7 devices running Google Android 4.4.2 KitKat
Updated 17 Apr 14
This release contains a developer preview of the user-mode driver binaries for Qualcomm’s Adreno 3xx GPU on Nexus 4, Nexus 5, and Nexus 7 devices running Google Android 4.4.2 KitKat. It has been tested with the KOT49H factory image. This release is intended only for developers, and does not meet our customer release quality. Refer to the included release notes for a list of fixes and enhancements.
I recommend to backup system partition before flashing.
After successful flashing OpenGL ES 3.0 should have raised from V@53.0 to V@66 and the number of extensions from 43 to 46 (on Nexus 4 at least).
I will check what else it fixes besides in the release notes below.
Fix an intermittent crash that may happen when running dEQP-GLES2.functional.light_amount.1dir.
Fix rendering corruption in GFXBench Manhattan caused by out-of-sync VBO cache.
Fix small memory leak when waiting for thread termination.
Fix dEQP clipping test failures for point and line primitive types.
Add support for GL_HALF_FLOAT_OES rendering.
Improve RenderScript performance.
Prevent GPU page fault in certain SurfaceFlinger error conditions.
Allow 0 as an argument to the GLSL #line directive, as per spec.
Remove erroneous report of paletted texture formats from the GL_COMPRESSED_TEXTURE_FORMATS query when GL_OES_compressed_paletted_texture is not reported in the extension string list.
Fix a possible segmentation fault in glTexImage2D().
Fix mishandling of trailing whitespace after a GLSL #if directive.
Fix intermittent crashes from GLSL symbol table corruption.
Fix a scenario where performing a glQueryCounter() followed by glGet(GL_TIMESTAMP_EXT) and taking the difference between the two could result in a negative value, wrongly indicating a negative latency between the CPU and GPU.
Fix possible page fault when a shared EGL surface has a depth buffer.
Fix intermittent crash in Chrome browser that sometimes occurred while rotating and locking the device at the same time.
Add thread-safety for EGL images.
Fix Adreno Profiler shader override issues with shaders that use uniforms.
Reset flags for previously bound Transform Feedback buffer after draw call in case it is bound to more than one attribute.
Fix rendering corruption in Basemark Hover.
Fix a crash in the Tumblr app.
Fix intermittent crash in glBufferData() during VBO validation.
Fix rotation-related UI rendering issues in Gunman Clive.
Fix rendering corruption issue with H.265 video.
Fix YUV video rendering issues in Group Play app.
Fix Adreno Profiler conflict with occlusion query.
Fix screen tearing when using virtual displays via the developer options with HW overlays disabled.
Fix small memory leak on thread destruction.
Fix a crash-on-launch with Redline Rush.
Fix performance issues in Arma Tactics.
Allow non-constant indices on attribute vectors, as per GLSL spec.
Fix rendering corruption in GLBenchmark.
Fix eglClientWaitSyncKHR() to correctly use a 0 ms timeout when requested instead of a 1 ms timeout.
Improve glReadPixel() performance in landscape mode.
Fix page fault in dEQP glBlitFrameBuffer() test.
Fix crash-on-launch in Royal Revolt app.
Fix incorrect behavior of glClear() on MRTs.
Fix a crash when EOF immediately follows an #endif directive in GLSL.
Improve performance of aliased VBO updates.
Fix crash in GLES conformance test.
Fix rendering corruption in Unity’s “The Chase” demo.
Fix rendering corruption that occurs when the device is rotated and a visible surface is resized.
Fix for dEQP GLES3 polygon offset tests.
Enforce mutual exclusion of RGB and L for RGB buffers and luminance buffers.
Fix race condition in EGL triggered by certain Android mediaserver scenarios.
Create separate scope for if/if else/else statements in GLSL as per spec.
Fix incorrect conversion of negative float values to FALSE in glGetBoolean().
Reject invalid GLSL version numbers in #version directive.
Allow all integer constant expressions in GLSL #line directives.
Add driver support for EGL_KHR_create_context extension.
Fix rendering corruption with TGCOM24 app.
Fix the total count of uniform samplers when uniform samplers are used both in the vertex and fragment shader.
Fix erroneous compile errors for certain YUV GLSL shaders.
Fix a crash when indexing a sampler by a non-constant index in GLSL.
Fix issues with dEQP transform feedback tests.
Fix miplevel corruptions in conformance tests.
The following fixes were included in the March 2014 Adreno driver release for Nexus 4, Nexus 5, and Nexus 7 and are also included in this release:
Increase the maximum available number of uniform vectors from 251 to 256 for vertex shaders and from 221 to 224 for fragment shaders.
Fix possible lost nodes in GLSL preprocessor symbol table. Under certain conditions, using the #undef directive in a shader could cause other, unrelated symbols to be lost. This fixes a shader issue in The Amazing Spider-Man game from Gameloft.
Fix RBOs with no allocated storage to correctly report a zero sample count.
Fix potential crash when multiple GL contexts are rendering to the same EGL surface and the EGL surface is unmapped. This fixes a possible crash while running Google’s Compatibility Test Suite.
Fix crash in Epic’s Soul demo when adding grapher metrics in Adreno Profiler.
Add processor selection in Renderscript, to measure GPU and CPU execution times and choose the fastest processor for a given kernel to execute.
If a texture is changed in a shared context and the texture is bound or rebound in the current context, then update texture samplers to ensure the changes are visible in the current context, in accordance with Rule 4, section D.3.3 of the OpenGL® ES 3.0 spec.
Fast clear is not compatible with stencil mask, so disable it when stencil mask is enabled.
Allow glBlitFramebuffer() to blit within the default framebuffer if color buffers are for different surfaces.
Do not kill the application in case of GPU reset.
Fix problems with some uniforms in override programs not being set correctly by Adreno Profiler.
Fix handling of GL_RED, GL_RED_INTEGER, GL_RG, and GL_RG_INTEGER texture formats in Adreno Profiler.
Add GL3 constant names to token descriptions in Adreno Profiler.
Fix an Adreno Profiler crash exposed by a change to the way text rendering is implemented in the Android UI framework.
Change Adreno Profiler metric timestamps from milliseconds to microseconds to provide better data for per-rendercall metrics.
Fix a crash when Adreno Profiler is collecting scrubber metrics from a GLES3 app with occlusion querying.
Fix intermittent Adreno Profiler connection timeouts.
Fix intermittent Adreno Profiler disconnects while capturing.
Fix beginning-of-race crash in Asphalt 8.
The following fixes were included in the February 2014 Adreno driver release for Nexus 5 and Nexus 7 and are also included in this release for Nexus 4:
Add Adreno Profiler support for the following pixel data formats: GL_RED,GL_RED_INTEGER, GL_RG, GL_RG_INTEGER, GL_RGB_INTEGER, GL_RGBA_INTEGER.
Add Adreno Profiler support for reporting bin configuration.
Add Adreno Profiler support for uniform buffers.
Improve performance of uniform block look-ups when using Adreno Profiler program overrides.
Add Adreno Profiler support for transform feedback objects, including program overrides.
Add more Adreno Profiler structure version checks to better warn of data structure size differences between Adreno Profiler and driver.
Add Adreno Profiler support for GL_RGB9_E5 texture format.
Add Adreno Profiler support for GL_SRGBA8 texture format.
Add Adreno Profiler support for 2D texture arrays.
Add the ability to identify which GL thread is most active, to automatically select the best thread in the Adreno Profiler.
Fix Adreno Profiler reporting of uninitialized data.
Fix occasional crash of BombSquad (and other multithreaded apps) when connecting Adreno Profiler.
Add Adreno Profiler option to maintain overrides when capturing a new frame.
Fix Adreno Profiler failure with Epic Citadel.
Fix WebGL 1.0.2 conformance test textures/texture-size-limit.html case.
Fix handling of \r line endings in shader source.
The following fixes were included in the January 2014 Adreno driver release for Nexus 5 and are also included in this release for Nexus 7 and Nexus 4:
Add support for GL_EXT_multisampled_render_to_texture extension.
Fix incorrect output with glReadPixels() on an FBO with a texture attachment which is a cubemap face.
Fix incorrect lighting in the UBOTest example from the Adreno SDK. This fix addresses problems with scalar operations on UBOs.
Performance enhancements for rasterizer discard.
Performance enhancements for transform feedback.
Fix issue with graphics driver being unable to find and load Adreno Profiler libraries.
Cleaner handling for internal compiler error cases for UBOs.
Faster rsGetElementAt() and rsSample() runtime performance for programs that access many Allocation objects.
Improved stability when compiling complex RenderScript code.
Allow a count of zero in calls to glDrawBuffers() as per spec.
Fix errors in calculation of 2D texture array slice sizes for NPOT textures.
Generate GL_INVALID_VALUE from glTexStorage2D() and glTexStorage3D() when width, height, or depth exceed supported size.
Fix behavior of glGetFramebufferAttachmentParameteriv() to properly return GL_FRAMEBUFFER_DEFAULT for the default framebuffer instead of returning GL_NONE. (See OpenGL® ES Version 3.0 spec §6.1.13.)
Change glCopyTexImage2D() to prohibit SNORM as a destination format, as per Table 3.15 of the OpenGL® ES Version 3.0 spec.
Relaxed restrictions on the width and height parameters of glCompressedTexSubImage2D() to allow updates of 1x1 and 2x2 miplevels for ETC2/EAC formats. The incoming data buffer must still have its width and height padded to four, as required by ETC2/EAC, but the width and height parameters to the function call may reflect the actual texture dimensions.
Fix a potential double-free of memory inside glLinkProgram().
Fix reported value of gl_MaxVertexTextureImageUnits for GLES 3.0 hardware.
Add support for the following built-in constants in GLSL 3.0:
Fix transposition of u and v coordinates in GLSL textureOffset() and texelFetch() functions.
Fix loss of w coordinate in GLSL textureOffset() and texelFetch() functions.
Fix GLSL matrix constructor to accept an array of matrices.