mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver.
This commit is contained in:
@@ -39,7 +39,7 @@
|
||||
#include <glslang/SPIRV/GlslangToSpv.h>
|
||||
|
||||
static Vector<uint8_t> _compile_shader_glsl(RenderingDevice::ShaderStage p_stage, const String &p_source_code, RenderingDevice::ShaderLanguage p_language, String *r_error, const RenderingDevice *p_render_device) {
|
||||
const RD::Capabilities *capabilities = p_render_device->get_device_capabilities();
|
||||
const RDD::Capabilities &capabilities = p_render_device->get_device_capabilities();
|
||||
Vector<uint8_t> ret;
|
||||
|
||||
ERR_FAIL_COND_V(p_language == RenderingDevice::SHADER_LANGUAGE_HLSL, ret);
|
||||
@@ -57,17 +57,17 @@ static Vector<uint8_t> _compile_shader_glsl(RenderingDevice::ShaderStage p_stage
|
||||
glslang::EShTargetClientVersion ClientVersion = glslang::EShTargetVulkan_1_2;
|
||||
glslang::EShTargetLanguageVersion TargetVersion = glslang::EShTargetSpv_1_5;
|
||||
|
||||
if (capabilities->device_family == RenderingDevice::DeviceFamily::DEVICE_VULKAN) {
|
||||
if (capabilities->version_major == 1 && capabilities->version_minor == 0) {
|
||||
if (capabilities.device_family == RDD::DEVICE_VULKAN) {
|
||||
if (capabilities.version_major == 1 && capabilities.version_minor == 0) {
|
||||
ClientVersion = glslang::EShTargetVulkan_1_0;
|
||||
TargetVersion = glslang::EShTargetSpv_1_0;
|
||||
} else if (capabilities->version_major == 1 && capabilities->version_minor == 1) {
|
||||
} else if (capabilities.version_major == 1 && capabilities.version_minor == 1) {
|
||||
ClientVersion = glslang::EShTargetVulkan_1_1;
|
||||
TargetVersion = glslang::EShTargetSpv_1_3;
|
||||
} else {
|
||||
// use defaults
|
||||
}
|
||||
} else if (capabilities->device_family == RenderingDevice::DeviceFamily::DEVICE_DIRECTX) {
|
||||
} else if (capabilities.device_family == RDD::DEVICE_DIRECTX) {
|
||||
// NIR-DXIL is Vulkan 1.1-conformant.
|
||||
ClientVersion = glslang::EShTargetVulkan_1_1;
|
||||
// The SPIR-V part of Mesa supports 1.6, but:
|
||||
@@ -186,9 +186,9 @@ static Vector<uint8_t> _compile_shader_glsl(RenderingDevice::ShaderStage p_stage
|
||||
}
|
||||
|
||||
static String _get_cache_key_function_glsl(const RenderingDevice *p_render_device) {
|
||||
const RD::Capabilities *capabilities = p_render_device->get_device_capabilities();
|
||||
const RenderingDeviceDriver::Capabilities &capabilities = p_render_device->get_device_capabilities();
|
||||
String version;
|
||||
version = "SpirVGen=" + itos(glslang::GetSpirvGeneratorVersion()) + ", major=" + itos(capabilities->version_major) + ", minor=" + itos(capabilities->version_minor) + " , subgroup_size=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_SIZE)) + " , subgroup_ops=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_OPERATIONS)) + " , subgroup_in_shaders=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_IN_SHADERS)) + " , debug=" + itos(Engine::get_singleton()->is_generate_spirv_debug_info_enabled());
|
||||
version = "SpirVGen=" + itos(glslang::GetSpirvGeneratorVersion()) + ", major=" + itos(capabilities.version_major) + ", minor=" + itos(capabilities.version_minor) + " , subgroup_size=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_SIZE)) + " , subgroup_ops=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_OPERATIONS)) + " , subgroup_in_shaders=" + itos(p_render_device->limit_get(RD::LIMIT_SUBGROUP_IN_SHADERS)) + " , debug=" + itos(Engine::get_singleton()->is_generate_spirv_debug_info_enabled());
|
||||
return version;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user