Git Product home page Git Product logo

powervr-graphics / native_sdk Goto Github PK

View Code? Open in Web Editor NEW
673.0 673.0 193.0 1.66 GB

C++ cross-platform 3D graphics SDK. Includes demos & helper code (resource loading etc.) to speed up development of Vulkan, OpenGL ES 2.0 & 3.x applications

Home Page: http://powervr-graphics.github.io

License: MIT License

C 18.65% Objective-C 0.66% C++ 79.59% Java 0.06% Objective-C++ 0.28% CMake 0.70% Shell 0.01% GLSL 0.01% Python 0.04%

native_sdk's People

Contributors

alejandrocosin avatar c0d1f1ed avatar glebnovodran avatar graptis avatar hliatis avatar jduchniewicz avatar joedavisimg avatar lilly-lizard avatar omarzohdi avatar pvrdevtech avatar razvan1024 avatar rumblehhh avatar senthuran-ukr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

native_sdk's Issues

GnomeHord will crash after the first frame is rendered

GnomeHord will crash on Android 9.0 because of infinite loop in renderFrame. The infinite loop is caused by the zero return value of _tilesToDrawQ.consumeMultiple(_deviceResources->drawQconsumerToken, results, 256));

Compilation failures on VS 2019

TextureHeader.h in PVRCore fails to compile because it is missing an include for <string> (std::string is used in the header). Adding this line somewhere to the top fixes the issue:

#include <string>

[Combine different "virtual buffers" into only one buffer using StructuredBufferView]

Combine different "virtual buffers" into only one buffer using StructuredBufferView

I want to create a buffer which has many subranges, each range for a different SSBOs or UBOs. StructuredBufferView is very easy to use since it avoids potential mistakes.
The function:

getDynamicSliceOffset(uint32_t dynamicSliceIndex)

just return the parameter "dynamicSliceIndex" multiply the size of root's structuredBufferView.
I think the "Dynamic Slice" is only useful for things that need buffers with the same layout(very convenient for frame resource), but the efficiency would be improved if used a big buffer instead of separate small buffers.
Or there are some other ways for doing such things?

Additional Info

just like this:
image

Win XP support

Hello,
I'm using your sdk libraries on Windows. But then I've decided to compile my project at winxp I faced with the fact that those dlls (libegl.dll) couldn't be used at XP (they are linked with new versions of windows system libraries).
Could please help me with my problem. For example could you give me a link to a XP compatible libraries. I realy don't want to hijack your current libs for XP))
Thanks

About GetPhysicalDeviceSparseImageFormatProperties cause runtime error.

When I build the sample of 02_vulkan_introducing_pvr_shell completed, I encountered a runtime error.

The error as follows:

08-15 13:28:16.714 1975-2059/com.powervr.VulkanIntroducingPVRShell E/com.powervr.Example: VULKAN_LAYER_VALIDATION: invalid vkGetDeviceProcAddr(0x7f93fb0590, "vkGetPhysicalDeviceSparseImageFormatProperties") call 08-15 13:28:16.715 1975-2059/com.powervr.VulkanIntroducingPVRShell A/libc: E:/GIT/heitaohua/powervr-graphics-native-sdk/framework/PVRNativeApi/Vulkan/VulkanBindings.cpp:542: static bool vk::initVulkanDevice(VkDevice): assertion "GetPhysicalDeviceSparseImageFormatProperties" failed 08-15 13:28:16.715 1975-2059/com.powervr.VulkanIntroducingPVRShell A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 2059 (Thread-7)

What I want to say is the cause of the problem, Please note that VulkanBindings.cpp, The line PVR_VULKAN_GET_DEVICE_POINTER(device, GetPhysicalDeviceSparseImageFormatProperties); try to get the pointer of function, however, the function belongs to vulkan instance , not device. And before this line, the function pointer has been obtained when the instance was initialized.

So to fix this issure just remove the line. Anyway please update the sdk files to prevent other people from encountering unnecessary problems.

[BUG]Mac OS Catalina: CodeSign failed on ligEGL.dylib

Description

On Mac OS Catalina, Xcode 11.5
powerVR libraries can be built well, but there will be a CodeSign error when building the examples.Like below
/powerVR-build/bin/Debug/OpenGLESHelloAPI.app: code object is not signed at all In subcomponent: /powerVR-build/bin/Debug/OpenGLESHelloAPI.app/Contents/Frameworks/libEGL.dylib Command /usr/bin/codesign failed with exit code 1

Environment

  • SDK version: R19.2-v5.4
  • Operating System/Device: Mac OS Catalina, Xcode 11.5, base SDK Mac OSX 10.15

[BUG] incorrect glDisable(GL_FRAMEBUFFER_SRGB) for MRT

Description

Hi,

I find the emulator will add a glDisable(GL_FRAMEBUFFER_SRGB) call in the underlying OpenGL implementation for every draw, if my current FBO contains SRGB color attachement in GL_COLOR_ATTACHMENT1 or 2, 3, etc.

If the GL_COLOR_ATTACHMENT0 is SRGB format, the emulator works correctly, it calls glEnable(GL_FRAMEBUFFER_SRGB).

Maybe the underlying implementation only check color attachement 0.

Repro steps

  • Create a FBO contains 3 color attachments with format:
    color0 : rgb10a2
    color1 : rgba8_srgb
    color2 : rgba8_srgb

  • bind the fbo and make some drawcalls

  • you will see the emulator calls glDisable(GL_FRAMEBUFFER_SRGB) before every draw in some graphics debugger( such as Renderdoc).

Environment

  • SDK version: 18.2@5236813
  • Operating System/Device: Windows 10/ GTX 1060

Additional Info

[BUG] Pre-built SDKs no longer available for download.

Description

I had been downloading an SDK to my CI builds from https://powervr-graphics.github.io/. Those are no longer available.

Repro steps

Just look on https://powervr-graphics.github.io/. There are no binaries available any more.

Environment

  • SDK version: n/a
  • Operating System/Device: n/a

Additional Info

I've tried to download using the link from the Imagination web site:

curl -O https://www.imgtec.com/download/windows-installer-pvrvframe/?dlm-dp-dl-force=1

but I get 0 bytes back. How can I download it via curl rather than a web browser?

I debated whether to make this an RFI or a bug. A bug won, since you used to have these and their removal broke my CI builds.

Optimising the PostProcessing/FragShader.fsh

I see that in the vulkan postfragment Fragshader, when calculating the oFilter you are doing log2 and exp2 for each fragments/frame. Instead calculate the final exposure value in the CPU and pass it to the push constant(Save GPU cycle).
Therefore we only recalculate the "exposure" value when we need to when the user input changes in the application.

OLD VERSION

layout(push_constant) uniform pushConstantsBlock{
	mediump float linearExposure;
	mediump float threshold;
};
......
mediump float exposure = log2(max(linearExposure, 0.0001f));
exposure -= threshold;
exposure = exp2(exposure);
oFilter = luma(exposure * oColor.rgb);;

SIMPLER & OPTIMISED VERSION

layout(push_constant) uniform pushConstantsBlock{
	mediump float exposure;
};
oFilter = luma(exposure * oColor.rgb);;

https://github.com/powervr-graphics/Native_SDK/blob/master/examples/Vulkan/PostProcessing/FragShader.fsh

HOPE IT HELPS.
MERRY CHRISTMAS.

[BUG] Not compiling on BBB

Description

Fails to build with following error:

make[2]: *** No rule to make target '../external/PVRScope/../../lib/Linux_armv7l/libPVRScopeDeveloper.a', needed by 'bin/OpenGLESPVRScopeExample'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:1646: examples/OpenGLES/PVRScopeExample/CMakeFiles/OpenGLESPVRScopeExample.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

Repro steps

Clone the repository, configure with:

cmake .. -DPVR_BUILD_OPENGLES2_EXAMPLES=1 -DPVR_WINDOW_SYSTEM=NullWS -DCMAKE_BUILD_TYPE=Debug

Then build.

Environment

  • SDK version: latest master:0f84b53f5a324a63a6bd949b6906b9ca6c040c12
  • Operating System/Device:
    BeagleBone Black

uname -a
Linux beaglebone 4.19.94-ti-r64 #1buster SMP PREEMPT Fri May 21 23:57:28 UTC 2021 armv7l GNU/Linux

Additional Info

Gnome Horde demo breaks Vulkan's threading rules

When I run Gnome Horde with the threading validation layer present, after about 30 seconds, I see a a few threading errors (followed by a segv):

THREADING(ERROR): object: 0x45cd88 type: 0 location: 0 msgCode: 1: THREADING ERROR : object of type NON_DISPATCHABLE_HANDLE is simultaneously used in thread -1636830128 and thread -1225728000

My own debug appears to show that the same command pool is being used to both allocate and delete data from different threads simultaneously.

PVRTexTool doesn't produce SRGB textures correctly

I have been experiencing a weird bug.I first was sure SRGB setup was wrong in our engine,But it isn't.We compare also with Desktop OpenGL 4.4 env.
Example:
Iphone 6 , OpenGL ES3.0
Created a set of textures from PNG and exported to PVRTC 4bpp RGB sRGB.
Also exported the same set to PVRTC 4bpp RGB linear RGB.
When comparing visuals with either set, the results look exactly the same - they are over exposed.
That means that the space of the textures is not sRGB but rather linear. I made sure iPhone's default Framebuffer has a color format of sRGBA8888 .It all good.Also falling back to non sRGB FBO gets dark results which is fine.
Additionally,as we use your PVR loader API,I checked if the PVR header fetched colorSpace == sRGB.So it does.I also noticed that inside PVRTexToolGUI app,after the export is done, the texture format always shows :" PVRTC Xbpp RGB" but never SRGB.Not sure if it is meant to be like that.Please let me know if you can confirm there is a bug with sRGB space textures .Thanks

[BUG]Example programs get crash when calling pvr::utils::createInstance()

Description

I build the NativeSDK and open it in Visual Studio 2017. Some examples get crashed when calling

vkThrowIfFailed(pvrvk::getVkBindings().vkCreateInstance(&instanceCreateInfoVk, nullptr, &_vkHandle), "Instance Constructor");

at line 120 in InstanceVk.cpp.

Repro steps

Just clone, cmake, open in VS, build and run (e.g. VulkanExampleUI solution).

Environment

Windows system with Nvidia RTX2080, Vulkan 1.2.141.

Additional Info

The error type is access conflict, which provide no information for me. I don't think it is due to hardware or validation layers because no such message is logged.

[BUG] Android known Issue: gradle 5.4.1 incompatibility with Java 12-13. Workaround provided.

Description

An intermittent error may pop up when Java 12-13 is used. We have observed it on Windows but may be present in other platforms.
java.lang.IllegalArgumentException: Unsupported class file major version 57
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:184 [linkprotect.cudasvc.com])
at groovyjarjarasm.asm.ClassReader.(ClassReader.java:166 [linkprotect.cudasvc.com])
...
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run [linkprotect.cudasvc.com](ThreadPoolExecutor.java:628 [linkprotect.cudasvc.com])
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run [linkprotect.cudasvc.com](ThreadFactoryImpl.java:55 [linkprotect.cudasvc.com])
at java.base/java.lang.Thread.run [linkprotect.cudasvc.com](Thread.java:830 [linkprotect.cudasvc.com])

Repro steps

The error is intermittent. It will sometimes usually occur after running a gradlew assemble which has progressed for some time, cancel or let it finish, then switch to another single example and run gradlew assemble again.

Environment

  • SDK version: 19.2
  • Operating System/Device: Android built on windows 10 with Java 12 or 13 (oracle or openjdk, makes no difference) installed. The issue does not appear with Java 11.

Known Workarounds

This issue can be worked around in 3 ways:

  1. Install gradle 6.x and use that to build on Android instead of the gradlew scripts (run gradle assembleRelease instead of gradlew assembleRelease
  2. Update the gradlew wrappers, but installing gradle 6.x and then running gradlew wrapper in each folder you want to use gradle 6.x from
  3. Use Java 11 (if you do not wish to downgrade Java, a side-by-side installation can be done, where JAVA_HOME is set to the folder of the new Java 11 installation)

glObjectLabelKHR generates a error for GL_SAMPLER

Hi, Imagination guys.

GLuint sampler;
gl::GenSamplers(1, &sampler);
gl::ext::ObjectLabelKHR(GL_SAMPLER, sampler, -1, "test");

These codes generates a validation error message( which is enabled via GL_KHR_debug extension).

in function: gles::glObjectLabelKHR GL: 502 (GL_INVALID_OPERATION) VF: 502 (invalid operation)

Here is some info about my environment:

GL_VERSION: OpenGL ES 3.2 (Host : 4.6.0 NVIDIA 430.64)
GL_VENDOR: Imagination Technologies (Host: NVIDIA Corporation)
GL_RENDERER: PVRVFrame 10.9 - None (Host : GeForce GTX 1060 3GB/PCIe/SSE2) (SDK Build: 18.2@5236813)

It works well on some other OpenGL ES emulator, such as Angle. Is it a bug or am I wrong with something ?

Thanks.

[BUG] Some Vulkan examples failing shader compilation on macOS with MoltenVk due to spvSwizzleConstants being undefined

Some of the Vulkan SDK examples are failing shader compilation on macos (catalina 10.15.7) with lunarg sdk 1.2.176.1 due to spvSwizzleConstants being undeclared. This is presumably a SPIRV-Cross bug, but further investigation is needed before we submit an issue there.

Affected examples: IntroducingPVRUtils, DeferredShading, GnomeHorde, MultiSampling, Navigation3D, PipelineCache

Error message for IntroducingPVRUtils:

[mvk-error] VK_ERROR_INITIALIZATION_FAILED: Shader library compile failed (Error code 3):
Compilation failed:ย 

program_source:82:35: error: use of undeclared identifier 'spvSwizzleConstants'
ย  ย  constant uint& sTextureSwzl = spvSwizzleConstants[0];
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  ^
.
[mvk-error] VK_ERROR_INVALID_SHADER_NV: Fragment shader function could not be compiled into pipeline. See previous logged error.

The other affected examples have the same use of undeclared identifier 'spvSwizzleConstants' error.

glVertexAttribPointer

The stride cannot be set. If the stride is set, the stride cannot be drawn
I did not use VBO or VAO, but simply used the vertex array. However, if I set the Stride, I will not be able to draw. However, the glerror will not report the error. But in the pure use of PVR, in the mobile end, then there is no problem.

Branch 4.3 not working

Taking 4.3 latest branch and running example not working.
From the framework, PVREngineUtils and lot of other are missing or deleted.

[BUG] build for android pie failed

Description

I am building the PVRSDK for Android Pie.
Now is facing an build error about glm.

CMake Error at D:/ImaginationTechnologies/Native_SDK/framework/cmake/modules/Findglm.cmake:16 (find_package):
Could not find a package configuration file provided by "glm" with any of
the following names:

Repro steps

  1. Android studio version is 4.1.2
  2. In Android studio, use File->New->Import projects and selelct the directory Native_SDK/build-android
  3. Android Studio would sync project and report the above error.

Environment

  • SDK version:
    R20.2-v5.6
  • Operating System/Device:
    Android PIE

Additional Info

iOS iPhone6 fails to create GL_TEXTURE_2D_ARRAY

Hi again,I am working on integration of 2D array textures.
Using PVR to load the array texture it work on Windows with PVR SDK GL ES3.0 emulator.
However,when I launch debug on iPhone 6 device it fails on

glCompressedTexSubImage3D with INVALID_ENUM error.I trippled checked all the data and enums I pass into the function and found nothing wrong there.The GL docs say that INVALID enum can be cause by a wrong target or internal format.Both seem to be fine ,at least in debugger.

Here is the whole chunk of code that tries to load array texture.

`

GL_CHECK(glTexStorage3D(GL_TEXTURE_2D_ARRAY, mHeader.u32MIPMapCount, internalFormatOut,
mHeader.u32Width, mHeader.u32Height, mHeader.u32NumSurfaces));

            for (uint32_t uiMIPLevel = 0; uiMIPLevel < mHeader.u32MIPMapCount; ++uiMIPLevel)
            {
                for (uint32_t uiSurface = 0; uiSurface < mHeader.u32NumSurfaces; ++uiSurface)
                {
                    auto mipWidth    = getWidth (uiMIPLevel);
                    auto mipHeight   = getWidth (uiMIPLevel);
                    auto dataSize    = getDataSize (uiMIPLevel, false, false);
                    auto dataAddress = getDataPointer (texData, uiMIPLevel, uiSurface, 0);
                    
                    /*
                    GL_CHECK (glCompressedTexImage3D (targetOut ,
                                                      uiMIPLevel,
                                                      internalFormatOut,
                                                      mipWidth,
                                                      mipHeight,
                                                      mHeader.u32NumSurfaces,
                                                      0,
                                                       dataSize ,
                                                       dataAddress ));
                     */
                   GL_CHECK(glCompressedTexSubImage3D(GL_TEXTURE_2D_ARRAY, uiMIPLevel, 0, 0,
                                                      uiSurface, mipWidth, mipHeight, 1, GL_RGBA, dataSize, dataAddress));
                    
                   }
            }

`

The internal format is GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
getDataSzie() and getDataPointer() are the methods I borrowed from the SDK

I also attach the texture itself.It has 4 equal sized textures inside.Baked with PVRTexTool.

Thanks.
PS:rename .zip to .pvr. What a shame on Github they don't support PVR upload ;)

rustmetal_array.zip

Vulkan's optimizations using recommendation for developers

Description

Improving performance using Vulkan recommendation:

1. Use VkResetCommantPool instead of vkResetCommandBuffer for each command buffer, see validation layers:

WARNING: VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT (VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT) - ID: -2027362524, Name: "UNASSIGNED-BestPractices-vkCreateCommandPool-command-buffer-reset":
MESSAGE: Validation Performance Warning: [ UNASSIGNED-BestPractices-vkCreateCommandPool-command-buffer-reset ] Object 0: handle = 0x2cd00196740, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x8728e724 | vkCreateCommandPool(): VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT is set. Consider resetting entire pool instead.
Associated Objects - (1)
Object[0] - Type VK_OBJECT_TYPE_DEVICE, Value 000002CD00196740, Name "unnamed-object"

2. Use VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT during recording command buffers.

3. Do not use VK_PIPELINE_STAGE_ALL_COMMANDS_BIT during calling vkCmdPipelineBarrier, use optimal stages:

WARNING: VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT (VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT) - ID: 1218486124, Name: "UNASSIGNED-BestPractices-pipeline-stage-flags":
MESSAGE: Validation Warning: [ UNASSIGNED-BestPractices-pipeline-stage-flags ] Object 0: handle = 0x2cd00196740, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x48a09f6c | You are using VK_PIPELINE_STAGE_ALL_COMMANDS_BIT when vkCmdPipelineBarrier is called

https://github.com/KhronosGroup/Vulkan-Samples/blob/master/samples/performance/pipeline_barriers

[BUG] Update Vulkan validation layers to the unified VK_LAYER_KHRONOS_validation layer

Description

The Android Vulkan validation layers provided in https://github.com/powervr-graphics/Native_SDK/tree/master/external/validation_layers/jniLibs are now a bit old. In particular, since March 2019, the VK_LAYER_KHRONOS_validation unified layer supersedes the series of historical validation layers.

See https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/LAYER_CONFIGURATION.md#validation-layer-overview

This layer is now available through github releases at:
https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/tag/sdk-1.2.135.0

Repro steps

Build the app for Android by default. The Gradle setup picks the layers shipped in the NDK, or the ones provided in external/validation_layers, both of which are old.

Environment

n/a

Additional Info

This may require to change the list of layer names queried by the Vulkan samples.
It will also be worth checking if the up-to-date, unified layer leads to new warning/errors on the samples.

Builds directory gone in 5.1: Where to get EGL lib & dll files?

5.0 used to have the DLL files for libEGL and others. Those are gone in 5.1. Also I think 5.0 was missing libEGL.lib for linking and such. Is it possible to get these lib & dll files without downloading the SDK officially (e.g. through github only)?

FreeBSD Support

Any chance of getting the needed libs built for FreeBSD here? We'd like to bootstrap PowerVR for folks who want to do stuff/things on FreeBSD based hardware but can't really recommend it.

[BUG] sdkver.h: Version is still 5.1

#define PVRSDK_VERSION "5.1"
#define PVRSDK_BUILD "20.1@5715297"
#define PVRVERSION_MAJ "20"
#define PVRVERSION_MIN "1"
#define PVRVERSION_BRANCH "201"
#define PVRVERSION_BRANCH_DEC "20.1"
#define PVRVERSION_BRANCH_NAME "REL/20.1"
#define PVRVERSION_BUILD "5715297"
#define PVRVERSION_BUILD_HI "571"
#define PVRVERSION_BUILD_LO "5297"

pvrtexture::GenerateMIPMaps() fails to generate

I am loading a texture data from tga image file.Sizes 512x512 ,RGB 8 bit per channel.The texture is correct both on load and on save without mipmaps generation.However, when I try to do this:

   ```

pvrtexture::CPVRTextureHeader header1(pvrtexture::PVRStandard8PixelTypeRGB.PixelTypeID, height, width);
pvrtexture::CPVRTexture texture(header1, imageData);
bool result = pvrtexture::GenerateMIPMaps(texture, pvrtexture::EResizeMode::eResizeCubic, PVRTEX_ALLMIPLEVELS);

          It returns false.
UPDATE:
Sorry,it DOES work with RGBA textures.So the input texture must be RGBA always? 

[BUG] PVRTexTool 4.24 generates dark textures in linear RGB mode for all formats

Description

Compared to 4.23 and earlier versions, the 4.24 generates darker textures in linear mode. Tested for ETC1, ETC2, PVRTC2. Enabling sRGB mode does not correct the situation, but only makes it worse.

Repro steps

  1. Generate textures with 4.23 and 4.24 PVRTexTool
  2. Compare textures to source image with -diff. Warning! 4.24 --diff says that all is ok, but 4.23 --diff result is different.

Environment

  • Operating System/Device: Linux

Additional Info

Source texture is RGB .jpg
Passed command to generate texture: ./PVRTexToolCLI -i src.jpg -pot -f ETC1 -o new.ktx

PVRTexTool 4.23 --diff results:

  • texture generated by 4.23:
    Textures differ:
    Max Difference: R=66.000, G=46.000, B=107.000, A=0.000, Total=107.000
    Mean Error: R=1.608, G=1.656, B=1.686, A=0.000, Total=1.238
    RMS Error: R=2.322, G=2.386, B=2.427, A=0.000, Total=2.671
    Standard Deviation: R=2.728, G=3.037, B=3.074, A=0.000, Total=2.210
    PSNR Value: R=44.472, G=44.354, B=44.281, A=-1.000, Total=43.864

  • texture generated by 4.24:
    Max Difference: R=118.000, G=99.000, B=182.000, A=0.000, Total=182.000
    Mean Error: R=40.312, G=41.289, B=42.859, A=0.000, Total=31.115
    RMS Error: R=45.341, G=46.165, B=47.524, A=0.000, Total=11.791
    Standard Deviation: R=83.240, G=85.105, B=88.095, A=0.000, Total=64.110
    PSNR Value: R=31.566, G=31.488, B=31.362, A=-1.000, Total=37.415

Severe memory leak in glDrawElements on Windows

Not sure internally what is going on, but over time we consistently and continuously leak memory. We eventually get to the point where our application crashes because it is out of memory. If I comment out the glDrawElements function, the memory leak is gone. Unfortunately the code for your EGL libraries is not open source, so I don't have any additional information to share.

What can we do to find out what is causing the memory leak?

Using PVR version 5.2

There is no camera texture showing up when run the IntroducingPVRCamera example

The preview picture in 06_IntroducingPVRCamera folder is outdated i think

I'm not sure if this example runs well on non-PowerVR device, when deploy the project to my Galaxy S7, app runs but without camera texture showing up and there is no error in logcat:

    02-03 16:31:19.111 7904-7904/? I/libpersona: KNOX_SDCARD checking this for 10232
    02-03 16:31:19.111 7904-7904/? I/libpersona: KNOX_SDCARD not a persona
    02-03 16:31:19.111 7904-7904/? E/Zygote: v2
    02-03 16:31:19.111 7904-7904/? I/SELinux: Function: selinux_compare_spd_ram, index[1], SPD-policy is existed. and_ver=SEPF_SECMOBILE_6.0.1 ver=11
    02-03 16:31:19.111 7904-7904/? W/SELinux: Function: selinux_compare_spd_ram, index[1], priority [2], priority version is VE=SEPF_SECMOBILE_6.0.1_0025
    02-03 16:31:19.111 7904-7904/? E/Zygote: accessInfo : 0
    02-03 16:31:19.111 7904-7904/? W/SELinux: SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=com.powervr.OGLESIntroducingPVRCamera 
    02-03 16:31:19.111 7904-7904/? I/art: Late-enabling -Xcheck:jni
    02-03 16:31:19.141 7904-7904/? D/TimaKeyStoreProvider: TimaSignature is unavailable
    02-03 16:31:19.141 7904-7904/? D/ActivityThread: Added TimaKeyStore provider
    02-03 16:31:19.421 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ResourcesManager: getTopLevelResources: /data/app/com.powervr.OGLESIntroducingPVRCamera-1/base.apk / 1.0 running in com.powervr.OGLESIntroducingPVRCamera rsrc of package com.powervr.OGLESIntroducingPVRCamera
    02-03 16:31:19.421 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: Inside getClassLibPath + mLibMap{0=, 1=}
    02-03 16:31:19.431 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ResourcesManager: For user 0 new overlays fetched Null
    02-03 16:31:19.461 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: Inside getClassLibPath caller 
    02-03 16:31:19.471 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/InjectionManager: InjectionManager
    02-03 16:31:19.471 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/InjectionManager: fillFeatureStoreMap com.powervr.OGLESIntroducingPVRCamera
    02-03 16:31:19.471 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: Constructor com.powervr.OGLESIntroducingPVRCamera, Feature store :{}
    02-03 16:31:19.471 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: featureStore :{}
    02-03 16:31:19.491 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ResourcesManager: getTopLevelResources: /data/app/com.powervr.OGLESIntroducingPVRCamera-1/base.apk / 1.0 running in com.powervr.OGLESIntroducingPVRCamera rsrc of package com.powervr.OGLESIntroducingPVRCamera
    02-03 16:31:19.491 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ContextRelationManager: ContextRelationManager() : FEATURE_ENABLED=true
    02-03 16:31:19.491 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/RelationGraph: garbageCollect()
    02-03 16:31:19.501 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ResourcesManager: getTopLevelResources: /data/app/com.powervr.OGLESIntroducingPVRCamera-1/base.apk / 1.0 running in com.powervr.OGLESIntroducingPVRCamera rsrc of package com.powervr.OGLESIntroducingPVRCamera
    02-03 16:31:19.561 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Creating: 0x7f818343c0
    02-03 16:31:19.561 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Config: mcc=460 mnc=1 lang=zh cnt=CN orien=2 touch=3 dens=640 keys=1 nav=1 keysHid=3 navHid=0 sdk=23 size=2 long=2 modetype=1 modenight=1
    02-03 16:31:19.571 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/Activity: performCreate Call Injection manager
    02-03 16:31:19.571 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Start: 0x7f818343c0
    02-03 16:31:19.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=10
    02-03 16:31:19.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_START
    02-03 16:31:19.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Initializing State Machine
    02-03 16:31:19.571 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: dispatchOnViewCreated > Target : com.powervr.OGLESIntroducingPVRCamera.OGLESIntroducingPVRCamera isFragment :false
    02-03 16:31:19.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Executing Init Application
    02-03 16:31:19.571 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Resume: 0x7f818343c0
    02-03 16:31:19.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Host library 'libEGL.so' loaded
    02-03 16:31:19.581 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=11
    02-03 16:31:19.581 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_RESUME
    02-03 16:31:19.601 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/SecWifiDisplayUtil: Metadata value : SecSettings2
    02-03 16:31:19.601 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{13a26b I.E...... R.....ID 0,0-0,0}
    02-03 16:31:19.611 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: InputQueueCreated: 0x7f818343c0 -- 0x7f81834a00
    02-03 16:31:19.611 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INPUT_CHANGED
    02-03 16:31:19.611 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Attaching input queue to looper
    02-03 16:31:19.621 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/RelationGraph: garbageCollect()
    02-03 16:31:19.621 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ActivityThread: AppLock checkAppLockState isAppLocked = false pkgName = com.powervr.OGLESIntroducingPVRCamera showWhenLocked = false
    02-03 16:31:19.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: NativeWindowCreated: 0x7f818343c0 -- 0x7f81613010
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INIT_WINDOW
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_INIT_WINDOW
    02-03 16:31:19.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceCreated
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/Adreno: QUALCOMM build                   : 0039a8c, I5bc0f577f9
                                                                                 Build Date                       : 08/03/16
                                                                                 OpenGL ES Shader Compiler Version: XE031.08.00.02
                                                                                 Local Branch                     : 
                                                                                 Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.HB.1.1.1.C1.06.00.00.165.223
                                                                                 Remote Branch                    : NONE
                                                                                 Reconstruct Branch               : NOTHING
    02-03 16:31:19.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceChanged W=2560, H=1440)
    02-03 16:31:19.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=2
    02-03 16:31:19.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: WindowFocusChanged: 0x7f818343c0 -- 1
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe456f8
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EglPlatformContext.cpp: isGlesVersionSupported: Setting EGL_OPENGL_ES3_BIT_KHR
    02-03 16:31:19.641 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EglPlatformContext.cpp: isGlesVersionSupported: number of configurations found for ES version [OpenGL ES 3.1] was [60]
    02-03 16:31:19.651 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Trying to create context for all configs.
    02-03 16:31:19.651 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_KHR_create_context supported
    02-03 16:31:19.651 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@c3fa729 time:14971613
    02-03 16:31:19.651 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: SUCCESS creating context! Reporting success. (Used config #0) .
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Maximum API level detected: OpenGL ES 3.1
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Unspecified target API -- Setting to max API level : OpenGL ES 3.1
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_KHR_create_context supported...
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Trying to get OpenGL ES version : 3.1
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_IMG_context_priority not supported. Ignoring context Priority attribute.
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Attempting to create context with:
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	Debugbit: true
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	RedBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	GreenBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	BlueBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	AlphaBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	DepthBits: 32
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	StencilBits: 0
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context creation: EGL_OPENGL_ES3_BIT
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: Number of EGL Configs found: 1
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Creating EGL context...
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context created. Will now check if any attributes were being debugged, and try to roll back unnecessary changes.
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context successfully created! Updating Config Attributes to reflect actual context parameters...
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL Initialized Successfully
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: === Final EGL Configuration ===
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	RedBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	GreenBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	BlueBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	AlphaBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	DepthBits: 24
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	StencilBits: 8
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	aaSamples: 0
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	FullScreen: true
    02-03 16:31:19.661 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ===============================
    02-03 16:31:19.691 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera(s) found: 2
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Setting camera resolution.
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 176x144
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 320x240
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 352x288
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 640x480
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 720x480
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 960x720
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1056x864
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1088x1088
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1280x720
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1440x1080
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1920x1080
    02-03 16:31:20.261 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Using camera resolution of 1920x1080
    02-03 16:31:20.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: GLTexture attached to camera 
    02-03 16:31:20.571 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/com.powervr.Example: Camera interface util: Handle 1, Target 0x00008D65
    02-03 16:31:20.801 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: LUMINANCE/ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (r,r,r,g) enabled in order to allow Texture Storage.
    02-03 16:31:20.801 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libGLESv2: DTS_GLAPI : DTS is not allowed for Package : com.powervr.OGLESIntroducingPVRCamera
    02-03 16:31:20.801 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
    02-03 16:31:20.821 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (0,0,0,r) enabled in order to allow Texture Storage.
    02-03 16:31:20.821 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
    02-03 16:31:20.831 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 0.000 0.000 1.000
    02-03 16:31:21.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 -1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 1.000 0.000 1.000
    02-03 16:31:21.091 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.161 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.211 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.281 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.331 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:21.391 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:24.641 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7fdcedad38
    02-03 16:31:24.651 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7fdcedad38
    02-03 16:31:24.651 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7fdcedad38
    02-03 16:31:24.651 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7fdcedad38
    02-03 16:31:24.651 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7fdcedad38
    02-03 16:31:24.731 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Pause: 0x7f818343c0
    02-03 16:31:24.741 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=13
    02-03 16:31:24.741 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_PAUSE
    02-03 16:31:24.851 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: WindowFocusChanged: 0x7f818343c0 -- 0
    02-03 16:31:24.861 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
    02-03 16:31:24.871 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: NativeWindowDestroyed: 0x7f818343c0 -- 0x7f81613010
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_TERM_WINDOW
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseView
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW:ReleaseViewDone
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseApi
    02-03 16:31:24.871 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseWindow
    02-03 16:31:24.891 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe45878
    02-03 16:31:24.891 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW:Release window done
    02-03 16:31:24.891 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_TERM_WINDOW
    02-03 16:31:24.891 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceDestroyed
    02-03 16:31:25.321 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: SaveInstanceState: 0x7f818343c0
    02-03 16:31:25.321 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/ActivityThread: updateVisibility : ActivityRecord{85c31e0 token=android.os.BinderProxy@c3fa729 {com.powervr.OGLESIntroducingPVRCamera/com.powervr.OGLESIntroducingPVRCamera.OGLESIntroducingPVRCamera}} show : false
    02-03 16:31:25.321 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_SAVE_STATE
    02-03 16:31:25.321 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Stop: 0x7f818343c0
    02-03 16:31:25.321 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=14
    02-03 16:31:25.321 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_STOP
    02-03 16:31:30.841 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Start: 0x7f818343c0
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=10
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_START
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: State Machine already Initialized
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Skipped Init Application.
    02-03 16:31:30.841 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Resume: 0x7f818343c0
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=11
    02-03 16:31:30.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_RESUME
    02-03 16:31:30.871 7904-7915/com.powervr.OGLESIntroducingPVRCamera V/ViewRootImpl: dispatchResized mReportNextDraw cancel... mWinFrame : Rect(0, 0 - 1440, 2560)  frame : Rect(0, 0 - 2560, 1440) window com.powervr.OGLESIntroducingPVRCamera/com.powervr.OGLESIntroducingPVRCamera.OGLESIntroducingPVRCamera
    02-03 16:31:30.871 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: NativeWindowCreated: 0x7f818343c0 -- 0x7f81613010
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INIT_WINDOW
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_INIT_WINDOW
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe456f8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Forcing specific API level: OpenGL ES 3.1
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_KHR_create_context supported...
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Trying to get OpenGL ES version : 3.1
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_IMG_context_priority not supported. Ignoring context Priority attribute.
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Attempting to create context with:
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	Debugbit: true
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	RedBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	GreenBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	BlueBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	AlphaBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	DepthBits: 32
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	StencilBits: 0
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context creation: EGL_OPENGL_ES3_BIT
    02-03 16:31:30.881 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceCreated
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: Number of EGL Configs found: 1
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Creating EGL context...
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context created. Will now check if any attributes were being debugged, and try to roll back unnecessary changes.
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context successfully created! Updating Config Attributes to reflect actual context parameters...
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL Initialized Successfully
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: === Final EGL Configuration ===
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	RedBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	GreenBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	BlueBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	AlphaBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	DepthBits: 24
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	StencilBits: 8
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	aaSamples: 0
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	FullScreen: true
    02-03 16:31:30.881 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ===============================
    02-03 16:31:30.881 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceChanged W=2560, H=1440)
    02-03 16:31:30.901 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=2
    02-03 16:31:30.901 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ActivityThread: AppLock checkAppLockState isAppLocked = false pkgName = com.powervr.OGLESIntroducingPVRCamera showWhenLocked = false
    02-03 16:31:30.901 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: WindowFocusChanged: 0x7f818343c0 -- 1
    02-03 16:31:30.901 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera(s) found: 2
    02-03 16:31:30.971 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@c3fa729 time:14982933
                                                                                   
                                                                                   [ 02-03 16:31:30.971  1030: 8787 E/         ]
                                                                                   Camera[ HIGH][MCT   ] mct_pipeline_start_session_thread: 3626: mct_pipeline_start_session_thread: E imglib
                                                                                   
                                                                                   [ 02-03 16:31:30.971  1030: 8787 E/         ]
                                                                                   Camera[ HIGH][MCT   ] mct_pipeline_start_session_thread: 3633: mct_pipeline_start_session_thread: Calling start_session on Module imglib
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Setting camera resolution.
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 176x144
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 320x240
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 352x288
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 640x480
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 720x480
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 960x720
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1056x864
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1088x1088
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1280x720
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1440x1080
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1920x1080
    02-03 16:31:31.031 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Using camera resolution of 1920x1080
    02-03 16:31:31.311 7904-7932/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: GLTexture attached to camera 
    02-03 16:31:31.321 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/com.powervr.Example: Camera interface util: Handle 1, Target 0x00008D65
    02-03 16:31:31.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: LUMINANCE/ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (r,r,r,g) enabled in order to allow Texture Storage.
    02-03 16:31:31.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
    02-03 16:31:31.371 7904-7932/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (0,0,0,r) enabled in order to allow Texture Storage.
    02-03 16:31:31.371 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
                                                                                              
                                                                                              [ 02-03 16:31:31.381  1030: 8804 E/         ]
                                                                                              Camera[DBG] af_port_ext_send_legacy_status_update: 375: af_port_ext_send_legacy_status_update: Send AF Status update to af port: 1
    02-03 16:31:31.391 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 0.000 0.000 1.000
    02-03 16:31:31.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:31.841 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 -1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 1.000 0.000 1.000
    02-03 16:31:31.901 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:31.951 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:32.021 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:32.091 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:32.141 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:32.211 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:31:50.281 7904-7912/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f8080ce58
    02-03 16:31:50.291 7904-7912/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f8080ce28
    02-03 16:32:00.941 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Pause: 0x7f818343c0
    02-03 16:32:00.941 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=13
    02-03 16:32:00.941 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_PAUSE
    02-03 16:32:01.011 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: SaveInstanceState: 0x7f818343c0
    02-03 16:32:01.011 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_SAVE_STATE
    02-03 16:32:01.011 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/ActivityThread: updateVisibility : ActivityRecord{85c31e0 token=android.os.BinderProxy@c3fa729 {com.powervr.OGLESIntroducingPVRCamera/com.powervr.OGLESIntroducingPVRCamera.OGLESIntroducingPVRCamera}} show : true
    02-03 16:32:01.011 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Stop: 0x7f818343c0
    02-03 16:32:01.011 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=14
    02-03 16:32:01.011 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_STOP
    02-03 16:32:01.351 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: NativeWindowDestroyed: 0x7f818343c0 -- 0x7f81613010
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_TERM_WINDOW
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseView
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW:ReleaseViewDone
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseApi
    02-03 16:32:01.351 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: ReleaseWindow
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe45878
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_TERM_WINDOW:Release window done
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_TERM_WINDOW
    02-03 16:32:01.361 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: InputQueueDestroyed: 0x7f818343c0 -- 0x7f81834a00
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INPUT_CHANGED
    02-03 16:32:01.361 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Destroy: 0x7f818343c0
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_DESTROY
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_DESTROY
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: QuitApplication
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: StateExit
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: MAIN: Destroy requested. Exiting applications
    02-03 16:32:01.361 7904-7932/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: android_app_destroy!
    02-03 16:32:01.361 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: #3 mView = null
    02-03 16:32:01.401 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/RelationGraph: garbageCollect()
    02-03 16:32:01.401 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ResourcesManager: getTopLevelResources: /data/app/com.powervr.OGLESIntroducingPVRCamera-1/base.apk / 1.0 running in com.powervr.OGLESIntroducingPVRCamera rsrc of package com.powervr.OGLESIntroducingPVRCamera
    02-03 16:32:01.411 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ResourcesManager: getTopLevelResources: /data/app/com.powervr.OGLESIntroducingPVRCamera-1/base.apk / 1.0 running in com.powervr.OGLESIntroducingPVRCamera rsrc of package com.powervr.OGLESIntroducingPVRCamera
    02-03 16:32:01.431 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Creating: 0x7f81834a00
    02-03 16:32:01.441 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Config: mcc=460 mnc=1 lang=zh cnt=CN orien=1 touch=3 dens=640 keys=1 nav=1 keysHid=3 navHid=0 sdk=23 size=2 long=2 modetype=1 modenight=1
    02-03 16:32:01.451 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/Activity: performCreate Call Injection manager
    02-03 16:32:01.451 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Start: 0x7f81834a00
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=10
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_START
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Initializing State Machine
    02-03 16:32:01.451 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/InjectionManager: dispatchOnViewCreated > Target : com.powervr.OGLESIntroducingPVRCamera.OGLESIntroducingPVRCamera isFragment :false
    02-03 16:32:01.451 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Resume: 0x7f81834a00
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Executing Init Application
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=11
    02-03 16:32:01.451 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_RESUME
    02-03 16:32:01.461 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/SecWifiDisplayUtil: Metadata value : SecSettings2
    02-03 16:32:01.461 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{7897955 I.E...... R.....ID 0,0-0,0}
    02-03 16:32:01.471 7904-7904/com.powervr.OGLESIntroducingPVRCamera W/ActivityThread: AppLock checkAppLockState isAppLocked = false pkgName = com.powervr.OGLESIntroducingPVRCamera showWhenLocked = false
    02-03 16:32:01.461 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: InputQueueCreated: 0x7f81834a00 -- 0x7f818348c0
    02-03 16:32:01.461 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INPUT_CHANGED
    02-03 16:32:01.461 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Attaching input queue to looper
    02-03 16:32:01.461 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: Pause: 0x7f81834a00
    02-03 16:32:01.461 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: activityState=13
    02-03 16:32:01.461 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_PAUSE
    02-03 16:32:01.501 7904-7904/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: NativeWindowCreated: 0x7f81834a00 -- 0x7f81613010
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/threaded_app: APP_CMD_INIT_WINDOW
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: APP_CMD_INIT_WINDOW
    02-03 16:32:01.501 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceCreated
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe456f8
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EglPlatformContext.cpp: isGlesVersionSupported: Setting EGL_OPENGL_ES3_BIT_KHR
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EglPlatformContext.cpp: isGlesVersionSupported: number of configurations found for ES version [OpenGL ES 3.1] was [60]
    02-03 16:32:01.501 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Trying to create context for all configs.
    02-03 16:32:01.501 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewSystem: ViewRootImpl >> surfaceChanged W=1440, H=2560)
    02-03 16:32:01.511 7904-7904/com.powervr.OGLESIntroducingPVRCamera D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
    02-03 16:32:01.511 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: SUCCESS creating context! Reporting success. (Used config #0) .
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Maximum API level detected: OpenGL ES 3.1
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Unspecified target API -- Setting to max API level : OpenGL ES 3.1
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_KHR_create_context supported...
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Trying to get OpenGL ES version : 3.1
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: EGL_IMG_context_priority not supported. Ignoring context Priority attribute.
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Attempting to create context with:
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	Debugbit: true
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	RedBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	GreenBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	BlueBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	AlphaBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	DepthBits: 32
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: 	StencilBits: 0
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context creation: EGL_OPENGL_ES3_BIT
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL context creation: Number of EGL Configs found: 1
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: Creating EGL context...
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context created. Will now check if any attributes were being debugged, and try to roll back unnecessary changes.
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: EGL context successfully created! Updating Config Attributes to reflect actual context parameters...
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: EGL Initialized Successfully
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: === Final EGL Configuration ===
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	RedBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	GreenBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	BlueBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	AlphaBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	DepthBits: 24
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	StencilBits: 8
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	aaSamples: 0
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: 	FullScreen: true
    02-03 16:32:01.521 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ===============================
    02-03 16:32:01.541 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera(s) found: 2
    02-03 16:32:01.551 7904-7904/com.powervr.OGLESIntroducingPVRCamera I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@c3fa729 time:15013510
    02-03 16:32:01.551 7904-7904/com.powervr.OGLESIntroducingPVRCamera E/Camera: Error 2
    02-03 16:32:01.571 7904-7904/com.powervr.OGLESIntroducingPVRCamera E/ViewRootImpl: sendUserActionEvent() mView == null
    02-03 16:32:01.651 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe41e58
    02-03 16:32:01.651 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe41e58
    02-03 16:32:01.651 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe41e58
    02-03 16:32:01.651 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe41e58
    02-03 16:32:01.651 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglTerminate EGLDisplay = 0x7f7fe41e58
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Setting camera resolution.
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 176x144
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 320x240
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 352x288
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 640x480
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 720x480
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 960x720
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1056x864
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1088x1088
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1280x720
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1440x1080
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Camera supports 1920x1080
    02-03 16:32:02.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: Using camera resolution of 1920x1080
    02-03 16:32:02.281 7904-9288/com.powervr.OGLESIntroducingPVRCamera W/CameraInterface: GLTexture attached to camera 
    02-03 16:32:02.281 7904-9288/com.powervr.OGLESIntroducingPVRCamera V/com.powervr.Example: Camera interface util: Handle 1, Target 0x00008D65
    02-03 16:32:02.321 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: LUMINANCE/ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (r,r,r,g) enabled in order to allow Texture Storage.
    02-03 16:32:02.321 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
    02-03 16:32:02.341 7904-9288/com.powervr.OGLESIntroducingPVRCamera I/com.powervr.Example: ALPHA format texture detected in OpenGL ES 3+ context. Remapping to RED texture with swizzling (0,0,0,r) enabled in order to allow Texture Storage.
    02-03 16:32:02.341 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: Packing allocations for resource %p
    02-03 16:32:02.361 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 0.000 0.000 1.000
                                                                                              
                                                                                              [ 02-03 16:32:02.361  1030: 9323 E/         ]
                                                                                              Camera[DBG] cpp_hardware_set_clock: 367: :cpp_hardware_set_clock:367 Set clock 200000000 BW abg 321926400 BW inst 321926400
    02-03 16:32:02.771 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:02.771 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/com.powervr.Example: CameraInterface - Projection matrix changed. Projection matrix is now
                                                                                              1.000 0.000 0.000 0.000
                                                                                              0.000 -1.000 0.000 0.000
                                                                                              0.000 0.000 1.000 0.000
                                                                                              0.000 1.000 0.000 1.000
    02-03 16:32:02.801 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:02.871 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:02.941 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:03.001 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:03.081 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038
    02-03 16:32:03.111 7904-9288/com.powervr.OGLESIntroducingPVRCamera D/libEGL: eglInitialize EGLDisplay = 0x7f7fe45038

[BUG] glVertexAttribDivisor + instanced draw doesn't work correctly

Description

glVertexAttribDivisor + instanced draw doesn't work correctly with latest PVRVFrame, it will result in messy rendering result.

incorrect result with PVRVFrame:
pvr

correct result with Angle:
angle

Repro steps

The code has nothing fancy, just regular instancing rendering code. We have a vertex buffer which contains 10 world matrix for 10 instances, and use glVertexAttribDivisor(..., 1) to specify its "step rate".

If you want, I can send you RenderDoc capture files which can reproduce the bug.

Environment

  • SDK version: R19.2-v5.4
  • Operating System/Device: Windows 10/ GTX 2080 Ti (driver : 441.66)

Additional Info

[BUG] PVRTexTool 5.1.0 does not display DDS Luminace Texture

Description

Luminace DDS Textures stored from Photoshop or DxTex (DirectX Texture Tool) are properly displayed in each of these tools, but not in PVRTexTool. I am not sure about the proper range setting, but according to my understanding it should definitely be linear space and either from 0-255 or 0-1 (norm). I tried all the settings, but the displayed image stays black.

Luminance Tex in PVRTexTool vs DxTex

Repro steps

I've attached the zipped test texture, as DDS can't be uploaded.

Environment

  • PVRTexTool 5.1.0 (Build 21.1@5986312)
  • Windows 10

[BUG] the backbuffer format is always SRGB

Description

The emulator doesn't say it support EGL_KHR_gl_colorspace, but always create a r8g8b8a8_unorm_srgb format backbuffer in the underlying implementation.

It should use a linear format backbuffer as default if doesn't support EGL_KHR_gl_colorspace.

The better way is to expose the EGL_KHR_gl_colorspace egl extension, and let user to config it to determine whether to use a srgb backbuffer

EGLint eglSurfaceAttributes[3]
eglSurfaceAttributes[0] = EGL_GL_COLORSPACE_KHR;
eglSurfaceAttributes[1] = EGL_GL_COLORSPACE_SRGB_KHR;
eglSurfaceAttributes[2] = EGL_NONE;
egl::CreateWindowSurface(..., eglSurfaceAttributes)

Repro steps

Environment

  • SDK version: 18.2@5236813
  • Operating System/Device: Windows 10/GTX 1060

Additional Info

And the emulator says it support EGL 1.5, EGL_KHR_gl_colorspace should be in EGL 1.5. But if I try

EGLint eglSurfaceAttributes[3]
eglSurfaceAttributes[0] = EGL_GL_COLORSPACE;
eglSurfaceAttributes[1] = EGL_GL_COLORSPACE_SRGB;
eglSurfaceAttributes[2] = EGL_NONE;
egl::CreateWindowSurface(..., eglSurfaceAttributes)

the egl::CreateWindowSurface will hang my process.

Use tags instead of branches for releases

When using Git, tags should be used to mark specific commits as versioned releases of your software. However, right now branches are being used to represent those releases. In addition, a master branch should be provided that is continuously updated and always represents the latest release. Specifically, the following changes should be made:

  1. Convert every numbered release branch to a corresponding tag (e.g. refs/heads/5.0 will become refs/tags/v5.0).
  2. Create master branch from the latest current release (at the time of this report, that is 5.2)
  3. Set master as the default branch in repo settings
  4. Delete all numbered branches in refs/heads.

I have already done this work on my fork: https://github.com/rcdailey/Native_SDK

Please review it and let me know if you find these changes acceptable. If you accept these changes, your releases will be more streamlined and more idiomatic to Git.

[BUG] PVRTexTool 4.24 image viewer too dark

Description

PVRTexTool to 4.24 displays all images as too dark, as gamma correction is not applied to textures before being displayed.

Repro steps

  • Open a source format (jpg, png, etc) image, or a pvr image generated with 4.24 or later on the viewer. They appear darker than they actually are.

Environment

  • SDK version: R20.1
  • Operating System/Device: All

Additional Info

This appears to be an issue that was caused by 19.2 version incorrectly generating SRGB images even when they were supposed to be Linear, so the viewer was compensating by darkening the images. Since the texture encoding was fixed, images consistently appear darker.

CMake scripts to build PVR

PowerVR developers: Would you be interested in CMake scripts I have written to build your code in this repository? The scripts are pretty simple and do not have any INSTALL logic, but they can be used to integrate your repository in to other downstream CMake projects to build targets like PVRUtils, PVRCore, etc.

glDebugMessageControlKHR doesn't work correctly

I try to use glDebugMessageControlKHR to disable application message, but still got lots of debug messages in the callback of glDebugMessageCallbackKHR when I invoke glPushDebugGroupKHR with GL_DEBUG_SOURCE_APPLICATION.

gl::ext::DebugMessageControlKHR(GL_DEBUG_SOURCE_APPLICATION, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_FALSE)

That works correctly in Angle emulator. So maybe a bug in PowerVR emulator ?

[BUG] macOS Catalina: eglMakeCurrent crashes if not called on ui thread

Description

I see eglMakeCurrent() calls [NSOpenGLContext setView:], which must be called in UI thread. Before macOS 10.15 it's not a problem, but xcode will warn about UI API called on non-ui thread if you write similar opengl context code yourself.

BTW, I think setView should be called in eglCreateWindowSurface but not eglMakeCurrent.

Repro steps

  • Create a rendering thread
  • Create egl context for NSView in rendering thread
  • make current

Environment

  • SDK version: 5.3.1, 5.4
  • macOS 10.15+

Additional Info

Thread 6 Crashed:
0   com.apple.AppKit              	0x00007fff38180cbc -[NSOpenGLContext setView:] + 229
1   libEGL.dylib                  	0x0000000119687a4c cocoa_make_current(void*, void*) + 124
2   libEGL.dylib                  	0x00000001196882c4 glove::GLContext::make_current(void*) const + 20
3   libEGL.dylib                  	0x00000001196393f1 egl::Context::make_current(std::__1::shared_ptr<egl::Surface>, std::__1::shared_ptr<egl::Surface>) + 641
4   libEGL.dylib                  	0x00000001196391f9 egl::Context::make_current(std::__1::shared_ptr<egl::Surface>, std::__1::shared_ptr<egl::Surface>) + 137
5   libEGL.dylib                  	0x00000001196410f4 eglMakeCurrent + 740

glRenderbufferStorage GL_INVALID_OPERATION in SDK 2018 R2

Hi!
Hello! I have GL_INALID_OPERATION on following code

void InitFBO()
{
	GLuint fbo = 0;
	glGenFramebuffers(1, &fbo);
	CheckOpenGLError();
	glBindFramebuffer(GL_FRAMEBUFFER, fbo);
	CheckOpenGLError();

	GLuint renderBufferId = 0;
	// create render buffer
	glGenRenderbuffers(1, &renderBufferId);
	CheckOpenGLError();
	glBindRenderbuffer(GL_RENDERBUFFER, renderBufferId);
	CheckOpenGLError();

	const uint width = 256;
	const uint height = 256;

	glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, renderBufferId);
	CheckOpenGLError();

	glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);
	CheckOpenGLError(); // GL_INVALID_OPERATION

	glBindFramebuffer(GL_FRAMEBUFFER, 0);
	CheckOpenGLError();
}

Test Project:

Also, you can see our discussion:
https://forums.imgtec.com/t/glrenderbufferstorage-gl-invalid-operation-in-sdk-2018-r2/2862

In VulkanBumpMap sample, textureView/sampler is destroyed after updating them into descriptorSet

In this sample, both texture views and sampler objects are defines with local variables, while descriptorset is inside a deviceResource object. According to Vulkan spec 2.3.1. Object Lifetime,
"The following Vulkan objects can be destroyed when no command buffers using the object are executing:
....
VkImageView.
...
VkSampler
..."
One of the ways that command uses vkImageView and vkSampler is through descritorset, so I think destroying these objects before command buffer still refers to that, is not legal.

Please help to check and if it's true, probably need fix the sample

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.