Flutter Impeller
compute_command.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include "
impeller/renderer/compute_command.h
"
6
7
#include <utility>
8
9
#include "
impeller/base/validation.h
"
10
#include "
impeller/core/formats.h
"
11
12
namespace
impeller
{
13
14
bool
ComputeCommand::BindResource
(
ShaderStage
stage,
15
const
ShaderUniformSlot
& slot,
16
const
ShaderMetadata
& metadata,
17
BufferView
view) {
18
if
(stage !=
ShaderStage::kCompute
) {
19
VALIDATION_LOG
<<
"Use Command for non-compute shader stages."
;
20
return
false
;
21
}
22
if
(!view) {
23
return
false
;
24
}
25
26
bindings
.
buffers
.emplace_back(
27
BufferAndUniformSlot
{.
slot
= slot, .view = {&metadata, std::move(view)}});
28
return
true
;
29
}
30
31
bool
ComputeCommand::BindResource
(
ShaderStage
stage,
32
const
SampledImageSlot
& slot,
33
const
ShaderMetadata
& metadata,
34
std::shared_ptr<const Texture> texture,
35
std::shared_ptr<const Sampler> sampler) {
36
if
(stage !=
ShaderStage::kCompute
) {
37
VALIDATION_LOG
<<
"Use Command for non-compute shader stages."
;
38
return
false
;
39
}
40
if
(!sampler || !sampler->IsValid()) {
41
return
false
;
42
}
43
if
(!texture || !texture->IsValid()) {
44
return
false
;
45
}
46
47
bindings
.
sampled_images
.emplace_back(
TextureAndSampler
{
48
.
slot
= slot,
49
.texture = {&metadata, std::move(texture)},
50
.sampler = std::move(sampler),
51
});
52
53
return
false
;
54
}
55
56
}
// namespace impeller
impeller::ComputeCommand::BindResource
bool BindResource(ShaderStage stage, const ShaderUniformSlot &slot, const ShaderMetadata &metadata, BufferView view) override
Definition:
compute_command.cc:14
impeller::ShaderUniformSlot
Metadata required to bind a buffer.
Definition:
shader_types.h:81
impeller::ShaderMetadata
Definition:
shader_types.h:72
formats.h
impeller::Bindings::sampled_images
std::vector< TextureAndSampler > sampled_images
Definition:
command.h:74
impeller::ShaderStage
ShaderStage
Definition:
shader_types.h:22
validation.h
impeller::SampledImageSlot
Metadata required to bind a combined texture and sampler.
Definition:
shader_types.h:98
impeller::ComputeCommand::bindings
Bindings bindings
Definition:
compute_command.h:45
impeller::TextureAndSampler
combines the texture, sampler and sampler slot information.
Definition:
command.h:61
impeller::BufferAndUniformSlot::slot
ShaderUniformSlot slot
Definition:
command.h:69
VALIDATION_LOG
#define VALIDATION_LOG
Definition:
validation.h:67
impeller::TextureAndSampler::slot
SampledImageSlot slot
Definition:
command.h:62
impeller::BufferView
Definition:
buffer_view.h:13
impeller::Bindings::buffers
std::vector< BufferAndUniformSlot > buffers
Definition:
command.h:75
compute_command.h
impeller::ShaderStage::kCompute
@ kCompute
impeller
Definition:
aiks_context.cc:10
impeller::BufferAndUniformSlot
combines the buffer resource and its uniform slot information.
Definition:
command.h:68
impeller
renderer
compute_command.cc
Generated by
1.8.17