Welcome to mirror list, hosted at ThFree Co, Russian Federation.

metal_program_params.mm « shaders - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d5da8217d74bd1555a906cab27f72797f96aea07 (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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "shaders/metal_program_params.hpp"

#include "drape/metal/metal_base_context.hpp"

namespace gpu
{
namespace metal
{
namespace
{
template<typename T>
void ApplyBytes(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::GpuProgram> program,
                T const & params)
{
  ref_ptr<dp::metal::MetalGpuProgram> p = program;
  ref_ptr<dp::metal::MetalBaseContext> metalContext = context;
  id<MTLRenderCommandEncoder> encoder = metalContext->GetCommandEncoder();
  
  auto const vsBindingIndex = p->GetVertexShaderUniformsBindingIndex();
  if (vsBindingIndex >= 0)
  {
    [encoder setVertexBytes:(void const *)&params length:sizeof(params)
                    atIndex:vsBindingIndex];
  }
  
  auto const fsBindingIndex = p->GetFragmentShaderUniformsBindingIndex();
  if (fsBindingIndex >= 0)
  {
    [encoder setFragmentBytes:(void const *)&params length:sizeof(params)
                      atIndex:fsBindingIndex];
  }
}
}  // namespace
  
void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     MapProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     RouteProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     TrafficProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     TransitProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     GuiProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     ShapesProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     Arrow3dProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     DebugRectProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     ScreenQuadProgramParams const & params)
{
  ApplyBytes(context, program, params);
}

void MetalProgramParamsSetter::Apply(ref_ptr<dp::GraphicsContext> context,
                                     ref_ptr<dp::GpuProgram> program,
                                     SMAAProgramParams const & params)
{
  ApplyBytes(context, program, params);
}
}  // namespace metal
}  // namespace gpu