api = trace::API_D3D9;
} else if (strcmp(optarg, "d3d10") == 0) {
api = trace::API_D3D10;
+ } else if (strcmp(optarg, "d3d10_1") == 0) {
+ api = trace::API_D3D10_1;
+ } else if (strcmp(optarg, "d3d11") == 0) {
+ api = trace::API_D3D11;
} else {
std::cerr << "error: unknown API `" << optarg << "`\n";
usage();
API_UNKNOWN = 0,
API_GL, // GL + GLX/WGL/CGL
API_EGL, // GL/GLES1/GLES2/VG + EGL
+ API_DX, // All DirectX
API_D3D7,
API_D3D8,
API_D3D9,
API_D3D10,
+ API_D3D10_1,
+ API_D3D11,
};
*/
if (api == API_UNKNOWN) {
const char *n = sig->name;
- if ((n[0] == 'g' && n[1] == 'l' && n[2] == 'X') || // glX
- (n[0] == 'w' && n[1] == 'g' && n[2] == 'l' && n[3] >= 'A' && n[3] <= 'Z') || // wgl[A-Z]
- (n[0] == 'C' && n[1] == 'G' && n[2] == 'L')) { // CGL
+ if ((n[0] == 'g' && n[1] == 'l' && n[2] == 'X') || // glX*
+ (n[0] == 'w' && n[1] == 'g' && n[2] == 'l' && n[3] >= 'A' && n[3] <= 'Z') || // wgl[A-Z]*
+ (n[0] == 'C' && n[1] == 'G' && n[2] == 'L')) { // CGL*
api = trace::API_GL;
- } else if (n[0] == 'e' && n[1] == 'g' && n[2] == 'l' && n[3] >= 'A' && n[3] <= 'Z') { // egl
+ } else if (n[0] == 'e' && n[1] == 'g' && n[2] == 'l' && n[3] >= 'A' && n[3] <= 'Z') { // egl[A-Z]*
api = trace::API_EGL;
+ } else if (n[0] == 'D' &&
+ ((n[1] == 'i' && n[2] == 'r' && n[3] == 'e' && n[4] == 'c' && n[5] == 't') || // Direct*
+ (n[1] == '3' && n[2] == 'D'))) { // D3D*
+ api = trace::API_DX;
} else {
/* TODO */
}
case API_D3D10:
wrapperFilename = "d3d10.dll";
break;
+ case API_D3D10_1:
+ wrapperFilename = "d3d10_1.dll";
+ break;
+ case API_D3D11:
+ wrapperFilename = "d3d11.dll";
+ break;
#endif
default:
std::cerr << "error: unsupported API\n";
QString prog;
QStringList arguments;
- if (m_api == trace::API_GL) {
+ switch (m_api) {
+ case trace::API_GL:
prog = QLatin1String("glretrace");
- } else if (m_api == trace::API_EGL) {
+ break;
+ case trace::API_EGL:
prog = QLatin1String("eglretrace");
- } else {
+ break;
+ case trace::API_DX:
+ case trace::API_D3D7:
+ case trace::API_D3D8:
+ case trace::API_D3D9:
+ case trace::API_D3D10:
+ case trace::API_D3D10_1:
+ case trace::API_D3D11:
+#ifdef Q_OS_WIN
+ prog = QLatin1String("d3dretrace");
+#else
+ prog = QLatin1String("wine");
+ arguments << QLatin1String("d3dretrace.exe");
+#endif
+ break;
+ default:
emit finished(QLatin1String("Unsupported API"));
return;
}
apiComboBox->addItem("D3D8");
apiComboBox->addItem("D3D9");
apiComboBox->addItem("D3D10");
+ apiComboBox->addItem("D3D10_1");
+ apiComboBox->addItem("D3D11");
#else
apiComboBox->addItem("EGL");
#endif