summaryrefslogtreecommitdiff
path: root/gsk/vulkan/resources/meson.build
blob: 2bcbd03ba323f8f2903e34f178c17c8a37b31774 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
gsk_private_vulkan_include_shaders = [
  'clip.frag.glsl',
  'clip.vert.glsl',
  'constants.glsl',
  'rect.glsl',
  'rect.frag.glsl',
  'rect.vert.glsl',
  'rounded-rect.glsl',
  'rounded-rect.frag.glsl',
]

gsk_private_vulkan_fragment_shaders = [
  'blendmode.frag',
  'blur.frag',
  'border.frag',
  'color.frag',
  'color-matrix.frag',
  'crossfade.frag',
  'inset-shadow.frag',
  'linear.frag',
  'mask.frag',
  'outset-shadow.frag',
  'texture.frag',
]

gsk_private_vulkan_vertex_shaders = [
  'blendmode.vert',
  'blur.vert',
  'border.vert',
  'color.vert',
  'color-matrix.vert',
  'crossfade.vert',
  'inset-shadow.vert',
  'linear.vert',
  'mask.vert',
  'outset-shadow.vert',
  'texture.vert',
]

gsk_private_vulkan_shaders += gsk_private_vulkan_fragment_shaders
gsk_private_vulkan_shaders += gsk_private_vulkan_vertex_shaders

glslc = find_program('glslc', required: false)
foreach shader: gsk_private_vulkan_shaders
  basefn = shader.split('.').get(0)
  suffix = shader.split('.').get(1)

  stage_arg = suffix == 'frag' ? '-fshader-stage=fragment' : '-fshader-stage=vertex'
  spv_shader = '@0@.@1@.spv'.format(basefn, suffix)
  clip_spv_shader = '@0@-clip.@1@.spv'.format(basefn, suffix)
  clip_rounded_spv_shader = '@0@-clip-rounded.@1@.spv'.format(basefn, suffix)

  if glslc.found()
    compiled_shader = custom_target(spv_shader,
                                    input: shader,
                                    output: spv_shader,
                                    depend_files: gsk_private_vulkan_include_shaders,
                                    command: [
                                      glslc,
                                      stage_arg,
                                      '-DCLIP_NONE',
                                      '@INPUT@',
                                      '-o', '@OUTPUT@'
                                    ])
    compiled_clip_shader = custom_target(clip_spv_shader,
                                         input: shader,
                                         output: clip_spv_shader,
                                         depend_files: gsk_private_vulkan_include_shaders,
                                         command: [
                                           glslc,
                                           stage_arg,
                                           '-DCLIP_RECT',
                                           '@INPUT@',
                                           '-o', '@OUTPUT@'
                                         ])
    compiled_clip_rounded_shader = custom_target(clip_rounded_spv_shader,
                                                 input: shader,
                                                 output: clip_rounded_spv_shader,
                                                 depend_files: gsk_private_vulkan_include_shaders,
                                                 command: [
                                                   glslc,
                                                   stage_arg,
                                                   '-DCLIP_ROUNDED_RECT',
                                                   '@INPUT@',
                                                   '-o', '@OUTPUT@'
                                                 ])
    gsk_private_vulkan_compiled_shaders_deps += [compiled_shader, compiled_clip_shader, compiled_clip_rounded_shader]
  endif
  gsk_private_vulkan_compiled_shaders += files(spv_shader, clip_spv_shader, clip_rounded_spv_shader)
endforeach