mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-02-04 02:51:18 +01:00
[video_core/host_shaders] add Snapdragon GSRv1 fragment shaders
Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
61
.patch/snapdragon_gsr/0001-glslang-fix.patch
Normal file
61
.patch/snapdragon_gsr/0001-glslang-fix.patch
Normal file
@@ -0,0 +1,61 @@
|
||||
diff --git a/sgsr/v1/include/glsl/sgsr1_shader_mobile.frag b/sgsr/v1/include/glsl/sgsr1_shader_mobile.frag
|
||||
index 7074999..69927af 100644
|
||||
--- a/sgsr/v1/include/glsl/sgsr1_shader_mobile.frag
|
||||
+++ b/sgsr/v1/include/glsl/sgsr1_shader_mobile.frag
|
||||
@@ -1,4 +1,4 @@
|
||||
-#version 300 es
|
||||
+#version 320 es
|
||||
|
||||
//============================================================================================================
|
||||
//
|
||||
@@ -63,9 +63,9 @@ vec2 weightY(float dx, float dy,float c, float std)
|
||||
|
||||
void main()
|
||||
{
|
||||
- int mode = OperationMode;
|
||||
- float edgeThreshold = EdgeThreshold;
|
||||
- float edgeSharpness = EdgeSharpness;
|
||||
+ const int mode = OperationMode;
|
||||
+ const float edgeThreshold = EdgeThreshold;
|
||||
+ const float edgeSharpness = EdgeSharpness;
|
||||
|
||||
vec4 color;
|
||||
if(mode == 1)
|
||||
@@ -93,10 +93,10 @@ void main()
|
||||
{
|
||||
coord.x += ViewportInfo[0].x;
|
||||
|
||||
- vec4 right = textureGather(ps0,coord + highp vec2(ViewportInfo[0].x, 0.0), mode);
|
||||
+ vec4 right = textureGather(ps0,coord + vec2(ViewportInfo[0].x, 0.0), mode);
|
||||
vec4 upDown;
|
||||
- upDown.xy = textureGather(ps0,coord + highp vec2(0.0, -ViewportInfo[0].y),mode).wz;
|
||||
- upDown.zw = textureGather(ps0,coord+ highp vec2(0.0, ViewportInfo[0].y), mode).yx;
|
||||
+ upDown.xy = textureGather(ps0,coord + vec2(0.0, -ViewportInfo[0].y),mode).wz;
|
||||
+ upDown.zw = textureGather(ps0,coord+ vec2(0.0, ViewportInfo[0].y), mode).yx;
|
||||
|
||||
float mean = (left.y+left.z+right.x+right.w)*0.25;
|
||||
left = left - vec4(mean);
|
||||
diff --git a/sgsr/v1/include/glsl/sgsr1_shader_mobile_edge_direction.frag b/sgsr/v1/include/glsl/sgsr1_shader_mobile_edge_direction.frag
|
||||
index d2df646..1f1daa6 100644
|
||||
--- a/sgsr/v1/include/glsl/sgsr1_shader_mobile_edge_direction.frag
|
||||
+++ b/sgsr/v1/include/glsl/sgsr1_shader_mobile_edge_direction.frag
|
||||
@@ -1,4 +1,4 @@
|
||||
-#version 300 es
|
||||
+#version 320 es
|
||||
|
||||
//============================================================================================================
|
||||
//
|
||||
@@ -124,10 +124,10 @@ void main()
|
||||
{
|
||||
coord.x += ViewportInfo[0].x;
|
||||
|
||||
- vec4 right = textureGather(ps0,coord + highp vec2(ViewportInfo[0].x, 0.0), OperationMode);
|
||||
+ vec4 right = textureGather(ps0,coord + vec2(ViewportInfo[0].x, 0.0), OperationMode);
|
||||
vec4 upDown;
|
||||
- upDown.xy = textureGather(ps0,coord + highp vec2(0.0, -ViewportInfo[0].y),OperationMode).wz;
|
||||
- upDown.zw = textureGather(ps0,coord+ highp vec2(0.0, ViewportInfo[0].y), OperationMode).yx;
|
||||
+ upDown.xy = textureGather(ps0,coord + vec2(0.0, -ViewportInfo[0].y),OperationMode).wz;
|
||||
+ upDown.zw = textureGather(ps0,coord+ vec2(0.0, ViewportInfo[0].y), OperationMode).yx;
|
||||
|
||||
float mean = (left.y+left.z+right.x+right.w)*0.25;
|
||||
left = left - vec4(mean);
|
||||
@@ -267,6 +267,9 @@ endif()
|
||||
|
||||
cmake_dependent_option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL} "ENABLE_OPENSSL" OFF)
|
||||
|
||||
AddJsonPackage(snapdragon_gsr)
|
||||
|
||||
# TODO(crueter): CPM this
|
||||
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL)
|
||||
AddJsonPackage(vulkan-validation-layers)
|
||||
|
||||
|
||||
@@ -120,5 +120,14 @@
|
||||
"repo": "serge-sans-paille/frozen",
|
||||
"sha": "61dce5ae18",
|
||||
"hash": "b8dfe741c82bc178dfc9749d4ab5a130cee718d9ee7b71d9b547cf5f7f23027ed0152ad250012a8546399fcc1e12187efc68d89d6731256c4d2df7d04eef8d5c"
|
||||
},
|
||||
"snapdragon_gsr": {
|
||||
"repo": "SnapdragonStudios/snapdragon-gsr",
|
||||
"package": "snapdragon_gsr",
|
||||
"hash": "dsfsdfsd",
|
||||
"sha": "d926f074bcb9d714e179f1ce0fcb9ee2eeb5074e",
|
||||
"patches": [
|
||||
"0001-glslang-fix.patch"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
set(FIDELITYFX_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/externals/FidelityFX-FSR/ffx-fsr)
|
||||
set(SNAPDRAGON_GSR_INCLUDE_DIR ${snapdragon_gsr_SOURCE_DIR}/sgsr/v1/include/glsl/)
|
||||
|
||||
set(FIDELITYFX_FILES
|
||||
${FIDELITYFX_INCLUDE_DIR}/ffx_a.h
|
||||
@@ -14,68 +15,69 @@ set(GLSL_INCLUDES
|
||||
)
|
||||
|
||||
set(SHADER_FILES
|
||||
astc_decoder.comp
|
||||
blit_color_float.frag
|
||||
block_linear_unswizzle_2d.comp
|
||||
block_linear_unswizzle_3d.comp
|
||||
block_linear_unswizzle_3d_bcn.comp
|
||||
convert_abgr8_to_d24s8.frag
|
||||
convert_abgr8_to_d32f.frag
|
||||
convert_d32f_to_abgr8.frag
|
||||
convert_d24s8_to_abgr8.frag
|
||||
convert_depth_to_float.frag
|
||||
convert_float_to_depth.frag
|
||||
convert_msaa_to_non_msaa.comp
|
||||
convert_non_msaa_to_msaa.comp
|
||||
convert_s8d24_to_abgr8.frag
|
||||
full_screen_triangle.vert
|
||||
fxaa.frag
|
||||
fxaa.vert
|
||||
opengl_convert_s8d24.comp
|
||||
opengl_copy_bc4.comp
|
||||
opengl_fidelityfx_fsr.frag
|
||||
opengl_fidelityfx_fsr_easu.frag
|
||||
opengl_fidelityfx_fsr_rcas.frag
|
||||
opengl_lmem_warmup.comp
|
||||
opengl_present.frag
|
||||
opengl_present.vert
|
||||
opengl_present_scaleforce.frag
|
||||
opengl_smaa.glsl
|
||||
pitch_unswizzle.comp
|
||||
present_area.frag
|
||||
present_bicubic.frag
|
||||
present_zero_tangent.frag
|
||||
present_bspline.frag
|
||||
present_mitchell.frag
|
||||
present_gaussian.frag
|
||||
present_lanczos.frag
|
||||
present_spline1.frag
|
||||
present_mmpx.frag
|
||||
queries_prefix_scan_sum.comp
|
||||
queries_prefix_scan_sum_nosubgroups.comp
|
||||
resolve_conditional_render.comp
|
||||
smaa_edge_detection.vert
|
||||
smaa_edge_detection.frag
|
||||
smaa_blending_weight_calculation.vert
|
||||
smaa_blending_weight_calculation.frag
|
||||
smaa_neighborhood_blending.vert
|
||||
smaa_neighborhood_blending.frag
|
||||
vulkan_blit_depth_stencil.frag
|
||||
vulkan_color_clear.frag
|
||||
vulkan_color_clear.vert
|
||||
vulkan_depthstencil_clear.frag
|
||||
vulkan_fidelityfx_fsr.vert
|
||||
vulkan_fidelityfx_fsr_easu_fp16.frag
|
||||
vulkan_fidelityfx_fsr_easu_fp32.frag
|
||||
vulkan_fidelityfx_fsr_rcas_fp16.frag
|
||||
vulkan_fidelityfx_fsr_rcas_fp32.frag
|
||||
vulkan_present.frag
|
||||
vulkan_present.vert
|
||||
vulkan_present_scaleforce_fp16.frag
|
||||
vulkan_present_scaleforce_fp32.frag
|
||||
vulkan_quad_indexed.comp
|
||||
vulkan_turbo_mode.comp
|
||||
vulkan_uint8.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/astc_decoder.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/blit_color_float.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/block_linear_unswizzle_2d.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/block_linear_unswizzle_3d.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_abgr8_to_d24s8.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_abgr8_to_d32f.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_d32f_to_abgr8.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_d24s8_to_abgr8.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_depth_to_float.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_float_to_depth.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_msaa_to_non_msaa.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_non_msaa_to_msaa.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/convert_s8d24_to_abgr8.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/full_screen_triangle.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fxaa.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fxaa.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_convert_s8d24.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_copy_bc4.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_fidelityfx_fsr.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_fidelityfx_fsr_easu.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_fidelityfx_fsr_rcas.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_lmem_warmup.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_present.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_present.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_present_scaleforce.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/opengl_smaa.glsl
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/pitch_unswizzle.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_area.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_bicubic.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_zero_tangent.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_bspline.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_mitchell.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_gaussian.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_lanczos.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_spline1.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/present_mmpx.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/queries_prefix_scan_sum.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/queries_prefix_scan_sum_nosubgroups.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/resolve_conditional_render.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_edge_detection.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_edge_detection.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_blending_weight_calculation.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_blending_weight_calculation.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_neighborhood_blending.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/smaa_neighborhood_blending.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_blit_depth_stencil.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_color_clear.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_color_clear.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_depthstencil_clear.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_fidelityfx_fsr.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_fidelityfx_fsr_easu_fp16.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_fidelityfx_fsr_easu_fp32.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_fidelityfx_fsr_rcas_fp16.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_fidelityfx_fsr_rcas_fp32.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_present.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_present.vert
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_present_scaleforce_fp16.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_present_scaleforce_fp32.frag
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_quad_indexed.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_turbo_mode.comp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/vulkan_uint8.comp
|
||||
${snapdragon_gsr_SOURCE_DIR}/sgsr/v1/include/glsl/sgsr1_shader_mobile.frag
|
||||
${snapdragon_gsr_SOURCE_DIR}/sgsr/v1/include/glsl/sgsr1_shader_mobile_edge_direction.frag
|
||||
)
|
||||
|
||||
if (PLATFORM_HAIKU)
|
||||
@@ -118,38 +120,52 @@ if (NOT GLSLANG_ERROR STREQUAL "")
|
||||
set(QUIET_FLAG "")
|
||||
endif()
|
||||
|
||||
foreach(FILENAME IN ITEMS ${SHADER_FILES})
|
||||
foreach(SOURCE_FILE IN ITEMS ${SHADER_FILES})
|
||||
get_filename_component(FILENAME ${SOURCE_FILE} NAME)
|
||||
string(REPLACE "." "_" SHADER_NAME ${FILENAME})
|
||||
set(SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME})
|
||||
# Skip generating source headers on Vulkan exclusive files
|
||||
if (NOT ${FILENAME} MATCHES "vulkan.*")
|
||||
set(SOURCE_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}.h)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${SOURCE_HEADER_FILE}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -P ${HEADER_GENERATOR} ${SOURCE_FILE} ${SOURCE_HEADER_FILE} ${INPUT_FILE}
|
||||
MAIN_DEPENDENCY
|
||||
${SOURCE_FILE}
|
||||
DEPENDS
|
||||
${INPUT_FILE}
|
||||
# HEADER_GENERATOR should be included here but msbuild seems to assume it's always modified
|
||||
)
|
||||
set(SHADER_HEADERS ${SHADER_HEADERS} ${SOURCE_HEADER_FILE})
|
||||
endif()
|
||||
# Skip compiling to SPIR-V OpenGL exclusive files
|
||||
if (NOT ${FILENAME} MATCHES "opengl.*")
|
||||
if (${FILENAME} MATCHES "sgsr1.*")
|
||||
string(TOUPPER ${SHADER_NAME}_SPV SPIRV_VARIABLE_NAME)
|
||||
set(SPIRV_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}_spv.h)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${SPIRV_HEADER_FILE}
|
||||
COMMAND
|
||||
${GLSLANGVALIDATOR} -V ${QUIET_FLAG} -I"${FIDELITYFX_INCLUDE_DIR}" ${GLSL_FLAGS} --variable-name ${SPIRV_VARIABLE_NAME} -o ${SPIRV_HEADER_FILE} ${SOURCE_FILE} --target-env ${SPIR_V_VERSION}
|
||||
${GLSLANGVALIDATOR} -V ${QUIET_FLAG} -DUseUniformBlock=1 ${GLSL_FLAGS} --variable-name ${SPIRV_VARIABLE_NAME} -o ${SPIRV_HEADER_FILE} ${SOURCE_FILE} --target-env ${SPIR_V_VERSION}
|
||||
MAIN_DEPENDENCY
|
||||
${SOURCE_FILE}
|
||||
)
|
||||
set(SHADER_HEADERS ${SHADER_HEADERS} ${SPIRV_HEADER_FILE})
|
||||
else()
|
||||
# Skip generating source headers on Vulkan exclusive files
|
||||
if (NOT ${FILENAME} MATCHES "vulkan.*" AND NOT ${FILENAME} MATCHES "sgsr1.*")
|
||||
set(SOURCE_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}.h)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${SOURCE_HEADER_FILE}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -P ${HEADER_GENERATOR} ${SOURCE_FILE} ${SOURCE_HEADER_FILE} ${INPUT_FILE}
|
||||
MAIN_DEPENDENCY
|
||||
${SOURCE_FILE}
|
||||
DEPENDS
|
||||
${INPUT_FILE}
|
||||
# HEADER_GENERATOR should be included here but msbuild seems to assume it's always modified
|
||||
)
|
||||
set(SHADER_HEADERS ${SHADER_HEADERS} ${SOURCE_HEADER_FILE})
|
||||
endif()
|
||||
# Skip compiling to SPIR-V OpenGL exclusive files
|
||||
if (NOT ${FILENAME} MATCHES "opengl.*")
|
||||
string(TOUPPER ${SHADER_NAME}_SPV SPIRV_VARIABLE_NAME)
|
||||
set(SPIRV_HEADER_FILE ${SHADER_DIR}/${SHADER_NAME}_spv.h)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${SPIRV_HEADER_FILE}
|
||||
COMMAND
|
||||
${GLSLANGVALIDATOR} -V ${QUIET_FLAG} -I"${FIDELITYFX_INCLUDE_DIR}" ${GLSL_FLAGS} --variable-name ${SPIRV_VARIABLE_NAME} -o ${SPIRV_HEADER_FILE} ${SOURCE_FILE} --target-env ${SPIR_V_VERSION}
|
||||
MAIN_DEPENDENCY
|
||||
${SOURCE_FILE}
|
||||
)
|
||||
set(SHADER_HEADERS ${SHADER_HEADERS} ${SPIRV_HEADER_FILE})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user