amazon-web-services - 当应用程序在支持无头图形的 Ec2 实例上启动时,IDirect3D9::CheckDeviceType 返回 D3DERR_NOTAVAILABLE
问题描述
我编写了一个应用程序,它在需要硬件加速才能正确呈现的 AWS Ec2 实例上启动统一应用程序。此启动器应用程序会进行预健全性检查,以确保 HAL(硬件加速)设备与 Direct3D 调用一起存在,例如
D3DDISPLAYMODE mode;
HRESULT hr;
if (FAILED (hr = s_D3D->GetAdapterDisplayMode (g_D3DAdapter, &mode)))
{
return false;
}
if(FAILED (hr = s_D3D->CheckDeviceType (g_D3DAdapter, D3DDEVTYPE_HAL, mode.Format, mode.Format, TRUE)))
{
/// This fails.
return false;
}
当我按预期从远程桌面运行启动器应用程序时,完整性检查成功。但是当应用程序在启动时启动时它会失败。
如果我删除完整性检查,统一应用程序在启动时正确加载,但某些确实需要硬件加速的元素/着色器无法正确呈现。
我正在使用带有 Windows10 和 NVIDIA Tesla T4 显卡的 AWS EC2 G4 实例。我也安装了最新的驱动程序(Nvidia 和 Directx)。
为了进行额外的调试,我尝试打印一些调试日志以查看是否检测到图形驱动程序并且应用程序似乎确实找到了它。
D3DADAPTER_IDENTIFIER9 adapter_info;
hr = s_D3D->GetAdapterIdentifier (g_D3DAdapter, 0, &adapter_info);
std::cout << "Device Name: " << adapter_info.DeviceName << std::endl;
std::cout << "Device Id: " << std::to_string (adapter_info.DeviceId) << std::endl;
std::cout << "Device Desc: " << adapter_info.Description << std::endl;
std::cout << "Device Driver: " << adapter_info.Driver << std::endl;
如果您对我如何在启动时启动应用程序进程感到好奇,我会使用 AWS 的 UserDataScripts 功能。通过 UserData 脚本,我确保应用程序进程以管理员权限和正确的 Windows 会话运行。以下是讨论我正在使用的方法的链接。 https://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite
从我到目前为止所做的搜索中,我没有找到任何与此主题相关的内容。
解决方案
推荐阅读
- python - 当 DictReader 键值与前一个键值匹配时跳过操作
- reactjs - redux-form@8.3.7 需要 react@^16.4.2 的 peer 但没有安装
- node.js - 节点 Postgresql 用户密码安全
- java - 在java中格式化输入的流数据
- vb.net - VB.Net 清除数据集和数据表以便接收新的数据集
- java - Android Studio 中的 Kotlin 文件是否没有模块化选项?
- python - 在所提供的上下文中,术语数据缓冲区是什么意思?
- nestjs - 获取特定类型 Nestjs 服务的所有实例
- amazon-web-services - 如何使用来自不同组织用户的时间序列数据对 DynamoDB 表进行分区?
- python - ValueError:发现样本数量不一致的输入变量:[2, 515738]