Да, вы можете взять параметр текстуры с атрибутом access::read_write
, прочитать и записать его в рамках одного и того же вызова функции ядра. Вам нужно убедиться, что текстура создана с флагами использования .read
и .write
. Кроме того, обратите внимание, что записи не гарантируются для любых последующих чтений в том же потоке, если только вы не вызовете функцию flush()
после записи.
Кстати, ядра MetalPerformanceShaders, которые могут работать "в -place "не обязательно использовать read_write
текстуры; часто бывает так, что они используют вспомогательные текстуры и буферы и выполняют свою работу через несколько проходов. Согласно документации , любое ядро может не работать на месте по ряду причин, поэтому вы всегда должны предоставлять резервный распределитель для обработки таких случаев.