Copied the etc1 implementation from frameworks/base/opengl/libs/ETC1
to the translator common library, this is for keeping the translator
be independant.
Added support for ETC1 compressed textures in both GLESv1 and GLESv2
which is needed for some applications. (Cordy).
Change-Id: Ie615ed82896cb36c42fa640b83d9e93b723b3b80
Fixed management of DC's, use one DC for each egl config as before
but use the correct one every time and not the last one used during
createContext call.
Filter out GENERIC pixel formats which might not be supported by
accelerated hardware.
Prevent calling to ChoosePixelFormat at every create{window/pbuffer}
call, instead use the exact config specified by the caller. We
need to call at least once to wglChoosePixelFormat in order to let
the driver initialize, we do it during eglInitialize time just before
querying the native pixel formats.
Change-Id: Id00addaed9cb0369c41311d2bcd3ce8c7ea6408c
The EGL_CONFIG_ID attribute should be uniqueue for each
config, at some cases we duplicate a configuration in
order to simulate different pixel format (RGB_565) at that
case we want to keep the native config_id of the backend
OpenGL the same on both configs.
This change adds extra attribute 'native_config_id' for that
purpose.
Change-Id: I7e560a4badd01d146b9753cee603ff4707ccfd7f
Fixes windows build found after clean build.
the emugen tool does not built on windows. For
windows build we need to use the build host executable.
(that works for mingw builds since it uses the linux exeutable).
Change-Id: I6a0cc6936d4b9f11f074695066b800e12156fd83
This is a debugging tool which enables to dump the guest
command stream to a file which can be later be examined
and "played" using a seperate tool.
Change-Id: I3fec19c1a651f0ed4394c33a0c0cd9ba54384355
That fixes the alpha and GUI components artifacts in Cordy.
The translator has ignored the 'normalized' argument of
glVertexAttribPointer function in GLESv2.
We now use the supplied value when applying the vertex attributes
to the backend OpenGL so that non-float color vertex attributes
are now normalized.
Change-Id: Idffda33225748276144ed70d2dcf4da17219d1d2
for supporting & storing spesific OS data of the surfaces
for example on Windows platform it is needed to save for each windowSurface
the HWNDL & HDC of the native window, this change caused changes in the EglOsApi
interface
On windows it is not possible to create a context which
shares with another context if the other context is already
current to some thread.
This change makes the "global context" be a dummy context
on windows which we create during the first createContext
call, this dummy context will never bind to any thread so
it is safe to share with it at any time.
On windows we need to have a thread on the renderer process
which handles windows messages sent to the subwindow
we are creating during framebuffer initialization.
We run this message pump in the main renderer thread
and the server listener on a seperate thread.
The following enables the renderer build on darwin.
Moved platform specific type declarations from render_api.h
to render_api_platform_types.h so it can be included from the
objective c code.
Fixed subwindow to use EmuGLView which overrides NSView to prevent
background drawing of the view.
Mac specific bug fix to support unbinding a context.
Removed NSOpenGLContext:clearDrawable call before binding
an NSView to the context to avoid re-paint of the view which
causes flash effect.
the dispatch loaded incorrect functions from GL for framebuffer extension
the functions used belong to GL3, and didn't work with GL2 context
fixed this to use the EXT functions from GL
The shaders fail to compile if we don't omit those changes (Cordy game for example).
Anyways, they have no semantic meaning in GLSL, quote for GLSL 4.1 spec:
"Precision qualifiers are added for code portability with OpenGL ES, not for functionality. They have the
same syntax as in OpenGL ES, as described below, but they have no semantic meaning, which includes no
effect on the precision used to store or operate on variables."
Also removed an anoying print in the encoder.
those are up-to-date gles header files from khronos so that
host applications will be able to compile with the translator
with no dependencies. The translator now exports both egl/gles
headers and their implementation libraries.
There are Android applications (notably BootAnimation) which require
exactly an RGB_565 configuration, and are not satisfied by an e.g.
RGBA_8888 configuration. This doens't make too much sense, and I think
such apps should be fixed.
However, until that happens, there is an issue when the host does not
have an RGB_565 FBConfig, which is typical to many OpenGL implementations.
In such cases, BootAnimation doesn't run.
The workaround is to add an RGB_565 config to the list maintained by the
translator, which is basically an 888 config in disguise.
This commit add CHECK_GL_ERROR define to decoders/renderer which enables various
glGetError() calls. Also changed emugen to add glGetError() after every dispatch call (based on
defintion of CHECK_GL_ERROR). Also cleaned some annoying printf's.
When sorting configs, we want the conformant ones first.
This also makes Wave Blazer Lite work - specifically by placing a non
conformant config (rgba=0) at the end of the list.
The application provides the window handle to which the
OpenglRenderer should render to however only a sub-region of
this window needs to be rendered. This change adds this functionality
by creating a native child subwindow into which rendering will happen.
When translating point size arrays from GLES to GL, an optimization
was implemented where all points of the same size in an array or elements
array where drawn together. This is wrong, since it means points
are not drawn in the order the app has requested, creating the wrong
result when points in the array are overlapping in screen space.
So removed this mechanism, and now just drawing the points in the right
order.
Some optimization is still there, where if there are several
consecutive points of the same size they are drawn together.
The change in GLEScmImp.cpp is only to make the condition more readable -
the functionality is identical.
This fixes three issues:
1. glGet(GL_2d_TEXTURE_BINDING) should be handled by the translator rather
than by OpenGL.
2. glIsTexture shoud return GL_TRUE only if the texture was bound at some
point - add a wasBound member to the TextureData and maintain it.
3. glTexParameter(GL_GENERATE_MIPMAP) did not work. The first problem was
that it was not allowed by our validator - fixed. The next issue is that
this enum is not necessarily supported by the OpenGL implementation - it
is in OpenGL 2.x, but was replaced by an extension in 3.x. So in case the
extension does not exist, and GL_GENERATE_MIPMAP is required, save this info
in a new requiresAutoMipmap member of TextureData and call glGenerateMipmapExt
whenever glTex(Sub)Image2D is called.
There is a theoretical case where neither GL_GENERATE_MIPMAP nor glGenerateMipmap
is supported by the OpenGL implementation - this is not likely to happen, but
if we find such an implementation it might require implementing a mipmap
generation software algorithm (which is bad).
There is a set of glGets which query the client state of the
binded arrays. The data exists in the translator context and is not
passed to GL, so the glGets should be handled internaly.
This is done by implementing four glGet*v methods in GLEScontext, which
return a boolean value indicating whether we have set the return value
or not, and are called by the glGet*v functions in GLEScmImp.
Two of the glGets are handled by GLEScontext, and the other 15 by
GLEScmContext since they are specific to GLES 1.1. The same should be
done for 2.0 specific glGets in a later patch.
Also. bufferName is now saved in GLESPointer in to allow the
GL_*_ARRAY_BUFFER_BINDING get.
Our implementation of eglGetProcAddress() resolves the function addresses
in run time. Typically this is not an issue, but when a gl function is
also implemented by the calling app the address was resolved to the calling
app's version of the function rather than ours. This is the case with the
glDrawTex{isfx}OES functions in the 1.1 conformance test.
The solution is to add the -Bsymbolic switch when linking our libraries,
so all symbol resolution is done internaly.
The same fix should probably be done for Mac.
inserting some of the logic which was scattered over some parts
of the GLESContext class to be encpsulated inside the ConversionArrays
so that the code will be more clea and organized.
fix shader and program names in glDeleteShader/Program
fix object name manager to accept objects with name 0
fix unbinding of buffers,framebuffers and renderbuffers
separate getPointer to have specific implementation for gles 1 and 2
fix number of supported texture images to match GL
fix incorrect optimization that skips draw on false conditions
set its glFormat to GL_RGB since GL_RGB565_OES is not supported on the host.
This also fixes the wallpaper issue, making it visible.
Change-Id: Icf616e70d8f41ca0d01e7cdeb9585107dc8ebc31
fixed functions calling conventions in dispatch tables,
added link flag to translator libraries to produce an alias
function for all exported functions with stdcall name mangling.
Change-Id: I4360f26da1f897764ba6d4dd02c365ed00420b51