Commit Graph

965 Commits

Author SHA1 Message Date
David 'Digit' Turner
0db6e8dd27 Merge "emulator: opengl: Support named pipes on Win32" 2011-09-13 07:32:29 -07:00
David 'Digit' Turner
b065016640 Merge "emulator: opengl: Add support for unix sockets." 2011-09-13 07:02:38 -07:00
David 'Digit' Turner
bde30e7480 Merge "emulator: opengl: re-enable gralloc builds" 2011-09-13 06:20:29 -07:00
David 'Digit' Turner
3abd13d4d6 emulator: opengl: Support named pipes on Win32
This patch adds support for Win32 named pipes for the communication
channel between the Opengl renderer library and its clients.

Named pipes should be much faster than local TCP sockets on this
platform. Note that by default, TCP sockets are still used. The
emulator needs to call setStreamMode(STREAM_MODE_PIPE) to be able
to use these.

Change-Id: I86d36624cf2b7fdd50f41e1e43c908348dca4657
2011-09-13 14:04:49 +02:00
David 'Digit' Turner
3d76ec1e3c emulator: opengl: Add support for unix sockets.
This patch allows the OpenGLES rendering library to use Unix
sockets instead of TCP ones when communicating with its clients.
On certain benchmarks (e.g. 0xBench teapot), this provides a
noticeable improvement (x1.05 fps) without any other changes.

On practice, Unix sockets are faster than TCP sockets, even
local ones. Also, this introduces a moderate amount of
abstraction that will allow us to use Win32 named pipes
on Windows (where TCP sockets are much slower than they
are on Unix).

Note that by default, TCP streams are still used.
The client (emulator) must call the new API 'setStreamMode'
to change it to STREAM_MODE_UNIX between 'initLibrary' and
'startOpenglRenderer' calls.

+ Adjust callers / user appropriately.

Change-Id: I4105bbf07541f3146b50a58d1a5b51e8cf044fab
2011-09-13 14:03:32 +02:00
David 'Digit' Turner
3598af3850 emulator: opengl: add missing pthread_mutex_destroy
Change-Id: Ib6be00619e06f5ff492a080d1feb2954b626fa26
2011-09-13 14:02:37 +02:00
David 'Digit' Turner
c308bfc05f emulator: opengl: re-enable gralloc builds
This re-enables the build of the gralloc GLES emulation library.

This is only for experimentation / debugging purpose. GLES emulation
is still disabled by default in the emulator. Even if you force-enable
it by using the '-gpu on' flag, this module will not properly yet
and nothing will be displayed.

Change-Id: I8f0ca8805ed99037b011365d08507ca08bff5e75
2011-09-13 13:59:53 +02:00
Vladimir Chtchetkine
b97c2f0b59 Fake camera implementation
The code submitted here builds a camera.goldfish.so module that encapsulates a camera HAL.

The major components of the camera HAL implementation are:
* Generic HAL module implemented in emulated_camera_hal.cpp There is nothing much
  to it: just exporting the required HAL header.
* EmulatedCameraFactory class that manages emulated cameras, and provides handling for
  camera_module_methods_ methods. There is only one object of this class, that is statically
  instantiated when camera.goldfish.so module is loaded.
* EmulatedCamera class that implements camera_device_ops_t API. Objects of this class are
  instantiated during EmulatedCameraFactory construction, and they interact with objects
  of EmulatedCameraDevice class to get frames.
* EmulatedCameraDevice class encapsulates an actual camera device. Objects of this class
  are contained in EmulatedCameraDevice objects, and interact with them as required by the
  API.

The fake camera implementation is shared between EmulatedFakeCamera, and EmulatedFakeCameraDevice
classes. They are pretty light. In fact, EmulatedFakeCamera is nothing more than just a
placeholder for EmulatedFakeCameraDevice instance, and EmulatedFakeCameraDevice does nothing
more, than just drawing a checker board with a bouncing square.

Other components / routines are minor: helpers, wrappers, etc. The code is heavily commented,
so there will be plenty of explanations between the lines.

Change-Id: I4463e14c255c6e3b1dcca17bed5f4efde32d9879
2011-09-12 08:37:48 -07:00
David 'Digit' Turner
1cb2c5455c emulator: opengl: Fix egl.cfg tsdefinition
This fixes the definition of the emulator-specific egl.cfg file
used to indicate to our EGL system library which support modules
are available in the emulator.

We need to list two modules here:

  'emulation' corresponding to GPU emulation
  'android' corresponding to the software renderer

The indices before each name correspond to the 'display' and 'impl'
numbers that are expected by frameworks/base/opengl/libs/EGL/Loader.cpp

In a nutshell, 'display' should always be 0, and 'impl' should be 0
for the software renderer, and 1 for a hardware-based one. See the code
under framewors/base/opengl/libs/EGL/egl.cpp for mode details.

Change-Id: I52c898759200c2dfba9049ed00b31b18e8c37f69
2011-09-02 15:26:14 +02:00
David 'Digit' Turner
1479a6cb84 am 7cd5aeb7: am dda2e51a: am 6ba16ba7: Merge "emulator: opengl: add initLibrary function to render library"
* commit '7cd5aeb7c7a109712a660c89d50fb67d35471081':
  emulator: opengl: add initLibrary function to render library
2011-08-30 09:50:49 -07:00
David 'Digit' Turner
b61218ba1b am 1ff9d194: am b6114c7b: am 7cb797f1: Merge "emulator: opengl: use bilinear filtering"
* commit '1ff9d194e3f252a03555edd90702a368a10e50cc':
  emulator: opengl: use bilinear filtering
2011-08-30 09:50:46 -07:00
David 'Digit' Turner
7cd5aeb7c7 am dda2e51a: am 6ba16ba7: Merge "emulator: opengl: add initLibrary function to render library"
* commit 'dda2e51a15ddfc44b34ec3c35e68f3bc1cfb5786':
  emulator: opengl: add initLibrary function to render library
2011-08-29 18:01:01 -07:00
David 'Digit' Turner
1ff9d194e3 am b6114c7b: am 7cb797f1: Merge "emulator: opengl: use bilinear filtering"
* commit 'b6114c7b66744729b8e0e9142e8b07eba41637d5':
  emulator: opengl: use bilinear filtering
2011-08-29 18:00:56 -07:00
David 'Digit' Turner
34fa5630b7 emulator: opengl: Fix the emulator-specific builds.
The gralloc.goldfish module cannot build in master because
the gralloc interface evolved considerably since gingerbread
(which the current code is based on).

For now, disable it completely, this will make it impossible
to test GPU emulation in the internal master tree for now.

We'll have to port this module to the new world-order to solve
this.

Change-Id: I864217f9c41fd1234f0df497005499800af879e5
2011-08-29 22:20:37 +02:00
David 'Digit' Turner
ec4c093361 am 84e83659: am 13cd2cd4: am 56eca4e0: Merge "emulator: opengl: fix the build"
* commit '84e836590e5fb655c7fd1f49613a4ae9cd2fa963':
  emulator: opengl: fix the build
2011-08-29 11:05:17 -07:00
David 'Digit' Turner
8ef53760d5 am 2276a468: am 846dd223: am dbe3b024: Merge "emulator: opengl: fallback gralloc module"
* commit '2276a468202750d743848810675e62a63ace67bb':
  emulator: opengl: fallback gralloc module
2011-08-29 11:05:10 -07:00
David 'Digit' Turner
c6d73d7af4 am d960239d: am 43946da5: am 7f45e7c1: Merge "emulator: oops, really fix the build"
* commit 'd960239de6371c2368792c6cc75de6d59abe172c':
  emulator: oops, really fix the build
2011-08-29 11:05:01 -07:00
David 'Digit' Turner
bce8ca33d0 am fec153a7: am 9765cb8a: am 2a59fa7d: Merge "emulator: fix the build"
* commit 'fec153a765edf051f3b97610c748d1ab9526cbfa':
  emulator: fix the build
2011-08-29 11:04:57 -07:00
David 'Digit' Turner
6ba16ba752 Merge "emulator: opengl: add initLibrary function to render library" 2011-08-29 08:01:42 -07:00
David 'Digit' Turner
5d1e8b2f28 emulator: opengl: add initLibrary function to render library
This adds an initLibrary() function to libOpenglRender.

It will be used by the emulator to fallback on software rendering
if the library cannot be initialized properly, e.g. if it is not
possible to load the host EGL/GLES libraries.

Change-Id: I41e8ad73a315166e4a15cbee1db72c2552370f46
2011-08-29 16:57:38 +02:00
David 'Digit' Turner
7cb797f1fd Merge "emulator: opengl: use bilinear filtering" 2011-08-29 06:55:32 -07:00
David 'Digit' Turner
84e836590e am 13cd2cd4: am 56eca4e0: Merge "emulator: opengl: fix the build"
* commit '13cd2cd4f57ce3e005f8d5c150c0cd3c4daf386d':
  emulator: opengl: fix the build
2011-08-26 12:12:56 -07:00
David 'Digit' Turner
2276a46820 am 846dd223: am dbe3b024: Merge "emulator: opengl: fallback gralloc module"
* commit '846dd22375f3db7308fa676e9730757ec1e6c028':
  emulator: opengl: fallback gralloc module
2011-08-26 12:12:52 -07:00
David 'Digit' Turner
2dfb7b549f emulator: opengl: fix the build
Change-Id: Ia20d15b63a059ed5d86c9087b827bdfa32c41c86
2011-08-26 18:17:13 +02:00
David 'Digit' Turner
91572d15eb emulator: opengl: use bilinear filtering
This patch changes the filter used to scale the GL window
in the rendering library. Instead of nearest-neighbour, use
bi-linear, which will provide for much more pleasant results
when scaling the emulator UI window, or toggling to full-screen
mode.

Change-Id: If2d9e1300fa4878c25e1221eaedb565b9150431a
2011-08-26 17:31:58 +02:00
David 'Digit' Turner
783cc1bb53 emulator: opengl: fallback gralloc module
This patch modifies the gralloc.goldfish module to check
that the emulator does, indeed, support GPU emulation.

If this is not the case, it loads the framebuffer-based fallback
module (gralloc.default) explicitely and uses it instead.

This is necessary because sometimes the emulator will be started
in headless mode in restricted environment, i.e. without access
to the display subsystem or GL libraries, which make GPU emulation
impossible.

We check for ro.kernel.qemu.gles which will be either undefined
or set to 0 if the emulator doesn't support GPU emulation, or 1
otherwise.

Change-Id: Ib6b143e6dcdfb44ff2c5b889138d0fb4118bb461
2011-08-26 17:31:58 +02:00
David 'Digit' Turner
d960239de6 am 43946da5: am 7f45e7c1: Merge "emulator: oops, really fix the build"
* commit '43946da54d3dc8d840c5e39c8eaf2f46ece57518':
  emulator: oops, really fix the build
2011-08-25 14:30:12 -07:00
David 'Digit' Turner
fec153a765 am 9765cb8a: am 2a59fa7d: Merge "emulator: fix the build"
* commit '9765cb8a7f29dacc615d2357d04ee5412c3e888d':
  emulator: fix the build
2011-08-25 14:30:08 -07:00
David 'Digit' Turner
20d5b0a857 emulator: oops, really fix the build
Change-Id: Id8de1b6a069cdc462681cf44bf8ebd84bbd1e6f0
2011-08-25 22:14:29 +02:00
David 'Digit' Turner
8b55909388 emulator: fix the build
Change-Id: Id88f488d441f04b10de3bca8ffe5c37763c4e98e
2011-08-25 22:00:55 +02:00
David 'Digit' Turner
2746a34082 am c0a719b8: am c6623763: am f29ee346: Merge "emulator: opengl: Open libGL.dylib as a framework on Mac"
* commit 'c0a719b864071df069859ef595271020b960a99a':
  emulator: opengl: Open libGL.dylib as a framework on Mac
2011-08-25 05:58:38 -07:00
David 'Digit' Turner
c0a719b864 am c6623763: am f29ee346: Merge "emulator: opengl: Open libGL.dylib as a framework on Mac"
* commit 'c6623763231c35b738863f5429ddf11c1af3a0be':
  emulator: opengl: Open libGL.dylib as a framework on Mac
2011-08-25 05:56:45 -07:00
David 'Digit' Turner
3f88bea9a8 emulator: opengl: Open libGL.dylib as a framework on Mac
This patch modifies GLDispatch.cpp in the translator libraries
to open the Darwin GL library as a framework. Using a hard-coded
system path prevents the requirement to modify LD_LIBRARY_PATH
or DYLD_LIBRARY_PATH to point to the directory that contains the
library.

In this specific case, this is equivalent to

/System/Frameworks/OpenGL.framework/Libraries/libGL.dylib

But is the "kosher" way to open it the library.

Change-Id: Iccd6568d36fc97200617c268f05d7b4ea85f918e
2011-08-25 14:40:43 +02:00
David 'Digit' Turner
58df39a591 am 93ee57e6: am 3490b1c2: am b69f4871: Merge "emulator: opengl: remove debug traces."
* commit '93ee57e6786ff406a01161f7a07d9103d4856e48':
  emulator: opengl: remove debug traces.
2011-08-24 09:27:56 -07:00
David 'Digit' Turner
64483553ef am 614d39c2: am f66bbde9: am 95f517bf: Merge "emulator: opengl: Make host decoder libraries static"
* commit '614d39c2f75db3f25ce55a876948c91591f8bf1d':
  emulator: opengl: Make host decoder libraries static
2011-08-24 09:27:54 -07:00
David 'Digit' Turner
0705808814 am efd0415c: am b492a89f: am 476ff38f: Merge "emulator: opengl: build gralloc driver by default"
* commit 'efd0415cf81ddf8c276af1553ded3756e71c53bf':
  emulator: opengl: build gralloc driver by default
2011-08-24 09:27:51 -07:00
David 'Digit' Turner
4ff832cc41 am e0a093ec: am e526f515: am 6d241caf: Merge "emulator: opengl: support moved shared libraries."
* commit 'e0a093ec5b527b3f5455fc54b59e96bd9cc88188':
  emulator: opengl: support moved shared libraries.
2011-08-24 09:27:49 -07:00
David 'Digit' Turner
9eb39ab27f am 6479d059: am 4a6acc04: am d8079c1e: Merge "emulator: opengl: Avoid conflicts with SDL_CONFIG"
* commit '6479d059feb638a7230379621fdd54b86eee5951':
  emulator: opengl: Avoid conflicts with SDL_CONFIG
2011-08-24 09:27:46 -07:00
David 'Digit' Turner
96fafad0ca am b0e1f794: am 011acd64: am d98b3782: Merge "emulator: opengl: fix Windows build"
* commit 'b0e1f794c08f09e4e3f30a00ca686d02a838a020':
  emulator: opengl: fix Windows build
2011-08-24 09:27:43 -07:00
David 'Digit' Turner
eaaa559011 am 827619fc: am d9e0cdfd: am 69f7c472: Merge "Remove obsolete comments"
* commit '827619fc57402c2fbc974e3c2a5da60a3819bf51':
  Remove obsolete comments
2011-08-24 09:27:38 -07:00
David 'Digit' Turner
93ee57e678 am 3490b1c2: am b69f4871: Merge "emulator: opengl: remove debug traces."
* commit '3490b1c2e45f72114d3ac78b35854573e2cbe6de':
  emulator: opengl: remove debug traces.
2011-08-24 09:23:38 -07:00
David 'Digit' Turner
614d39c2f7 am f66bbde9: am 95f517bf: Merge "emulator: opengl: Make host decoder libraries static"
* commit 'f66bbde91de9ff4a9ea87bb16133393fc1027bd7':
  emulator: opengl: Make host decoder libraries static
2011-08-24 09:23:36 -07:00
David 'Digit' Turner
efd0415cf8 am b492a89f: am 476ff38f: Merge "emulator: opengl: build gralloc driver by default"
* commit 'b492a89f00dcea382fc238eb85f5ce3ce4262039':
  emulator: opengl: build gralloc driver by default
2011-08-24 09:23:34 -07:00
David 'Digit' Turner
e0a093ec5b am e526f515: am 6d241caf: Merge "emulator: opengl: support moved shared libraries."
* commit 'e526f515d4615ca2d97fde5aa945f8f60a148089':
  emulator: opengl: support moved shared libraries.
2011-08-24 09:23:31 -07:00
David 'Digit' Turner
6479d059fe am 4a6acc04: am d8079c1e: Merge "emulator: opengl: Avoid conflicts with SDL_CONFIG"
* commit '4a6acc04ca6982114a24c85cc1220bc216d4d867':
  emulator: opengl: Avoid conflicts with SDL_CONFIG
2011-08-24 09:23:28 -07:00
David 'Digit' Turner
b0e1f794c0 am 011acd64: am d98b3782: Merge "emulator: opengl: fix Windows build"
* commit '011acd64edd3d484c0705c426b8d2d3b69f3f997':
  emulator: opengl: fix Windows build
2011-08-24 09:23:25 -07:00
David 'Digit' Turner
827619fc57 am d9e0cdfd: am 69f7c472: Merge "Remove obsolete comments"
* commit 'd9e0cdfda9988f2f45ded4c2c590b8f61c4d9335':
  Remove obsolete comments
2011-08-24 09:23:21 -07:00
David 'Digit' Turner
47cbdfb291 emulator: opengl: remove debug traces.
You can still re-enable them by uncommenting one line in
development/tools/emulator/opengl/Android.mk

Change-Id: Ie0a640b6f3359b437aba40b124da0892defb00ef
2011-08-24 16:06:21 +02:00
David 'Digit' Turner
cecb6a0e36 emulator: opengl: Make host decoder libraries static
These libraries are only used by libOpenglRender, so make them
static so that their code is included in this shared library
instead. This reduces the shared library dependencies that
will be required from the emulator.

Change-Id: I24438932f0d6b40852b515140ea6950c04124fdd
2011-08-24 16:06:21 +02:00
David 'Digit' Turner
6efe381c82 emulator: opengl: build gralloc driver by default
This patch forces the default definition of BUILD_EMULATOR_OPENGL_DRIVER
to true by default, which is the common case where we will build the
goldfish-specific gralloc hardware module to allow SurfaceFlinger to
use GLES emulation exclusively.

The only reason to define thi to 'false' today is to debug specific
apps, but this requires displaying the GL output in a different window
than the emulator to be usable.

Change-Id: Iaf03a9c780449bb6b991928d324a088021a73203
2011-08-24 16:06:21 +02:00