Commit Graph

1194 Commits

Author SHA1 Message Date
Guy Zadickario
b9a5baf42b opengles emulator: code cleanup removing dead code
This change removes the 'blitFromPbuffer' path in the renderer
which uses binding pbuffer to texture. This path does not work
on all platforms and is not relavent any more. It simplifies
a lot the FBConfig filtering code.

Also, added a check to fail the renderer initialization if
the translator plugin does not support EGL_KHR_gl_texture_2d_image
and GL_OES_EGL_IMAGE (by both GLES implementations [1 and 2])
since our implementation requires it.

Change-Id: Ifd4c66943a8da56308cfb7e38914c962b4f5befe
2011-08-16 12:14:02 +03:00
Guy Zadickario
8c962dce6c opengles emulator: replace the readback at end of frame with blit
That replaces the readback to host we do at the end of each frame
with two blits on the GPU, one to copy the pixels into a texture
and another to render the texture to another in order to flip
the image.

Change-Id: I7e0e10493d38944d0b613e245023f34236d3dfc4
2011-08-16 10:52:19 +03:00
David Turner
d1e8a2e257 am 53aef614: am e8026df0: am e16a448d: Merge "emulator opengles: improve TcpStream throughput"
* commit '53aef61457167f1dae050a30df7ed7f49ac55cc3':
  emulator opengles: improve TcpStream throughput
2011-08-15 16:23:33 -07:00
David Turner
53aef61457 am e8026df0: am e16a448d: Merge "emulator opengles: improve TcpStream throughput"
* commit 'e8026df0df8a26cb75b7756079759c6973f6e40f':
  emulator opengles: improve TcpStream throughput
2011-08-15 16:21:30 -07:00
David Turner
3ae6928d8d emulator opengles: improve TcpStream throughput
This patch improves the performance of the TcpStream implementation
on the host by disabling the Nagle algorithm, thus improving the
bandwidth of small packets.

When used with the corresponding change in the emulator, this
significantly improves the speed of OpenGLES emulation for many
applications.

Change-Id: Ic09e51ecddf04bc7d667f46e1d260030d5fcad88
2011-08-16 00:55:43 +02:00
David Turner
a765188519 am b0892c55: am 698014ea: am 36371ff3: Merge "opengles emulator: do single display connection for all subwindow"
* commit 'b0892c5572c0f8547251d4932f32fcd1e24d3fc7':
  opengles emulator: do single display connection for all subwindow
2011-08-15 10:29:08 -07:00
David Turner
ab1ebd2fde am 0a4e10bb: am 57e03b4c: am ec926484: Merge "EGL translator : fix windows egl for handling device contexts"
* commit '0a4e10bb4920ab89670f7a65f8d87000cce452b4':
  EGL translator : fix windows egl for handling device contexts
2011-08-15 10:29:06 -07:00
David Turner
b0892c5572 am 698014ea: am 36371ff3: Merge "opengles emulator: do single display connection for all subwindow"
* commit '698014ea6faf5f3445fc10c97270e11a7afa50d1':
  opengles emulator: do single display connection for all subwindow
2011-08-15 10:25:51 -07:00
David Turner
0a4e10bb49 am 57e03b4c: am ec926484: Merge "EGL translator : fix windows egl for handling device contexts"
* commit '57e03b4cc5d2a29957d0749d6bb9baeaafb9eab6':
  EGL translator : fix windows egl for handling device contexts
2011-08-15 10:25:49 -07:00
Yochai Shefi Simchon
a6b033d19e opengles emulator: do single display connection for all subwindow
This is a workaround to a driver bug on Intel/Linux, when destroying
a subwindow do not close the X display connection, keep it for the
next call to createSubWindow. It happens that the intel/linux driver
caches the display connection for each window ID and use it during
swap or something similar. Using the same display connection for
all subwindows workaround the problem.

Also added a wait loop to wait until the window becomes mapped
instead of just calling XSync after calling XMapWindow. This
is more accurate and make sure we do not miss the first window
refresh.

Change-Id: I63c69d736df433666a8c79d71127afe72776e89f
2011-08-15 19:03:53 +02:00
Yochai Shefi Simchon
2a581c9cb2 EGL translator : fix windows egl for handling device contexts
on eglCreateContext the translator created a window for the
specified config with a matching pixelformat and saved it's
device context for future use.
however when the thread exited the window was destroyed by windows
and the handle saved became invalid.
the next call to wglCreateContext with the handle saved failed.

fixed the problem by creating windows per thread and not in a
global pool.
each thread will create its own window for each config when asked
the window will be destroyed when the thread exits.

Change-Id: I63668a20e8c30c42c4cfcaca664938683600b28e
2011-08-15 19:03:53 +02:00
David Turner
021cf0a639 am 72a716b4: am 7d644a74: am 0c245f6a: Merge "opengles emulator: do not publish support for setUpdateRect"
* commit '72a716b4d1b6980d9bd104010bca48eeba4a4ac2':
  opengles emulator: do not publish support for setUpdateRect
2011-08-15 10:00:28 -07:00
David Turner
d67ad7303c am dab1fb3b: am 0315d710: am 06039b1e: Merge "opengles emulator: call XInitThreads in emulator_test_renderer"
* commit 'dab1fb3b90b3570e761bf6b5b13a0e03ed1e0e18':
  opengles emulator: call XInitThreads in emulator_test_renderer
2011-08-15 10:00:24 -07:00
David Turner
72a716b4d1 am 7d644a74: am 0c245f6a: Merge "opengles emulator: do not publish support for setUpdateRect"
* commit '7d644a7468113c78a08725a817a518f8ddd5ae55':
  opengles emulator: do not publish support for setUpdateRect
2011-08-15 09:58:07 -07:00
David Turner
dab1fb3b90 am 0315d710: am 06039b1e: Merge "opengles emulator: call XInitThreads in emulator_test_renderer"
* commit '0315d710171f2453699ac97dd0359c05616f30b0':
  opengles emulator: call XInitThreads in emulator_test_renderer
2011-08-15 09:58:05 -07:00
Guy Zadickario
22bb339abb opengles emulator: do not publish support for setUpdateRect
our framebuffer implementation in gralloc does not support
setUpdateRect but we erronously publish as we do. Reset
the setUpdateRect so that flinger will not try to use it.

Change-Id: I2e4f2ef7e5701aed69caa194426945bafd5ac4c9
2011-08-15 16:46:57 +03:00
Guy Zadickario
bdfb71562c opengles emulator: call XInitThreads in emulator_test_renderer
Now that we are not running the renderer as a seperate process
we need to have the XInitThreads call we put in the renderer process
inside emulator_test_renderer since the render server runs inside that
thread.
NOTE FOR INTEGRATION: this will need to be added to the emulator as
well.

Change-Id: I70592ad976d08c86e2c9e75b11b6ad57d6067606
2011-08-15 16:46:57 +03:00
David Turner
738c2204c5 am 7dc8b4a7: am 3d9ae4e7: am caf8eafb: Merge "opengles emulator: support display rotation and resize"
* commit '7dc8b4a786d653174a3c40d9bd31eff57ce69502':
  opengles emulator: support display rotation and resize
2011-08-13 16:17:50 -07:00
David Turner
8422d79bf2 am 3167d2a9: am f8f0a7e9: am d33222df: Merge "opengles emulator: mac support binding context to pbuffer"
* commit '3167d2a9c777757fd458c8122aff92bf251d485f':
  opengles emulator: mac support binding context to pbuffer
2011-08-13 16:17:48 -07:00
David Turner
ec40e438e3 am 3d7e82c0: am b76d1f0a: am 255bdd3f: Merge "opengles emulator: fix shader parser precision qualifiers"
* commit '3d7e82c0c048e2a8662020aa78db0c21859deb6c':
  opengles emulator: fix shader parser precision qualifiers
2011-08-13 16:17:46 -07:00
David Turner
dc650add7b am 252e2903: am 7014f052: am dd7d29e0: Merge "opengles emulator: added FPS statistics printout"
* commit '252e29031d59ed6ff49e27844b1c0ed22ee676fd':
  opengles emulator: added FPS statistics printout
2011-08-13 16:17:43 -07:00
David Turner
290d012756 am 06703c04: am 70cac15e: am d2c5f503: Merge "opengles emulator: fix the uniform location WAR for intel platforms"
* commit '06703c0450f5c64aaaec0091f82a396dcd70c7c2':
  opengles emulator: fix the uniform location WAR for intel platforms
2011-08-13 16:17:41 -07:00
David Turner
9e31c9f36a am 6b7eecfb: am 1639334c: am f149b4f0: Merge "opengl emulator: fix windows build"
* commit '6b7eecfb46bc265579f299d347f8f89f85253d6d':
  opengl emulator: fix windows build
2011-08-13 16:17:38 -07:00
David Turner
814abdc428 am fe2bed33: am 34552f4c: am 584bcf8a: Merge "opengles emulator: fix shader/program info log functions"
* commit 'fe2bed335f3bb2db935b368a29978c142c7e6294':
  opengles emulator: fix shader/program info log functions
2011-08-13 16:17:33 -07:00
David Turner
7dc8b4a786 am 3d9ae4e7: am caf8eafb: Merge "opengles emulator: support display rotation and resize"
* commit '3d9ae4e7df9b43ac99f98344e9bd564673f81544':
  opengles emulator: support display rotation and resize
2011-08-13 16:14:12 -07:00
David Turner
3167d2a9c7 am f8f0a7e9: am d33222df: Merge "opengles emulator: mac support binding context to pbuffer"
* commit 'f8f0a7e93aa9c8b679e3f1ee50af681ff40daeff':
  opengles emulator: mac support binding context to pbuffer
2011-08-13 16:14:10 -07:00
David Turner
3d7e82c0c0 am b76d1f0a: am 255bdd3f: Merge "opengles emulator: fix shader parser precision qualifiers"
* commit 'b76d1f0a6b40d2f27e2120c89be04459944ea871':
  opengles emulator: fix shader parser precision qualifiers
2011-08-13 16:14:08 -07:00
David Turner
252e29031d am 7014f052: am dd7d29e0: Merge "opengles emulator: added FPS statistics printout"
* commit '7014f052514e30ff3531813b2ef0c816130ccf1f':
  opengles emulator: added FPS statistics printout
2011-08-13 16:14:06 -07:00
David Turner
06703c0450 am 70cac15e: am d2c5f503: Merge "opengles emulator: fix the uniform location WAR for intel platforms"
* commit '70cac15eacd3524d758bcb0dbd394772f2bbc5a0':
  opengles emulator: fix the uniform location WAR for intel platforms
2011-08-13 16:14:03 -07:00
David Turner
6b7eecfb46 am 1639334c: am f149b4f0: Merge "opengl emulator: fix windows build"
* commit '1639334c53cb51476d4fa07c50facfe75a001692':
  opengl emulator: fix windows build
2011-08-13 16:14:00 -07:00
David Turner
fe2bed335f am 34552f4c: am 584bcf8a: Merge "opengles emulator: fix shader/program info log functions"
* commit '34552f4cf8796a27666d7abbdaeff8a39a2bdbf3':
  opengles emulator: fix shader/program info log functions
2011-08-13 16:13:57 -07:00
Guy Zadickario
617416e693 opengles emulator: support display rotation and resize
Changes the render_api to support re-creating the display
sub-window and the ability to rotate the displayed framebuffer
image.
That currently works only when the renderer runs as a thread
and not as seperate process. Therefore we setup the library
to run the renderer as thread(s) inside the calling process
on *all* platforms for now.

Change-Id: Ifd009db903759042a7edcf89866d3c3fe076cae9
2011-08-11 17:36:20 +03:00
Guy Zadickario
9dcac079ce opengles emulator: mac support binding context to pbuffer
On Mac it happens that when a context is bound to a pbuffer
and you want to bind it to a window (NSView) instead you must
release it from the pbuffer before binding the window by calling
clearDrawable handle of NSOpenGLContext.
This change added an override of NSOpenGLContext in order to track
to which drawable type the context was previously bound and
call clearDrawable when necessary.

Change-Id: Iece5ab16a46aa0d107ccb773986a6b280d09d181
2011-08-11 17:36:20 +03:00
Yochai Shefi Simchon
f79a58ed62 opengles emulator: fix shader parser precision qualifiers
Workaround to intel/linux driver issue.

Desktop OpenGL does not support precision qulifiers in shaders,
so we remove them by defining "precision" "mediump" "lowp" and
"highp" to blank.
That translates the line "precision mediump float;" to "float;" which
is a valid command according to the GLSL spec however it fails
to compile using the intel/linux driver.

This change adds a parser which removes completely the
precision command from the shader source.

Change-Id: I29a16bb78ac0000d624aa2f83e93ef5c6ad60345
2011-08-11 17:36:20 +03:00
Guy Zadickario
13b3da879b opengles emulator: added FPS statistics printout
Make the renderer print FPS statistics every 1 second.
Need to set SHOW_FPS_STATS=1

Change-Id: I69e8c43a779e685ae0b34974d1ef33ad75e7a7e4
2011-08-11 17:36:13 +03:00
Guy Zadickario
7944edcdb2 opengles emulator: fix the uniform location WAR for intel platforms
Fixed the location shift WAR to work for arrays that starts at
location 0. Fixed conformance regressions made by this workaround.
The conversion should be smarter than just shifting 16-bits back
and forth, it should take into account if array element is being
accessed.

Change-Id: Icb746c67e16edfacb8264a1e687fd24ac6e868e7
2011-08-11 17:36:03 +03:00
Guy Zadickario
ea7f72a6c7 opengl emulator: fix windows build
That fixes the event injection code to build correctly on
Windows.
Also renamed SDL_{CFLAGS,LDFLAGS} used in the Android.mk
to have a LOCAL_ prefix.

Change-Id: Ie82838ffb931880e700322116c3190fbb754d889
2011-08-11 17:35:33 +03:00
Amit Feller
bc9d37e3c9 opengles emulator: fix shader/program info log functions
on some platforms info log length of programs and shaders was
not returned correctly, we now cache the info log for these objects
and calculate info log length intenrally to be both correct and
compliant to the spec and conformance tests.

Change-Id: I017932482ba36f9e2e1858fe372683f7ac3a98ca
2011-08-11 17:26:27 +03:00
David Turner
f9e27297b0 am bc034f45: am 8c8a6187: am 47dd884b: Merge "opengles emulator: Support current value for attribute 0"
* commit 'bc034f45231afc99edc57421b08d5a19070557ae':
  opengles emulator: Support current value for attribute 0
2011-08-10 12:27:24 -07:00
David Turner
f77540941c am 6d9eec7c: am 2f2f319d: am 1216e72a: Merge "opengles emulator: GLESv2: adding more params validation."
* commit '6d9eec7c269112fc73e8a52e972a535edf5643e4':
  opengles emulator: GLESv2: adding more params validation.
2011-08-10 12:27:22 -07:00
David Turner
f28c9f247c am 594c3cee: am 844c0987: am 364e9963: Merge "opengles emulator: check OES_standard_derivatives support"
* commit '594c3cee910ee9b8b22bb77f39f75937880352db':
  opengles emulator: check OES_standard_derivatives support
2011-08-10 12:27:20 -07:00
David Turner
9f2edbfe1e am 276f4f43: am 1a9ad005: am 0a931f55: Merge "opengles emulator: fix uniform name translation to apps"
* commit '276f4f432804ed50e966725cd6d98f8cdd5eba1c':
  opengles emulator: fix uniform name translation to apps
2011-08-10 12:27:18 -07:00
David Turner
eb3430cb7d am b035c43d: am 8bbc54f4: am d20186af: Merge "opengles emulator: GLES2 translator / codec"
* commit 'b035c43d42812687879e1617204dd78d848c36e5':
  opengles emulator: GLES2 translator / codec
2011-08-10 12:27:15 -07:00
David Turner
e2e7c680f8 am c4c77c0c: am ef1e9fa0: am 490bb2af: Merge "opengles emulator: GLES fix memory leaks"
* commit 'c4c77c0cde3dff3a3cb10f72b2ce108d0b53d33e':
  opengles emulator: GLES fix memory leaks
2011-08-10 12:27:13 -07:00
David Turner
6ad2537ebc am 4b05e065: am 0cc0cb10: am 90d4ce08: Merge "opengles emulator: support glEGLImageTargetRenderbufferStorageOES"
* commit '4b05e0654c8dacb87b6849c9a0c33afc7e1a7d3e':
  opengles emulator: support glEGLImageTargetRenderbufferStorageOES
2011-08-10 12:27:09 -07:00
David Turner
1e2415ee41 am cf7a50b2: am e594f31f: am f3bb27a7: Merge "opengles emulator: filter-out non-RGB configs"
* commit 'cf7a50b2d4aef3b7026854499789bdc90f7e8ed8':
  opengles emulator: filter-out non-RGB configs
2011-08-10 12:27:06 -07:00
David Turner
4f0a6794c1 am 52dc2b9e: am 3fa3021e: am fb8c84d8: Merge "opengles emulator: Workaround Cordy (Unity) bug with intel driver."
* commit '52dc2b9eba80316e678957de64b54818f75de0c8':
  opengles emulator: Workaround Cordy (Unity) bug with intel driver.
2011-08-10 12:27:03 -07:00
David Turner
e611df831a am 1b0a25ee: am 5d1dc7c9: am f7e07ec9: Merge "opengles emulator: make glFramebufferTexture2D work"
* commit '1b0a25eecf50c9930e8ce2656bd43e1ee7b7c006':
  opengles emulator: make glFramebufferTexture2D work
2011-08-10 12:26:57 -07:00
David Turner
d15c81b4a6 am dd37090d: am 54c1aa4f: am be19b0fd: Merge "opengles emulator: Separate FramebufferData to header and source files"
* commit 'dd37090d15ce2f4825b5bec04d96ac9ac6878853':
  opengles emulator: Separate FramebufferData to header and source files
2011-08-10 12:26:53 -07:00
David Turner
87e2f1e3f3 am a765e6e8: am b6a9f378: am 31978050: Merge "opengles emulator: GLESv2: glGetShaderPrecision"
* commit 'a765e6e8c0bac31cd646e9501f6582055efb1fee':
  opengles emulator: GLESv2: glGetShaderPrecision
2011-08-10 12:26:49 -07:00