Commit Graph

402 Commits

Author SHA1 Message Date
bohu
f8ac5e3178 back port gles fix to api 17
Following CLs are ported:

        717e625415c4398431b84851ba1b76d8c59ae9cf Add shader version to glGetString
        32c30975ea654b9654ad9dade0d25b9856e63f1b Add parameters validation to glShaderSource() API
        b0c7cce25bf9323a359800a86c0c7609db2acea4 Fix eglDestroyContext and glTexImage2D
        2fc65202c214640c55b52c29bbc9213170d0b533 handles glGetBooleanv when value is nonboolean
        beda8027439b9c20475b8a3d379823d09fca3abb Properly initialize GLClientState's m_states
        84684ec571a1db94e32a67cb7d154ab562dd0d7f Unbind buffer when buffer is deleted
        89b7aac84f8babab93ff5326ad492164d971c421 Handle empty data parameter in glTexSubImage2D_enc
        adb0f74f792ba7bca20257b9c0ea41ebda9bb229 Allow glGetProgramInfoLog_enc to have empty length
        b31166704ddb7751619cf0bbc4f2f4575c0ad3c4 Guard against negative buffer size
        641f35af08a0a4c46586a592ff4e703e866d581a Guard against negative width and height
        9d18698dd8da15937f80e5476d73400a011934be Handle empty buffer in QemuPipeStream::writeFully
        40a674e0d0acac87aa25eb9de720dc2fb07d9e4f Fix emulator crashes on glDrawElements command
        7fa2b92de2058a3556e5f38a135de415bb3d5e45 Merge "Use more appropriate type in cb_handle_t::validate."
        fe2c5beb964d2e2aecedb02b9cca592e0811d90b Use more appropriate type in cb_handle_t::validate.
        376688e76694bf5b8672379c540b1bda059da682 Merge "ranchu: Fix goldfish_pipe definitions."
        e3e686593cc8bdaf3ca4f6fa0b33b62a6951d1d6 ranchu: Fix goldfish_pipe definitions.
        7d3d0c99d2c82319e001289d1b9e091e5ff8f7aa Merge "ranchu: Add ARM64-specific root/ramdisk config files."
        d0fead3c53d6e450deb69aad72651e132b6cc072 ranchu: Add ARM64-specific root/ramdisk config files.
        638ee524f83053613c47ddea22c4bf98a0175c2f Merge "Remove display initialization from eglGetProcAddress API"
        7a2929cd6548693b581c17ba69308a49e03c56be Remove display initialization from eglGetProcAddress API
        9b1e6c5a3ccd943b7158dce83387fbfcc1162d69 Merge "Make the size of "cb_handle_t" same for 32/64-bit"
        7ea757df0311bfb7310a7a765dcec1b79f39f25d Merge "goldfish: camera: fix 64-bit warnings"
        3725c7c982eac52ec64a625e82f306822452941c goldfish: camera: fix 64-bit warnings
        eed789f036cbcedf2fa96ae3e273c2234102d340 Merge "goldfish: Fix /cache partition type."
        f55ac4fc027ae3d97f4faaa6ccd65480f493dea7 goldfish: Fix /cache partition type.
        690792a66c7fca6bf0aa17c2d5043ab86d145965 Merge "Revert "Revert "goldfish: cache image is not ext4. yet."""
        8853df9503e0edec6cac0e1e0840fa111d57a79a Revert "Revert "goldfish: cache image is not ext4. yet.""
        d8a6e67044ddcac7c53adbe6b871c33447110905 Merge "Revert "goldfish: cache image is not ext4. yet.""
        5e2caf7883279113d6f5f4777122dc88262c34c6 Revert "goldfish: cache image is not ext4. yet."
        3f62b50d45441ae077c958423e9e301acd5dcc11 Make the size of "cb_handle_t" same for 32/64-bit
        aec15d91ee48797f2b3c3fe61cca977900ebcd47 am 646f0b25: Merge "opengl: rcOpenColorBuffer must be synchronous"
        646f0b25e63164950d1d99b9b8021be74c2321c6 Merge "opengl: rcOpenColorBuffer must be synchronous"
        c542f3d8fc89678574b2fa650395f3dfac991a20 opengl: rcOpenColorBuffer must be synchronous
        6ccaeebd78dcb5e20e2c0e81cdc571fb74f9cfb7 am 2c6c08a2: Merge "Move goldfish from fdprintf to POSIX dprintf."
        2c6c08a23d2f5f760753745be5b67fe5759dcc91 Merge "Move goldfish from fdprintf to POSIX dprintf."
        0228f8a1cdf5b2391201333de73fabab6d2ca72f Move goldfish from fdprintf to POSIX dprintf.
        dbda557d4dcf022850ea4ab4f89e1c154e2aea04 am 5cb5779a: Merge "gralloc: don\'t initialize reserved_proc"
        5cb5779ad0ad75a59bfb8ce42317a4ee18300281 Merge "gralloc: don't initialize reserved_proc"
        e46eea0b5bdef28f5c42e4d7764b030679479354 gralloc: don't initialize reserved_proc
        67334d0b9d0da7595daf07a3e9bea6a55436e296 Merge commit 'd9dc763708823aa865983bb8dc37b5ecc5669620' into HEAD
        7076e4647af737393baf020c13e81a090f4a9f26 Merge "Add 64-bit software GLES/EGL support in gralloc.goldfish module"
        3f92be74c1e9b2314d4c0f8feaacf7bafce7dedc Add 64-bit software GLES/EGL support in gralloc.goldfish module
        61a8f0bbc146a4050a885e1e7c314dfc4ab72779 Merge "Fix the Chrome app crash in emulator issue"
        bd93fee73b02d0b223b441c34a4f8e04eb57291d Merge "Support GLES acceleration in 64bit emulator on device side"
        a1de8e2f5e4c29341be01bae364a54d92d14c742 Fix the Chrome app crash in emulator issue
        4f94a5f8b13a5fdd80988e77dd5d468b958b0117 Merge "Remove the useless folder and files in emulator GLES/EGL drivers"
        31aad5c0a0de056114b6bb843a5c37d8de6e46e4 Remove the useless folder and files in emulator GLES/EGL drivers
        aedc716648071a1403f4ac92a380d1d4a5377052 Support GLES acceleration in 64bit emulator on device side
        d9dc763708823aa865983bb8dc37b5ecc5669620 am aedf829a: Merge "goldfish: cache image is not ext4. yet."
        aedf829a920c3100de5caa49b0dec02d66eed96b Merge "goldfish: cache image is not ext4. yet."
        a2543be45f35ab7ace3ecd92c99a3c72150622ec goldfish: cache image is not ext4. yet.
        9dba558f4621d3d70a05c0a3d8e2c34b3883f866 am 48a76778: Merge "Remove #include <asm/page.h>."
        644f53c8705586705c27b799e5b5f303118e8b3c am 155ca91c: Merge topic \'emu64\'
        48a76778937abadf5cbd260696a29d737134d0d9 Merge "Remove #include <asm/page.h>."
        1daf365476f888a5d9534607c8299a3b5160b4a7 Remove #include <asm/page.h>.
        155ca91c1253bcb85a0eeec93ded6da07122d4ff Merge topic 'emu64'
        324a0c43835b935721c938a2684874e0b5bf8311 Disable echo on all tty lines
        8bb5f92dcd48dbbaa69ab15f97aca13d49b08599 ueventd.goldfish.rc: set system permissions for /dev/goldfish_pipe
        5b31b113176dec8d7fcfb5650f3dd7b01baf605c am 48107fa1: Merge "device/generic/goldfish: convert LOCAL_MODULE_PATH to LOCAL_MODULE_RELATIVE_PATH"
        48107fa1dd354f8667b74f335c3f82f472b7d112 Merge "device/generic/goldfish: convert LOCAL_MODULE_PATH to LOCAL_MODULE_RELATIVE_PATH"
        5212e4a903d2654572b8bdde0bda3bdd6ecbee6e device/generic/goldfish: convert LOCAL_MODULE_PATH to LOCAL_MODULE_RELATIVE_PATH
        2061519f3e55ba1dac643cac34a4aa6f0f0dfeee am 44c72ca0: Merge "Vibra: Add the vibrator module for goldfish"
        44c72ca0b92c75ffef5e691a24d5d06d6a3e7baa Merge "Vibra: Add the vibrator module for goldfish"
        0f41b57f2aa2ffa8fd90ebd50c13c2dd0249ee0f Vibra: Add the vibrator module for goldfish
        ac534df6c39944a91f157819628db3d6f63b75f1 am 59922432: Merge commit \'f09bc5256e48a44eec9ca47ba838c12d0e89a198\' into HEAD
        59922432be859a46eeb76650b24308505625da36 Merge commit 'f09bc5256e48a44eec9ca47ba838c12d0e89a198' into HEAD
        144d2d5d683928f393a9567c443c8f5af13dfdd0 am b9a62053: Merge commit \'828bd482a1aeacf96d5f3a3e0701029d9f890c5f\' into HEAD
        b9a62053cf74025a43c8baa118d52729e38cc176 Merge commit '828bd482a1aeacf96d5f3a3e0701029d9f890c5f' into HEAD
        a648b35cca58d3d1608e1beb21028f91bd0b9df7 am 2befc3ed: Merge "Modify the build targets for goldfish from to include aosp*."
        2befc3edc583afb43a4f6740f0af0534eac8e9d5 Merge "Modify the build targets for goldfish from to include aosp*."
        bc233492e3ce3af8cc23496ee58cd3dc1b74d0f0 Modify the build targets for goldfish from to include aosp*.
        f09bc5256e48a44eec9ca47ba838c12d0e89a198 am b9a7de1a: Merge "Delete buffer data when removing it from the SharedGroup namespace"
        b9a7de1a690bc638496e0550e6a9ebe859fc0315 Merge "Delete buffer data when removing it from the SharedGroup namespace"
        8562d1b6e089254837da3ab2d272c65c3bb5d8c7 Delete buffer data when removing it from the SharedGroup namespace
        f8b99f123467cd6164d071237f5dbe703f9ea2d7 am 6b151ca8: Merge "Catch divide by zero case in drawCheckerBoard() function."
        6b151ca8833aa7271e311436dad97588b71b7a38 Merge "Catch divide by zero case in drawCheckerBoard() function."
        d7cc5da79d828ec6cb21926be13265fc52715e2f am 84309165: Merge "Drop setting of in_qemu boolean and restorecon /sys/qemu_trace."
        84309165ca52b7446e388c13127fd6e305833f24 Merge "Drop setting of in_qemu boolean and restorecon /sys/qemu_trace."
        46bcb5f7a64ccd440d5a292c7afd2e2b5c2bee4f Drop setting of in_qemu boolean and restorecon /sys/qemu_trace.
        b0b6afb44269263afa080ecc643f2c4866adfb38 Catch divide by zero case in drawCheckerBoard() function.
        828bd482a1aeacf96d5f3a3e0701029d9f890c5f am 2524d396: Update emulator to FUSE-wrap its SD card.
        2524d39681566f4eca7afb7950e05ab642978263 Update emulator to FUSE-wrap its SD card.
        e8122dff1ef2de4d41835265a59d8960e7800fae camera3: Fix stream id types
        3ad13188d4e7e873947040ec22a35d73efb76812 Camera2/3: Implement full-color NV21 output.
        a4c19be9274d8bb993f88a6a1cbd2ad92f4a48fa Merge "Added net.dns1 prop for emulator, as Android emulator ignores it by default."
        ccb835ba267e927f7df759290bd46ac78712a3b2 Merge "Camera2/3: Update static metadata"
        0049ee8925212a3a5ff095a8a66cab184adf8f1b Camera2/3: Update static metadata
        8ff1e5f1e3e24baf311e6263b48f389c206f14ac am 8f9288ea: goldfish: use fstab.goldfish
        8f9288eaf10b50d19038f5c7024616e147c64735 goldfish: use fstab.goldfish
        e96a7c7da79939c509a7517f2b2de37e840a6390 Added net.dns1 prop for emulator, as Android emulator ignores it by default.
        ff3a362fb9aca15285a95cad6baa08e961330e8e am bf34d172: (-s ours) Reconcile with jb-mr2-zeroday-release - do not merge
        bf34d1722ea1ebdf779837611220b5269bd35968 Reconcile with jb-mr2-zeroday-release - do not merge
        d9fcbd08b0413fedc8219237534ce31d6b7fd2f5 merge in jb-mr2-zeroday-release history after reset to jb-mr2-dev
        ad9dd4bfdfa9ab6ccfc4be14305b6ed8b9a0ab5a am 2c84e47e: am 07a4c8b4: Camera3: Fix default AE mode
        2c84e47e3d0085b1222de94013c75c0328b02492 am 07a4c8b4: Camera3: Fix default AE mode

Change-Id: I3902e73cf96f9d64d56d939dce2673ad5710f6cb
2015-02-03 17:42:11 -08:00
Eino-Ville Talvala
18f28c0c21 Revert "Revert "Gralloc: Support HW_CAMERA_READ/HW_CAMERA_ZSL usage.""
Missing project ready to go.

This reverts commit 9642da5102

Change-Id: I08a43e9cdcb06bd6b74fd08809bbaf801c2eb44f
2012-09-04 14:21:19 -07:00
Eino-Ville Talvala
9642da5102 Revert "Gralloc: Support HW_CAMERA_READ/HW_CAMERA_ZSL usage."
More dependent projects than I realized

This reverts commit a84522d2f3

Change-Id: Ifb50c94a2a5dfa91573f07695d8f3bfcadc79742
2012-09-04 12:27:04 -07:00
Eino-Ville Talvala
a84522d2f3 Gralloc: Support HW_CAMERA_READ/HW_CAMERA_ZSL usage.
This is needed for passing buffers to the camera HAL for reprocessing.

Bug: 6243944

Change-Id: Ibf8d15aead571ddb3b62674cf7afe0d508ca24e7
2012-09-04 09:23:17 -07:00
Eino-Ville Talvala
33c3f77760 EmulatedFakeCamera2: Use HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED
Stop using CAMERA2_HAL_PIXEL_FORMAT_OPAQUE.

Bug: 6243944
Change-Id: I96ea30228b126b4eed560a760269cb50bbbb62f7
2012-08-28 14:39:59 -07:00
Eino-Ville Talvala
61649d232c Emulator gralloc: Fix RAW_SENSOR conditions.
Allow RAW_SENSOR to be used for any combination of CPU read/write and
Camera read/write, instead of only camera->cpu or cpu->camera.

Change-Id: I032b9531e9069a202c1a3767b77975c808703285
2012-08-20 11:05:01 -07:00
Eino-Ville Talvala
34a4d2d519 Emulator gralloc: Support YV12
Bug: 6243944
Change-Id: I5f416ab0ae15143df422c0f79d91841984b4fabe
2012-08-20 09:13:48 -07:00
Eino-Ville Talvala
4d57cb8d65 gralloc: Add automatic format selection. DO NOT MERGE
Have gralloc_alloc be able to select the appropriate pixel format
given the endpoints, triggered by new
GRALLOC_EMULATOR_PIXEL_FORMAT_AUTO format.

Currently supports camera->screen, and camera->video encoder.

Bug: 6243944
Change-Id: Ib1bf8da8d9184ac99e7f50aad09212c146c32809
2012-07-26 10:03:05 -07:00
Eino-Ville Talvala
3461561ccf gralloc: Support HAL_PIXEL_FORMAT_YCrCb_420_SP (NV21)
This is needed for Camera HAL2 video recording.

Bug: 6243944
Change-Id: I47a3e65117881612fb95068a80f811cc8378fbc6
2012-07-11 17:21:18 -07:00
Jesse Hall
e705cdde0d Update to renamed ANativeWindow methods
A few ANativeWindow methods were updatd to take a Sync HAL file
descriptor, and the existing methods were renamed with a _DEPRECATED
suffix. Since the emulator graphics acceleration doesn't yet support
the sync HAL, this change continues calling the deprecated functions
via their new names.

Change-Id: I5b1760811fafb6723ede887e32e63f94cbaeffe5
2012-06-21 23:16:56 -07:00
Eino-Ville Talvala
2a2ada537a Emulator gralloc: Support HAL_PIXEL_FORMAT_BLOB
Bug: 6243944
Change-Id: I2864bc59be9df8741639a291c71e2f65dde5bc0b
2012-06-13 12:08:18 -07:00
Jesse Hall
56513f5ff4 Move emugl system code to development.git
Because of the way the SDK and Android system images are branched,
host code that goes into the SDK tools can't live in the same
repository as code that goes into the system image. This change keeps
the emugl host code in sdk.git/emulator/opengl while moving the emugl
system code to development.git/tools/emulator/opengl.

A few changes were made beyond simply cloning the directories:

(a) Makefiles were modified to only build the relevant components. Not
    doing so would break the build due to having multiple rule
    definitions.

(b) Protocol spec files were moved from the guest encoder directories
    to the host decoder directories. The decoder must support older
    versions of the protocol, but not newer versions, so it makes
    sense to keep the latest version of the protocol spec with the
    decoder.

(c) Along with that, the encoder is now built from checked in
    generated encoder source rather than directly from the protocol
    spec.  The generated code must be updated manually. This makes it
    possible to freeze the system encoder version without freezing the
    host decoder version, and also makes it very obvious when a
    protocol changes is happening that will require special
    backwards-compatibility support in the decoder/renderer.

(d) Host-only and system-only code were removed from the repository
    where they aren't used.

(e) README and DESIGN documents were updated to reflect this split.

No actual source code was changed due to the above.

Change-Id: I2c936101ea0405b372750d36ba0f01e84d719c43
2012-06-06 09:46:29 -07:00
Jesse Hall
80d4ba7716 Move emulator GLES from development.git to sdk.git
The emulator GLES support has two interfaces: a host shared library
interface used by QEMU, and a protocol between the platform and the
host. The host library interface is not versioned; QEMU and the GLES
renderer must match. The protocol on the other hand must be backwards
compatible: a new GLES renderer must support an older platform image.

Thus for branching purposes it makes more sense to put the GLES
renderer in sdk.git, which is branched along with qemu.git for SDK
releases. Platform images will be built against the protocol version
in the platform branch of sdk.git.

Change-Id: Ie73fce12815c9740e27d0f56caa53c6ceb3d30cc
2012-04-18 06:26:17 -07:00
Xavier Ducrohet
40525ef472 Move stuff from prebuilt to prebuilts/tools
Also move some atree copy to sdk.git where they belong.

Change-Id: Iab62343806917f24f47d15b9dea75e44422d8764
2012-04-03 16:33:35 -07:00
Jesse Hall
db9e12c671 am 71aa2fca: Merge "EmuGL: Deliver every frame to a callback"
* commit '71aa2fcac1cd1e5d59c210b5dd332ca4aefba530':
  EmuGL: Deliver every frame to a callback
2012-03-26 18:27:10 -07:00
Jesse Hall
d5882467c1 EmuGL: Deliver every frame to a callback
To enable multi-touch on a tethered device, allow a callback to be
registered with the OpenGL renderer. On every frame, the framebuffer
is read into system memory and provided to the callback, so it can be
mirrored to the device.

This change is co-dependent on Idae3b026d52ed8dd666cbcdc3f3af80175c90ad3
in external/qemu.

Change-Id: I03c49bc55ed9e66ffb59462333181f77e7e46035
2012-03-22 18:19:00 -07:00
Andrew Hsieh
9e3e95f65f am 76780669: Added rules to build 64-bit libraries for 64-bit emulator
* commit '76780669f9867587693563358ccdc903e9cdcbba':
  Added rules to build 64-bit libraries for 64-bit emulator
2012-03-22 13:27:43 -07:00
Jean-Baptiste Queru
40b67a0eb0 Merge 8aafafe4
Change-Id: I41f097b5b96c4d000b1748b9e0411497d323556a
2012-03-22 12:57:54 -07:00
Andrew Hsieh
76780669f9 Added rules to build 64-bit libraries for 64-bit emulator
All ten libraries can now be built in 64-bit named "lib64*" (*)
in addition to the original 32-bit form named "lib*".

Also, dlopen "lib64*so" in 64-bit.

(*) eg. In Ubuntu, all can be built with the following command:
  make out/host/linux-x86/lib/lib64OpenglRender.so \
       out/host/linux-x86/lib/lib64EGL_translator.so \
       out/host/linux-x86/lib/lib64GLES_CM_translator.so \
       out/host/linux-x86/lib/lib64GLES_V2_translator.so

Rules to build static libraries lib64log.a, lib64cutils.a and lib64utils.a
they depend were added in other CLs.

Change-Id: I3afb64de6dda1d55dbd1b4443d2dbc78a683b19f
2012-03-22 12:36:45 -07:00
Andrew Hsieh
8aafafe4bd Fixed crash and 64-bit porting issues
1. "emugen" generates four *dec.cpp files containing code like this
   to decode offset to pointer in stream

   tmp = *(T *)(ptr + 8 + 4 + 4 + 4 + *(size_t *)(ptr +8 + 4 + 4));

   If *dec.cpp are compiled in 64-bit, size_t is 8-byte and dereferencing of
   it is likley to get wild offset for dereferencing of *(T *) to crash the
   code.  Solution is to define tsize_t for "target size_t" instead
   of using host size_t.

2. Cast pointer to "uintptr_t" instead of "unsigned int" for 2nd param of
   ShareGroup::getGlobalName(NamedObjectType, ObjectLocalName/*64bit*/).
3. Instance of EGLSurface, EGLContext and EGLImageKHR are used as 32-bit
   key for std::map< unsigned int, * > SurfacesHndlMap, ContextsHndlMap,
   and ImagesHndlMap, respectively.  Cast pointer to uintptr_t and assert
   upper 32-bit is zero before passing to map::find().
4. Instance of GLeglImageOES is used to eglAttachEGLImage() which expect
   "unsigned int".  Cast it to uintptr_t and assert upper 32-bit is zero.
5. The 5th param to GLEScontext::setPointer is GLvoid* but contains 32-bit
   offset to vbo if bufferName exists.  Cast it to uintptr_t and assert
   upper 32-bit is zero.
6. Use %zu instead of %d to print size_t
7. Cast pointer to (uintptr_t) in many other places

Change-Id: Iba6e5bda08c43376db5b011e9d781481ee1f5a12
2012-03-22 11:10:31 -07:00
Jesse Hall
cbd446a98a am 9322c5cb: Work around a y-invert bug on Macs w/ Intel GPU
* commit '9322c5cb2524c4f35408768ee3d1b8030f0360f9':
  Work around a y-invert bug on Macs w/ Intel GPU
2012-03-07 11:17:46 -08:00
Jesse Hall
1f4f50c7d2 am 767d0894: Delete dead code.
* commit '767d08948790527e9df951a752703938ff517d30':
  Delete dead code.
2012-03-07 11:17:45 -08:00
Jesse Hall
9322c5cb25 Work around a y-invert bug on Macs w/ Intel GPU
On Macs running OS X 10.6 and 10.7 with Intel HD Graphics 3000, some
screens or parts of the screen are displayed upside down. The exact
conditions/sequence that triggers this aren't known yet; I haven't
been able to reproduce it in a standalone test. This also means I
don't know whether it is a driver bug, or a bug in the OpenglRender or
Translator code that just happens to work elsewhere.

Thanks to zhiyuan.li@intel.com for a patch this change is based on.

Change-Id: I04823773818d3b587a6951be48e70b03804b33d0
2012-03-07 10:06:57 -08:00
Jesse Hall
767d089487 Delete dead code.
Change-Id: I5b87fac4e2140a903221a1f68b16fa6a96e5effc
2012-03-07 10:06:37 -08:00
Jesse Hall
124d18041b am 7ef79e49: EmuGL: don\'t [de]queue buffers in eglMakeCurrent
* commit '7ef79e49c7e8f1ecf19a92114f41de39d102a3e8':
  EmuGL: don't [de]queue buffers in eglMakeCurrent
2012-02-27 13:55:39 -08:00
Jesse Hall
9e016ede09 am cbc7300c: EmuGL: enable SurfaceTexture async mode
* commit 'cbc7300cb209a4fd3b250546c72c35b7bb0aa8a1':
  EmuGL: enable SurfaceTexture async mode
2012-02-27 13:55:37 -08:00
Jesse Hall
7ef79e49c7 EmuGL: don't [de]queue buffers in eglMakeCurrent
Whenever a surface was attached to a context, it was dequeing a new
buffer, and enqueing it when detached. This has the effect of doing a
SwapBuffers on detach/attach cycle, which is just wrong and
occasionally caused visible glitches (e.g. animations going backwards
for one frame). It also broke some SurfaceTexture tests which
(validly) depend on specific buffer production/consumption counts.

Change-Id: Ibd4761e8842871b79fd9edf52272900193cb672d
2012-02-24 15:54:59 -08:00
Jesse Hall
cbc7300cb2 EmuGL: enable SurfaceTexture async mode
Pass the swap interval from eglSwapInterval to the native window so it
can enable/disable SurfaceTexture's async mode. Fixes the deadlock in
SurfaceTextureGLToGLTest.EglDestroySurfaceUnrefsBuffers.

Change-Id: I19bf69247341f5617223722df63d6c7f8cf389c6
2012-02-24 15:54:58 -08:00
Jesse Hall
9cb15c9e81 am 8bd39ae1: Merge "EmuGL: GLESv2 support for OES_EGL_image_external" into ics-mr1
* commit '8bd39ae17caac6d275d785ce9420d7e643f15eb9':
  EmuGL: GLESv2 support for OES_EGL_image_external
2012-02-24 12:08:38 -08:00
Jesse Hall
d6bd1843ce EmuGL: GLESv2 support for OES_EGL_image_external
Change-Id: I8911328d5dcccdf4731bd2d8fd953c12fdec5f1b
2012-02-22 15:03:30 -08:00
Jesse Hall
66a386e33a am 00e61338: EmuGL: refinements to GLESv1 image_external
* commit '00e61338b8374de090e81537047846ca06f88280':
  EmuGL: refinements to GLESv1 image_external
2012-02-22 13:47:27 -08:00
Jesse Hall
144e1b5998 am ac018fe3: EmuGL: refcount ColorBuffers on the host
* commit 'ac018fe3f65e18083a2dd317f73e4139bfa5fee6':
  EmuGL: refcount ColorBuffers on the host
2012-02-22 13:45:42 -08:00
Jesse Hall
fc7a319e5c am 91d4e8e1: GLESv2 translator: don\'t delete EGLImage textures
* commit '91d4e8e195592dbc812441597118452f887ea07d':
  GLESv2 translator: don't delete EGLImage textures
2012-02-22 10:11:31 -08:00
Jesse Hall
00e61338b8 EmuGL: refinements to GLESv1 image_external
* EGLImageTargetRenderbufferStorageOES was incorrectly accepting
  TEXTURE_EXTERNAL_OES as a target. Revert that; the host GL will
  correctly reject it with INVALID_ENUM.

* Handle the REQUIRED_TEXTURE_IMAGE_UNITS_OES texparameter query.

* Validate texture parameters set on TEXTURE_EXTERNAL textures;
  otherwise invalid parameters would work on the emulator but not on a
  real device.

Change-Id: I49a088608d58a9822f33e5916bd354eee3709127
2012-02-21 11:13:20 -08:00
Jesse Hall
ac018fe3f6 EmuGL: refcount ColorBuffers on the host
The gralloc API assumes system-wide reference counting of gralloc
buffers. The host-GL accelerated gralloc maps buffers to host-side
ColorBuffer objects, but was destroying them unconditionally in
gralloc_free(), ignoring any additional references from
gralloc_register_buffer().

This affected the SurfaceTexture gralloc buffers used by the
Browser/WebView. For some reason these buffers are actually allocated
by SurfaceFlinger and passed back to the WebView through Binder. But
since SurfaceFlinger doesn't actually need the buffer for anything,
sometime after the WebView has called gralloc_register_buffer()
SurfaceFlinger calls gralloc_free() on it. This caused the host
ColorBuffer to be destroyed long before the WebView is done using it.

Change-Id: I33dbee887a48a6907041cf19e9f38a1f6c983eff
2012-02-21 11:13:20 -08:00
Jesse Hall
91d4e8e195 GLESv2 translator: don't delete EGLImage textures
Copy changes faaf1553cf and
f37a7ed6c5 from the GLESv1 translator to
the GLESv2 translator. After this, both translators use the same logic
for glEGLImageTargetTexture2DOES().

Change-Id: I0a95bf2301df7b7428abc593f38170edf4cbda30
2012-02-21 11:13:19 -08:00
Jesse Hall
1276f7ba04 am 0e981c83: EmuGL: Fix heap corruption
* commit '0e981c83041878e6a05b0a996879160fd0f320cf':
  EmuGL: Fix heap corruption
2012-02-06 13:36:19 -08:00
Jesse Hall
0e981c8304 EmuGL: Fix heap corruption
Off-by-two bug when removing textures from the tracking array could
overwrite malloc's mem chunk data structure, usually resulting in a
heap corruption abort on a later malloc/realloc/free.

Bug: 5951738
Change-Id: I11056bb62883373c2a3403f53899347ff8cdabf2
2012-02-03 22:54:24 -08:00
Jesse Hall
9b19d582d9 am 4f66a14d: Merge "EmuGL: handle NULL data in glBufferData" into ics-mr1
* commit '4f66a14d5311ee94d5a498c8e0049f6b95d4d0d6':
  EmuGL: handle NULL data in glBufferData
2012-01-11 17:12:09 -08:00
Jesse Hall
5bad48a65e EmuGL: handle NULL data in glBufferData
The data pointer argument to glBufferData can be NULL; this
[re]allocates the buffer while leaving the contents undefined.

Bug: 5833436

Change-Id: Ia1ddf62e2cd2c59d3d631e01d23d7c557ca5a52e
2012-01-11 15:40:29 -08:00
Jesse Hall
d23522e614 am f0baef2f: Merge "EmuGL: misc small cleanups" into ics-mr1
* commit 'f0baef2fed555e87a0910e5aab6b8b763487b350':
  EmuGL: misc small cleanups
2012-01-09 15:53:49 -08:00
Jesse Hall
19b03e4ef1 am 409c49c5: Merge "EmuGL: fix GL view position in window on OS X" into ics-mr1
* commit '409c49c526508b5fa36f8bc6edc1fc70cba5a3e1':
  EmuGL: fix GL view position in window on OS X
2012-01-09 15:53:48 -08:00
Jesse Hall
f0baef2fed Merge "EmuGL: misc small cleanups" into ics-mr1 2012-01-09 15:52:15 -08:00
Jesse Hall
a592d9c043 EmuGL: misc small cleanups
* Disable verbose debug spam.
* Add missing GL enum to utility function. The default case was
  returning the correct size, so this doesn't fix any bugs, just
  removes some logcat spam.
* Comment and whitespace corrections.

Change-Id: I83fb8644331ae1072d6a8dae9c041da92073089f
2012-01-05 10:50:01 -08:00
Jesse Hall
a4fb8a60b1 EmuGL: fix GL view position in window on OS X
The code that creates the GL-accelerated screen view wasn't converting
the upper-left-relative coordinates used within the emulator to the
lower-left coordinates used by the Cocoa APIs on OS X. Since most
skins have the screen view centered vertically this often just
happened to work.

Bug: 5782118
Change-Id: I2f96ee181e850df5676d10a82d86c94421149b40
2012-01-04 15:03:39 -08:00
Al Sutton
87879839f1 Fix build on MacOS 10.7 / XCode 4
Ensure the dynamic library library gets linked in with SDL
to fix compilation errors

Change-Id: I32e6929088eaf73d707e89d10392c658b58ec465
2011-12-21 13:21:32 -08:00
Jesse Hall
5d721ef6a1 am b0a30e43: EmuGL: remove broken EGL buffer refcounting
* commit 'b0a30e43889415a9a40b9519392ad3be295b9465':
  EmuGL: remove broken EGL buffer refcounting
2011-12-12 15:23:59 -08:00
Jesse Hall
b0a30e4388 EmuGL: remove broken EGL buffer refcounting
The emulator EGL implementation tried to hold its own reference to
buffers acquired/released with dequeueBuffer/queueBuffer, but was
missing an incRef after dequeueBuffer during swapBuffers.

Since the native window holds a reference to the buffer between
dequeueBuffer and queueBuffer, the EGL reference isn't needed anyway.

Change-Id: I95e4f9f4faf59198f99939cdca6603fe176c56bc
2011-12-12 14:05:16 -08:00
Jesse Hall
c08eaec1e2 am 96cd9c31: Merge "EmuGL: capture VBO contents in GL2Encoder" into ics-mr0
* commit '96cd9c3130b6215534e863b94637b384da8102c9':
  EmuGL: capture VBO contents in GL2Encoder
2011-12-01 14:37:51 -08:00
Jesse Hall
7906431d04 EmuGL: capture VBO contents in GL2Encoder
The glBufferData, glBufferSubData, and glDeleteBuffers entry points
had interception routines in GL2Encoder which cache the data, but they
weren't hooked up. So when glDrawElements tried to retrieve the cached
data it wasn't there.

Change-Id: Iaed11fccaefab3186485be53a0f15c8ca0a255f9
2011-12-01 12:01:27 -08:00