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)};
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];