11-10-2013, 01:49 AM
(This post was last modified: 11-10-2013, 08:54 AM by starlord0502.)
It's a pity that v0.9.5 still can not solve my issue.
So I decided to try in my side.
Thanks to Solarmystic again for his Guide:- Compiling PPSSPP on Windows for Dummies.
As I mentioned before, the crash should be due to OpenGL-related change.
It's lucky that there is only one OpenGL-related change in v0.9.1-1631.
The changed code of TransformPipeline.cpp in v0.9.1-1630 was as below:
//#ifdef USING_GLES2
glDrawElements(glprim[prim], numTrans, GL_UNSIGNED_SHORT, inds);
//#else
// glDrawRangeElements(glprim[prim], 0, indexGen.MaxIndex(), numTrans, GL_UNSIGNED_SHORT, inds);
//#endif
In v0.9.1-1631, it was changed to as below:
#ifdef USING_GLES2
glDrawElements(glprim[prim], numTrans, GL_UNSIGNED_SHORT, inds);
#else
glDrawRangeElements(glprim[prim], 0, indexGen.MaxIndex(), numTrans, GL_UNSIGNED_SHORT, inds);
#endif
In other words, v0.9.1-1631 replaced the glDrawElements with glDrawRangeElements at non-mobile devices.
I tried to revert this change, and tested for 3 days.
The ppsspp crash with atioglxx.dll didn't happen again.
It looks like glDrawRangeElements makes AMD driver unhappy.
I don't know if this change is necessary or not.
But maybe it's better to pass this information to developers.
So I decided to try in my side.
Thanks to Solarmystic again for his Guide:- Compiling PPSSPP on Windows for Dummies.
As I mentioned before, the crash should be due to OpenGL-related change.
It's lucky that there is only one OpenGL-related change in v0.9.1-1631.
The changed code of TransformPipeline.cpp in v0.9.1-1630 was as below:
//#ifdef USING_GLES2
glDrawElements(glprim[prim], numTrans, GL_UNSIGNED_SHORT, inds);
//#else
// glDrawRangeElements(glprim[prim], 0, indexGen.MaxIndex(), numTrans, GL_UNSIGNED_SHORT, inds);
//#endif
In v0.9.1-1631, it was changed to as below:
#ifdef USING_GLES2
glDrawElements(glprim[prim], numTrans, GL_UNSIGNED_SHORT, inds);
#else
glDrawRangeElements(glprim[prim], 0, indexGen.MaxIndex(), numTrans, GL_UNSIGNED_SHORT, inds);
#endif
In other words, v0.9.1-1631 replaced the glDrawElements with glDrawRangeElements at non-mobile devices.
I tried to revert this change, and tested for 3 days.
The ppsspp crash with atioglxx.dll didn't happen again.
It looks like glDrawRangeElements makes AMD driver unhappy.
I don't know if this change is necessary or not.
But maybe it's better to pass this information to developers.

