| 390 | } |
| 391 | |
| 392 | bool GetShaderProgram(HContext context, ShaderDesc* shader_desc, ShaderDesc::Shader** vp, ShaderDesc::Shader** fp, ShaderDesc::Shader** cp) |
| 393 | { |
| 394 | assert(shader_desc); |
| 395 | ShaderDesc::Shader* selected_shader_vp = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_VERTEX); |
| 396 | ShaderDesc::Shader* selected_shader_fp = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_FRAGMENT); |
| 397 | |
| 398 | if (selected_shader_vp && selected_shader_fp) |
| 399 | { |
| 400 | *vp = selected_shader_vp; |
| 401 | *fp = selected_shader_fp; |
| 402 | return true; |
| 403 | } |
| 404 | |
| 405 | ShaderDesc::Shader* selected_shader = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_COMPUTE); |
| 406 | if (selected_shader) |
| 407 | { |
| 408 | *cp = selected_shader; |
| 409 | return true; |
| 410 | } |
| 411 | |
| 412 | const char* extra_msg = ""; |
| 413 | if (HasShader(shader_desc, ShaderDesc::SHADER_TYPE_COMPUTE) != 0x0 && !IsContextFeatureSupported(context, CONTEXT_FEATURE_COMPUTE_SHADER)) |
| 414 | { |
| 415 | extra_msg = "Reason: Compute shaders are not supported."; |
| 416 | } |
| 417 | |
| 418 | dmLogError("Unable to get a valid shader from a ShaderDesc for this context. %s", extra_msg); |
| 419 | return 0; |
| 420 | } |
| 421 | |
| 422 | uint32_t GetBufferTypeIndex(BufferType buffer_type) |
| 423 | { |
no test coverage detected