10 id<MTLComputePipelineState> pipeline) {
11 if (pipeline == pipeline_) {
15 [encoder_ setComputePipelineState:pipeline_];
23 id<MTLComputeCommandEncoder> encoder) {
29 id<MTLBuffer> buffer) {
30 auto found = buffers_.find(index);
31 if (found != buffers_.end() && found->second.buffer == buffer) {
33 if (found->second.offset == offset) {
39 found->second.offset = offset;
41 [encoder_ setBufferOffset:offset atIndex:index];
45 buffers_[index] = {buffer,
static_cast<size_t>(offset)};
46 [encoder_ setBuffer:buffer offset:offset atIndex:index];
50 id<MTLTexture> texture) {
51 auto found = textures_.find(index);
52 if (found != textures_.end() && found->second == texture) {
56 textures_[index] = texture;
57 [encoder_ setTexture:texture atIndex:index];
62 id<MTLSamplerState> sampler) {
63 auto found = samplers_.find(index);
64 if (found != samplers_.end() && found->second == sampler) {
68 samplers_[index] = sampler;
69 [encoder_ setSamplerState:sampler atIndex:index];
void SetEncoder(id< MTLComputeCommandEncoder > encoder)
void SetComputePipelineState(id< MTLComputePipelineState > pipeline)
void SetBuffer(uint64_t index, uint64_t offset, id< MTLBuffer > buffer)
void SetSampler(uint64_t index, id< MTLSamplerState > sampler)
id< MTLComputePipelineState > GetPipeline() const
void SetTexture(uint64_t index, id< MTLTexture > texture)