2019-05-16 09:48:24 +00:00
|
|
|
# Shaders
|
|
|
|
gst_vulkan_shader_sources = [
|
|
|
|
'identity.frag',
|
|
|
|
'identity.vert',
|
2019-06-13 08:05:40 +00:00
|
|
|
'swizzle.frag',
|
|
|
|
'swizzle_and_clobber_alpha.frag',
|
2019-06-19 09:09:21 +00:00
|
|
|
'yuy2_to_rgb.frag',
|
|
|
|
'rgb_to_yuy2.frag',
|
|
|
|
'ayuv_to_rgb.frag',
|
|
|
|
'rgb_to_ayuv.frag',
|
2019-05-16 09:48:24 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
bin2array = find_program('bin2array.py')
|
|
|
|
|
2019-06-19 05:25:18 +00:00
|
|
|
# FIXME: meson compiler class instead?
|
|
|
|
glslc_build_options = []
|
|
|
|
optimization = get_option('optimization')
|
|
|
|
buildtype = get_option('buildtype')
|
|
|
|
if get_option('debug') or optimization == 'g' or ['debug', 'debugoptimized'].contains(buildtype)
|
|
|
|
glslc_build_options += ['-g']
|
|
|
|
endif
|
|
|
|
if get_option('werror')
|
|
|
|
glslc_build_options += ['-Werror']
|
|
|
|
endif
|
|
|
|
if buildtype == 'minsize' or optimization == 's'
|
|
|
|
glslc_build_options += ['-Os']
|
|
|
|
endif
|
|
|
|
if ['release', 'debugoptimized'].contains(buildtype) or ['1', '2', '3'].contains(optimization)
|
|
|
|
glslc_build_options += ['-O']
|
|
|
|
endif
|
|
|
|
|
2019-05-16 09:48:24 +00:00
|
|
|
vulkan_compiled_shader_sources = []
|
|
|
|
foreach shader: gst_vulkan_shader_sources
|
|
|
|
basefn = shader.split('.').get(0)
|
|
|
|
suffix = shader.split('.').get(1)
|
|
|
|
|
|
|
|
stage_arg = suffix == 'frag' ? '-fshader-stage=fragment' : '-fshader-stage=vertex'
|
|
|
|
basename = '@0@.@1@'.format(basefn, suffix)
|
|
|
|
spv_shader = basename + '.spv'
|
|
|
|
c_shader_source = basename + '.c'
|
|
|
|
c_shader_header = basename + '.h'
|
|
|
|
|
|
|
|
compiled_shader = custom_target(spv_shader,
|
|
|
|
input: shader,
|
|
|
|
output: spv_shader,
|
2019-06-19 05:25:18 +00:00
|
|
|
depfile: '@PLAINNAME@.d',
|
|
|
|
command: [glslc] + glslc_build_options + [
|
2019-05-16 09:48:24 +00:00
|
|
|
stage_arg,
|
2019-06-19 05:25:18 +00:00
|
|
|
'--target-env=vulkan1.0',
|
|
|
|
'-MD', '-MF', '@DEPFILE@',
|
2019-05-16 09:48:24 +00:00
|
|
|
'@INPUT@',
|
|
|
|
'-o', '@OUTPUT@'
|
|
|
|
])
|
|
|
|
|
|
|
|
c_shader = custom_target (c_shader_source,
|
|
|
|
input: compiled_shader,
|
|
|
|
output: [c_shader_source, c_shader_header],
|
|
|
|
command: [ bin2array,
|
|
|
|
'--array-name=' + basename.underscorify(),
|
|
|
|
'--c-include=gst/gst.h',
|
|
|
|
'--element-type=gchar',
|
|
|
|
'--element-size=1',
|
|
|
|
'--linebreak=8',
|
|
|
|
'--input', '@INPUT@',
|
|
|
|
'--output', '@OUTPUT0@',
|
|
|
|
'--header-output', '@OUTPUT1@'])
|
|
|
|
|
|
|
|
vulkan_compiled_shader_sources += [c_shader]
|
|
|
|
endforeach
|