Intel® Graphics Performance Analyzers (Intel® GPA)
Improve your game's performance by quickly specifying problem areas
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
532 Discussions

Speed issue with sending I2C data using IGCL and CUI SDK under HDMI

WeiZaicheng
Beginner
1,012 Views

Hi,

I'm using Intel's IGCL and CUI SDK and I'm having a few issues, so I'm asking for help.

1. Should I use IGFX_GET_SET_AUX_INFO_GUID or IGFX_GET_SET_BUS_INFO_GUID when using the CUI SDK to connect to HDMI to send data?

I use a logic analyzer to capture packets and find that when I use IGFX_GET_SET_AUX_INFO_GUID, an unknown 8-bit byte data will appear in front of the packet, causing the data to be abnormal, but the speed of sending data using the IGFX_GET_SET_BUS_INFO_GUID is very slow.

IGFX_BUS_INFO busInfo = { 0 };
busInfo.dwDeviceUID = UIDofActiveDisplay;
busInfo.dwOpType = IGFX_BUS_SET;
busInfo.dwSize = iLen;
busInfo.dwAddress = uSlaveAddr;
busInfo.dwSubAddress = uSubAddress;
busInfo.dwFlags = IGFX_BUS_USE_INDEXING;
busInfo.byBusType = IGFX_BUS_I2C;
hr = pCUIExternal8->SetDeviceData((GUID*)&IGFX_GET_SET_BUS_INFO_GUID, dwsize, (BYTE*)&busInfo, &dwError);

2. When using IGCL, I followed the example on GitHub, connected HDMI to send data, and found that the speed was slow, and the same size packet took several times longer than Nvidia and AMD.

ctl_i2c_access_args_t I2CArgs = { 0 };
I2CArgs.Size = sizeof(ctl_i2c_access_args_t);
I2CArgs.OpType = CTL_OPERATION_TYPE_WRITE;
I2CArgs.Address = uSlaveAddr;
I2CArgs.Offset = uOffset;
I2CArgs.DataSize = iLen;
I2CArgs.Flags = CTL_I2C_FLAG_ATOMICI2C | CTL_I2C_FLAG_SPEED_FAST;
ctl_result_t Result = ctlI2CAccess((ctl_display_output_handle_t)UIDofActiveDisplay, &I2CArgs);

 Looking forward to the reply, good luck!

0 Kudos
1 Solution
sentientSpark_Intel
256 Views

Hi WeiZaicheng,

 

Thank you for your post and I apologize for the late reply. 

This forum is for support regarding the now discontinued Intel Graphics Performance Analyzer tools. You might have better luck getting support by filing issues directly here: https://github.com/intel/drivers.gpu.control-library/issues, as IGCL / CUI SDK developers and users do not frequent this forum.  

 

I have asked the IGCL team about your question, and received the following feedback:

If you don't have a specific requirement to use CUI SDK, then we would suggest you use IGCL API as it supersedes CUI SDK. There is no Intel platform where both IGCL and CUI SDK will be supported for end user applications.

Regarding the IGCL parameters used for I2C transactions, unless you are trying to read/write MCCS registers or want to ensure synchronization, we would recommend using I2CArgs.Flags =  CTL_I2C_FLAG_SPEED_FAST;Or you can skip setting this flag entirely. 

Setting  I2CArgs.Flags = CTL_I2C_FLAG_ATOMICI2C will indeed cause the transactions to be slower because the I2C flag can be considered basically equivalent to using the slow flag. Unless you are doing MCCS, we would suggest avoiding setting Atomic I2C flag

 

If you have any follow up questions, please file future questions or issues directly here: https://github.com/intel/drivers.gpu.control-library/issues

 

Thank you!

 

Best.

View solution in original post

0 Kudos
2 Replies
sentientSpark_Intel
257 Views

Hi WeiZaicheng,

 

Thank you for your post and I apologize for the late reply. 

This forum is for support regarding the now discontinued Intel Graphics Performance Analyzer tools. You might have better luck getting support by filing issues directly here: https://github.com/intel/drivers.gpu.control-library/issues, as IGCL / CUI SDK developers and users do not frequent this forum.  

 

I have asked the IGCL team about your question, and received the following feedback:

If you don't have a specific requirement to use CUI SDK, then we would suggest you use IGCL API as it supersedes CUI SDK. There is no Intel platform where both IGCL and CUI SDK will be supported for end user applications.

Regarding the IGCL parameters used for I2C transactions, unless you are trying to read/write MCCS registers or want to ensure synchronization, we would recommend using I2CArgs.Flags =  CTL_I2C_FLAG_SPEED_FAST;Or you can skip setting this flag entirely. 

Setting  I2CArgs.Flags = CTL_I2C_FLAG_ATOMICI2C will indeed cause the transactions to be slower because the I2C flag can be considered basically equivalent to using the slow flag. Unless you are doing MCCS, we would suggest avoiding setting Atomic I2C flag

 

If you have any follow up questions, please file future questions or issues directly here: https://github.com/intel/drivers.gpu.control-library/issues

 

Thank you!

 

Best.

0 Kudos
WeiZaicheng
Beginner
115 Views

Thanks for your reply!

In my testing, I found that some models could not obtain the corresponding DisplayID through IGCL, for example, my work notebook is Intel UHD Graphics before the 11th generation, which could only be obtained through the CUI SDK, so I did two driver developments.

In IGCL, only I2CArgs.Flags = CTL_I2C_FLAG_SPEED_FAST; , there is no noticeable speed increase.

Thank you again for your reply, and I will ask questions in Github in the future.

0 Kudos
Reply