Commit Graph

965 Commits

Author SHA1 Message Date
David Turner
727031e782 am ef4edab5: am 0e5889df: Merge "opengl translator: extending ConversionArrays class"
* commit 'ef4edab5c53249ea8fc672964f01c30957da357a':
  opengl translator: extending ConversionArrays class
2011-07-06 07:43:27 -07:00
David Turner
c98872ce59 am d1018f5d: am 0e475161: Merge "opengl translator: add vertex attrib index validation."
* commit 'd1018f5df87a12c00c0bf35a28ce676c4b5efeca':
  opengl translator: add vertex attrib index validation.
2011-07-06 07:43:18 -07:00
David Turner
dd3be656a6 am 9573e370: am 8d2dc2a4: Merge "opengl translator: conformance fixes"
* commit '9573e370c1399159f6249fc307180c842578d5b1':
  opengl translator: conformance fixes
2011-07-06 07:43:09 -07:00
David Turner
284b80b607 am 28ea64ef: am 617c7a18: Merge "validateing client\'s arrays type"
* commit '28ea64ef29a6a0359e346fd01189d1d646a0d2fe':
  validateing client's arrays type
2011-07-06 07:42:59 -07:00
David Turner
29dd65725b am fe6ef5a1: am b4cbe3de: Merge "opengl translator: supporting GL_BYTE type"
* commit 'fe6ef5a10e1bf0d003e529a870f2973b38cb7dc9':
  opengl translator: supporting GL_BYTE type
2011-07-06 07:42:49 -07:00
Guy Zadickario
3db2bcf7e5 opengl translator: fixed normalized vertex attribs
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
2011-07-04 22:30:58 +03:00
Amit Feller
223a949d1d opengl Translator: adding type EGLNativeSurfaceType
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
2011-07-03 15:40:52 +03:00
Amit Feller
cdc5179b90 EGL translator: fixes shared context on windows
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.
2011-07-03 15:40:52 +03:00
Amit Feller
15680c5e69 OpenGL renderer: handling subwindow messages
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.
2011-07-03 15:40:52 +03:00
Amit Feller
4672adab3f fixing bug of shadowing a variable 2011-07-03 15:40:52 +03:00
Guy Zadickario
b68a421908 opengl renderer: Enable and fix renderer Mac support
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.
2011-07-03 15:40:52 +03:00
Guy Zadickario
25f01dda07 opengl translator: Mac fixes for unbind context
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.
2011-07-03 15:35:12 +03:00
Liran
c3fb532e9a GLES2 translator:
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
2011-07-03 15:35:12 +03:00
Liran
2782c5a061 System egl: fix eglInitialize
fix eglInitialize to accept NULL in major/minor parameters
2011-07-03 15:35:12 +03:00
Stas Gurtovoy
304a1c21ca opengles Translator: Omit precision macros from shaders
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.
2011-07-03 15:35:11 +03:00
Stas Gurtovoy
440eb6e594 opengles host: some order in host gl debugging
Removed some debug prints in translator.
Added (remarked) options to enable gl debugging in decodes/renderer
2011-07-03 15:28:01 +03:00
Stas Gurtovoy
5d355b71c5 opengles emulator: Init eglError to EGL_SUCCESS 2011-07-03 15:28:01 +03:00
Liran
8fa554f35b egl translator
fix infinite loop in egl translator
2011-07-03 15:28:01 +03:00
Liran
ccc72aa1bb add gles includes to the translator
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.
2011-07-03 15:28:00 +03:00
Liran
74871cf4f1 Translator GLES2: fix glGetShaderSource
fix glGetShaderSource to return the currect string
2011-07-03 15:21:48 +03:00
Yochai Shefi Simchon
5ec953deef Make sure RGB_565 config is available to emulator
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.
2011-07-03 15:21:48 +03:00
Stas Gurtovoy
170eb97393 opengles renderer: added CHECK_GL_ERROR defie for gl debugging
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.
2011-07-03 15:21:48 +03:00
Stas Gurtovoy
3034c35701 opengles Translator: sort conformant configs first
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.
2011-07-03 15:21:48 +03:00
Amit Feller
1d3f5f58ce opengl renderer: create rendering subwindow
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.
2011-07-03 15:14:59 +03:00
Amit Feller
31580f42b1 opengl renderer: windows runtime fix
Need to initialize networking by calling WSAStartup
in the renderer process.
2011-07-03 15:14:59 +03:00
Amit Feller
950192dbe3 opengl translator: EGL Windows bug fix
Fixed bug caused the creation of context
without setting it's pixel format.
Also removing unnecessary printfs.
2011-07-03 15:14:59 +03:00
Amit Feller
6adfa495ba opengl translator: fixing 2 Windows EGL issues:
- runtime segfaults
- pbuffer creation
2011-07-03 15:14:58 +03:00
Yochai Shefi Simchon
03d0055dc9 1.1 Translator: fix conversion of compressed textures
There were several bugs in the code converting palleted textures into
RGB/RGBA - fixed.
2011-07-03 15:08:42 +03:00
Yochai Shefi Simchon
747b20cf9d 1.1 Translator: fix drawing of GL_POINT_SIZE_ARRAY
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.
2011-07-03 15:03:25 +03:00
Yochai Shefi Simchon
0b5684abbd 1.1 Translator: fix bug in glDeleteTexture
When glDeleteTexture is called for the currently bound texture,
binding should be reset to 0.
Also, calling glDeleteTexture on 0 should do nothing.
2011-07-03 15:03:25 +03:00
Yochai Shefi Simchon
fbae5aacb0 1.1 Translaotr: handle glGet(POINT_SIZE_ARRAY)
Should be handled internaly, like all other ARRAY queries.
2011-07-03 15:03:25 +03:00
Yochai Shefi Simchon
2da542b598 1.1 Translator conformance: fix texture issues
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).
2011-07-03 14:56:13 +03:00
Stas Gurtovoy
635e929c44 opengl translator: fixed glGetString(GL_EXTENSIONS) for GLESv2
fixed query of GL_EXTENSIONS in glesv2.
Also fixed EGL surface desruction when there is
no current context.
2011-07-03 14:56:13 +03:00
Yochai Shefi Simchon
d18e93ba4c Translator 1.1 conformance: fix ARRAY related gets
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.
2011-07-03 14:56:13 +03:00
Yochai Shefi Simchon
b241f904f0 Translator: fix eglGetProcAddress() on Linux
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.
2011-07-03 14:56:12 +03:00
Yochai Shefi Simchon
83132ab0a2 Translator 1.1 - fix glGetPointer
getPointer is implemented both in GLEScmContext and its parent GLEScontext,
but was not declared virtual amd hence didn't work.
2011-07-03 14:52:28 +03:00
Yochai Shefi Simchon
6a40d94db4 Fix segfault when destroying context
m_texCoords was not initialized in the GLEScontext constructor, so when
destructing it resulted in an illegal free.
2011-07-03 14:47:12 +03:00
Yochai Shefi Simchon
03da50800f glDrawTex- GL_INVALID_VALUE if width/height <= 0 2011-07-03 14:47:12 +03:00
Amit Feller
772de2edde opengl translator: extending ConversionArrays class
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.
2011-07-03 14:47:12 +03:00
Liran
166f3cb3c6 opengl translator: add vertex attrib index validation.
Fixed conformance test issue.
2011-07-03 14:32:43 +03:00
Liran
3c15de2f2e opengl translator: conformance fixes
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
2011-07-03 14:32:43 +03:00
Amit Feller
61d845731a validateing client's arrays type 2011-07-03 14:32:43 +03:00
Amit Feller
2ca84fb34a opengl translator: supporting GL_BYTE type
support GL_BYTE in glvertexpointer & glTexCoordPointer,
Desktop OpenGL does not support GL_BYTE in those calls
so we convert the data into GL_SHORT.
2011-07-03 14:32:43 +03:00
David Turner
eefe47e28f am 08bc92ed: am 78250d2b: am b97e9575: Merge "emulotor gralloc: fixed HAL_PIXEL_FORMAT_RGB_565"
* commit '08bc92ed621e875a6e4a0657801570519245b000':
  emulotor gralloc: fixed HAL_PIXEL_FORMAT_RGB_565
2011-07-01 11:48:29 -07:00
David Turner
d88a5e1dcb am c35b6f72: am 5a757de2: am 23839223: Merge "emulator gralloc: Make the cb_handle_t::validate static"
* commit 'c35b6f7225b300653b1e6dd1972b3346fc35f62a':
  emulator gralloc: Make the cb_handle_t::validate static
2011-07-01 11:48:27 -07:00
David Turner
3cad231cde am 737db05f: am b62e461e: am 580a5748: Merge " opengl translator: Fix windows runtime problems"
* commit '737db05fe4317d6ec1c4c4498479adeecd8671c4':
  opengl translator: Fix windows runtime problems
2011-07-01 11:48:25 -07:00
David Turner
45522ddf6f am 99acb819: am fbfb73b4: am 0c074ddb: Merge "Setting Renderer default libs to use translator libs"
* commit '99acb819bf42cc202022743cf53992abca9fce2b':
  Setting Renderer default libs to use translator libs
2011-07-01 11:48:23 -07:00
David Turner
bbc92965b8 am 94d4f55f: am 0c06eaf3: am ebc56952: Merge "emulator opengl: fix windows build"
* commit '94d4f55f1c0a1fea067100ec2867429173de30b6':
  emulator opengl: fix windows build
2011-07-01 11:48:20 -07:00
David Turner
32a97ed7f0 am c6f4edf3: am 391237dd: am 89a74292: Merge "emulator GLESv2: fixed (#16) NenaMark crashes on exit"
* commit 'c6f4edf37e651366dde7804460fc7c8abfca6662':
  emulator GLESv2: fixed (#16) NenaMark crashes on exit
2011-07-01 11:48:17 -07:00
David Turner
235f3008a7 am 3206de39: am a42a3deb: am ece2077b: Merge "emulator opengl: add GLESv2 support to driver + renderer"
* commit '3206de396dde02a6fe44b808e699123532516227':
  emulator opengl: add GLESv2 support to driver + renderer
2011-07-01 11:48:13 -07:00