Merge change 626 into donut
* changes: fix 1803886 android15 Translucent GLSurfaceView demo does not display properly
This commit is contained in:
@@ -573,7 +573,11 @@ void GPUHardware::binderDied(const wp<IBinder>& who)
|
|||||||
|
|
||||||
sp<GPUHardwareInterface> GPUFactory::getGPU()
|
sp<GPUHardwareInterface> GPUFactory::getGPU()
|
||||||
{
|
{
|
||||||
return new GPUHardware();
|
sp<GPUHardwareInterface> gpu;
|
||||||
|
if (access("/dev/hw3d", F_OK) == 0) {
|
||||||
|
gpu = new GPUHardware();
|
||||||
|
}
|
||||||
|
return gpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ status_t Layer::setBuffers( Client* client,
|
|||||||
// we always force a 4-byte aligned bpr.
|
// we always force a 4-byte aligned bpr.
|
||||||
uint32_t alignment = 1;
|
uint32_t alignment = 1;
|
||||||
|
|
||||||
if (flags & ISurfaceComposer::eGPU) {
|
if ((flags & ISurfaceComposer::eGPU) && (mFlinger->getGPU() != 0)) {
|
||||||
// FIXME: this value should come from the h/w
|
// FIXME: this value should come from the h/w
|
||||||
alignment = 8;
|
alignment = 8;
|
||||||
// FIXME: this is msm7201A specific, as its GPU only supports
|
// FIXME: this is msm7201A specific, as its GPU only supports
|
||||||
|
|||||||
@@ -241,6 +241,9 @@ sp<IMemory> SurfaceFlinger::getCblk() const
|
|||||||
status_t SurfaceFlinger::requestGPU(const sp<IGPUCallback>& callback,
|
status_t SurfaceFlinger::requestGPU(const sp<IGPUCallback>& callback,
|
||||||
gpu_info_t* gpu)
|
gpu_info_t* gpu)
|
||||||
{
|
{
|
||||||
|
if (mGPU == 0)
|
||||||
|
return INVALID_OPERATION;
|
||||||
|
|
||||||
IPCThreadState* ipc = IPCThreadState::self();
|
IPCThreadState* ipc = IPCThreadState::self();
|
||||||
const int pid = ipc->getCallingPid();
|
const int pid = ipc->getCallingPid();
|
||||||
status_t err = mGPU->request(pid, callback, gpu);
|
status_t err = mGPU->request(pid, callback, gpu);
|
||||||
@@ -249,6 +252,9 @@ status_t SurfaceFlinger::requestGPU(const sp<IGPUCallback>& callback,
|
|||||||
|
|
||||||
status_t SurfaceFlinger::revokeGPU()
|
status_t SurfaceFlinger::revokeGPU()
|
||||||
{
|
{
|
||||||
|
if (mGPU == 0)
|
||||||
|
return INVALID_OPERATION;
|
||||||
|
|
||||||
return mGPU->friendlyRevoke();
|
return mGPU->friendlyRevoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1600,10 +1606,14 @@ status_t SurfaceFlinger::onTransact(
|
|||||||
}
|
}
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
case 1005: // ask GPU revoke
|
case 1005: // ask GPU revoke
|
||||||
mGPU->friendlyRevoke();
|
if (mGPU != 0) {
|
||||||
|
mGPU->friendlyRevoke();
|
||||||
|
}
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
case 1006: // revoke GPU
|
case 1006: // revoke GPU
|
||||||
mGPU->unconditionalRevoke();
|
if (mGPU != 0) {
|
||||||
|
mGPU->unconditionalRevoke();
|
||||||
|
}
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
case 1007: // set mFreezeCount
|
case 1007: // set mFreezeCount
|
||||||
mFreezeCount = data.readInt32();
|
mFreezeCount = data.readInt32();
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ sp<MemoryDealer> SurfaceHeapManager::createHeap(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & ISurfaceComposer::eGPU) {
|
if ((flags & ISurfaceComposer::eGPU) && (mFlinger->getGPU() != 0)) {
|
||||||
// FIXME: this is msm7201A specific, where gpu surfaces may not be secure
|
// FIXME: this is msm7201A specific, where gpu surfaces may not be secure
|
||||||
if (!(flags & ISurfaceComposer::eSecure)) {
|
if (!(flags & ISurfaceComposer::eSecure)) {
|
||||||
// if GPU doesn't work, we try eHardware
|
// if GPU doesn't work, we try eHardware
|
||||||
|
|||||||
Reference in New Issue
Block a user