22 #include <platform.h> |
22 #include <platform.h> |
23 #include <assp.h> |
23 #include <assp.h> |
24 #include <kernel/kernel.h> |
24 #include <kernel/kernel.h> |
25 #include <e32cmn.h> |
25 #include <e32cmn.h> |
26 |
26 |
27 #include "devicereqhandler.h" |
27 #include <graphics/devicereqhandler.h> |
28 #include "virtualvideohwinterface.h" |
28 #include <graphics/virtualvideohwinterface.h> |
29 |
29 #include <graphics/virtualvideotracing.h> |
30 #include "virtualvideotracing.h" |
|
31 |
30 |
32 #include "remotefunctioncall.h" |
31 #include "remotefunctioncall.h" |
33 #include "serializedfunctioncall.h" |
32 #include "serializedfunctioncall.h" |
34 #include "driverrfc.h" |
33 #include "driverrfc.h" |
35 #include "openvgrfc.h" //For the opcodes |
34 #include "openvgrfc.h" //For the opcodes |
36 #include "eglrfc.h" //For the opcodes |
35 #include "eglrfc.h" //For the opcodes |
37 #include "opengles11rfc.h" //For the opcodes |
36 #include "opengles11rfc.h" //For the opcodes |
38 |
37 |
39 |
38 |
40 using namespace PlatsimVideoDriver; |
39 using namespace GuestVideoDriver; |
41 |
40 |
42 // LOCAL DATA TYPES |
41 // LOCAL DATA TYPES |
43 TInt CmpTPbsIds(const TPbSId& a, const TPbSId& b) |
42 TInt CmpTPbsIds(const TPbSId& a, const TPbSId& b) |
44 { |
43 { |
45 if( a.iPbuffer == b.iPbuffer ) |
44 if( a.iPbuffer == b.iPbuffer ) |
736 else |
735 else |
737 { |
736 { |
738 return;//No sgImage handle appended on the client side, just exit |
737 return;//No sgImage handle appended on the client side, just exit |
739 } |
738 } |
740 |
739 |
|
740 #ifdef FAISALMEMON_S4_SGIMAGE |
741 if( sgId != NULL ) |
741 if( sgId != NULL ) |
742 { |
742 { |
743 VVHW_TRACE( "DDeviceReqHandler::getVGSyncInOp SgImage-backing VGImage found" ); |
743 VVHW_TRACE( "DDeviceReqHandler::getVGSyncInOp SgImage-backing VGImage found" ); |
744 DSgResource* resource; |
744 DSgResource* resource; |
745 HBuf8* data = OpenSgImageMetaData( sgId, resource ); |
745 HBuf8* data = OpenSgImageMetaData( sgId, resource ); |
1001 TAsyncRequest* req(0); |
1002 TAsyncRequest* req(0); |
1002 TPckg<TUint32> res( iOpReturn ); |
1003 TPckg<TUint32> res( iOpReturn ); |
1003 EGLSurface surface(0); |
1004 EGLSurface surface(0); |
1004 VGImage image(0); |
1005 VGImage image(0); |
1005 |
1006 |
|
1007 #ifdef FAISALMEMON_S4_SGIMAGE |
1006 DSgResource* resource; |
1008 DSgResource* resource; |
1007 HBuf8* data = OpenSgImageMetaData( aId, resource ); |
1009 HBuf8* data = OpenSgImageMetaData( aId, resource ); |
1008 if( data ) |
1010 if( data ) |
1009 { |
1011 { |
1010 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1012 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1249 EGLint* handles; |
1253 EGLint* handles; |
1250 EGLint handles_size; |
1254 EGLint handles_size; |
1251 |
1255 |
1252 call.GetTUint64( id, 0 ); |
1256 call.GetTUint64( id, 0 ); |
1253 call.GetEGLintVectorData( handles, handles_size, 2 ); |
1257 call.GetEGLintVectorData( handles, handles_size, 2 ); |
|
1258 #ifdef FAISALMEMON_S4_SGIMAGE |
1254 DSgResource* resource; |
1259 DSgResource* resource; |
1255 VVHW_TRACE("EglRFC::EeglMetaSgGetHandles openSgImageMetaData" ); |
1260 VVHW_TRACE("EglRFC::EeglMetaSgGetHandles openSgImageMetaData" ); |
1256 HBuf8* data = OpenSgImageMetaData( id, resource ); |
1261 HBuf8* data = OpenSgImageMetaData( id, resource ); |
1257 if( data && handles_size >= 2 ) |
1262 if( data && handles_size >= 2 ) |
1258 { |
1263 { |
1292 TPbSId obj ( draw, 0 ); |
1298 TPbSId obj ( draw, 0 ); |
1293 |
1299 |
1294 TInt sgIdIndex = iPbufferSgMap.FindInOrder( obj, iPbufferSgMapOrder ); |
1300 TInt sgIdIndex = iPbufferSgMap.FindInOrder( obj, iPbufferSgMapOrder ); |
1295 if( sgIdIndex != KErrNotFound ) |
1301 if( sgIdIndex != KErrNotFound ) |
1296 { |
1302 { |
|
1303 #ifdef FAISALMEMON_S4_SGIMAGE |
1297 DSgResource* resource; |
1304 DSgResource* resource; |
1298 HBuf8* data = OpenSgImageMetaData( iPbufferSgMap[sgIdIndex].iSgId, resource ); |
1305 HBuf8* data = OpenSgImageMetaData( iPbufferSgMap[sgIdIndex].iSgId, resource ); |
1299 if( data ) |
1306 if( data ) |
1300 { |
1307 { |
1301 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1308 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1307 syncRequirement = syncRequirement | KSyncDrawSurface; |
1314 syncRequirement = syncRequirement | KSyncDrawSurface; |
1308 call.AppendEGLint( img ); |
1315 call.AppendEGLint( img ); |
1309 } |
1316 } |
1310 delete data; |
1317 delete data; |
1311 } |
1318 } |
|
1319 #endif |
1312 } |
1320 } |
1313 obj.iPbuffer = read; |
1321 obj.iPbuffer = read; |
1314 obj.iSgId = 0; |
1322 obj.iSgId = 0; |
1315 |
1323 |
1316 sgIdIndex = iPbufferSgMap.FindInOrder( obj, iPbufferSgMapOrder ); |
1324 sgIdIndex = iPbufferSgMap.FindInOrder( obj, iPbufferSgMapOrder ); |
1317 if( sgIdIndex != KErrNotFound ) |
1325 if( sgIdIndex != KErrNotFound ) |
1318 { |
1326 { |
|
1327 #ifdef FAISALMEMON_S4_SGIMAGE |
1319 DSgResource* resource; |
1328 DSgResource* resource; |
1320 HBuf8* data = OpenSgImageMetaData( iPbufferSgMap[sgIdIndex].iSgId, resource ); |
1329 HBuf8* data = OpenSgImageMetaData( iPbufferSgMap[sgIdIndex].iSgId, resource ); |
1321 if( data ) |
1330 if( data ) |
1322 { |
1331 { |
1323 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1332 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1328 //sync with the underlying pbuffer surface |
1337 //sync with the underlying pbuffer surface |
1329 syncRequirement = syncRequirement | KSyncReadSurface; |
1338 syncRequirement = syncRequirement | KSyncReadSurface; |
1330 } |
1339 } |
1331 delete data; |
1340 delete data; |
1332 } |
1341 } |
|
1342 #endif |
1333 } |
1343 } |
1334 call.AppendEGLint( syncRequirement ); |
1344 call.AppendEGLint( syncRequirement ); |
1335 call.AppendEGLint( img ); |
1345 call.AppendEGLint( img ); |
1336 |
1346 |
1337 VVHW_TRACE("eglMakeCurrent %u", iCurrClientData->iContext ); |
1347 VVHW_TRACE("eglMakeCurrent %u", iCurrClientData->iContext ); |
1348 |
1358 |
1349 TUint64 sgId; |
1359 TUint64 sgId; |
1350 EglRFC call( aReq->iRemoteFunctionCall ); |
1360 EglRFC call( aReq->iRemoteFunctionCall ); |
1351 call.GetTUint64( sgId, 0 );//get the sgImage id |
1361 call.GetTUint64( sgId, 0 );//get the sgImage id |
1352 |
1362 |
|
1363 #ifdef FAISALMEMON_S4_SGIMAGE |
1353 DSgResource* resource; |
1364 DSgResource* resource; |
1354 HBuf8* data = OpenSgImageMetaData( sgId, resource ); |
1365 HBuf8* data = OpenSgImageMetaData( sgId, resource ); |
1355 if( data ) |
1366 if( data ) |
1356 { |
1367 { |
1357 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |
1368 TSgImageMetaData sginfo (((TPckgBuf<TSgImageMetaData>*) data)->operator ()()); |