| 396 | } |
| 397 | |
| 398 | inline ShaderModel querySupportedShaderModel(gfx::IDevice* pDevice) |
| 399 | { |
| 400 | struct SMLevel |
| 401 | { |
| 402 | const char* name; |
| 403 | ShaderModel level; |
| 404 | }; |
| 405 | const SMLevel levels[] = { |
| 406 | {"sm_6_7", ShaderModel::SM6_7}, |
| 407 | {"sm_6_6", ShaderModel::SM6_6}, |
| 408 | {"sm_6_5", ShaderModel::SM6_5}, |
| 409 | {"sm_6_4", ShaderModel::SM6_4}, |
| 410 | {"sm_6_3", ShaderModel::SM6_3}, |
| 411 | {"sm_6_2", ShaderModel::SM6_2}, |
| 412 | {"sm_6_1", ShaderModel::SM6_1}, |
| 413 | {"sm_6_0", ShaderModel::SM6_0}, |
| 414 | }; |
| 415 | for (auto level : levels) |
| 416 | { |
| 417 | if (pDevice->hasFeature(level.name)) |
| 418 | { |
| 419 | return level.level; |
| 420 | } |
| 421 | } |
| 422 | return ShaderModel::Unknown; |
| 423 | } |
| 424 | |
| 425 | Device::Device(const Desc& desc) : mDesc(desc) |
| 426 | { |