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()
|
||||
{
|
||||
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.
|
||||
uint32_t alignment = 1;
|
||||
|
||||
if (flags & ISurfaceComposer::eGPU) {
|
||||
if ((flags & ISurfaceComposer::eGPU) && (mFlinger->getGPU() != 0)) {
|
||||
// FIXME: this value should come from the h/w
|
||||
alignment = 8;
|
||||
// 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,
|
||||
gpu_info_t* gpu)
|
||||
{
|
||||
if (mGPU == 0)
|
||||
return INVALID_OPERATION;
|
||||
|
||||
IPCThreadState* ipc = IPCThreadState::self();
|
||||
const int pid = ipc->getCallingPid();
|
||||
status_t err = mGPU->request(pid, callback, gpu);
|
||||
@@ -249,6 +252,9 @@ status_t SurfaceFlinger::requestGPU(const sp<IGPUCallback>& callback,
|
||||
|
||||
status_t SurfaceFlinger::revokeGPU()
|
||||
{
|
||||
if (mGPU == 0)
|
||||
return INVALID_OPERATION;
|
||||
|
||||
return mGPU->friendlyRevoke();
|
||||
}
|
||||
|
||||
@@ -1600,10 +1606,14 @@ status_t SurfaceFlinger::onTransact(
|
||||
}
|
||||
return NO_ERROR;
|
||||
case 1005: // ask GPU revoke
|
||||
mGPU->friendlyRevoke();
|
||||
if (mGPU != 0) {
|
||||
mGPU->friendlyRevoke();
|
||||
}
|
||||
return NO_ERROR;
|
||||
case 1006: // revoke GPU
|
||||
mGPU->unconditionalRevoke();
|
||||
if (mGPU != 0) {
|
||||
mGPU->unconditionalRevoke();
|
||||
}
|
||||
return NO_ERROR;
|
||||
case 1007: // set mFreezeCount
|
||||
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
|
||||
if (!(flags & ISurfaceComposer::eSecure)) {
|
||||
// if GPU doesn't work, we try eHardware
|
||||
|
||||
Reference in New Issue
Block a user