O Grupo Khronos publicou o OpenCL 3.0.12 como a versão mais recente dessa API para computação em plataformas heterogêneas, mas mais conhecida por computação de GPU.
As mudanças observadas com o OpenCL 3.0.12 são:
* Adicionada uma definição para um objeto válido e requisitos para teste de objetos válidos.
* Adicionado um limite máximo para o número de argumentos suportados por um kernel.
* Requisitos esclarecidos para comparabilidade e exclusividade de manipuladores de objetos.
* Esclarecido comportamento para identificadores inválidos de enfileiramento do lado do dispositivo `clk_event_t`.
* Esclarecidas as interações `cl_khr_command_buffer` com outras extensões.
* Comportamento de erro especificado quando um buffer de comando é finalizado várias vezes.
O mais notável, porém, é a introdução de uma nova extensão para despacho mutável com buffers de comando. O cl_khr_command_buffer_mutable_dispatch é novo no OpenCL 3.0.12 e está sendo introduzido de forma provisória. A extensão cl_khr_command_buffer_mutable_dispatch permite modificar a configuração dos comandos de execução do kernel entre os enfileiramentos do buffer de comando.
A extensão cl_khr_command_buffer_mutable_dispatch foi trabalhada por engenheiros da Codeplay, Qualcomm, Arm, Intel, Tempere University, NVIDIA e Google para superar a limitação do cl_khr_command_buffer de que os comandos gravados no buffer de comando são imutáveis entre os enfileiramentos.
A extensão cl_khr_command_buffer separa a construção de comandos do enfileiramento, fornecendo um mecanismo para gravar um conjunto de comandos que podem ser enfileirados repetidamente. No entanto, os comandos gravados no buffer de comando são imutáveis entre os enfileiramentos.
cl_khr_command_buffer_mutable_dispatch remove esta restrição, em particular, esta extensão permite que a configuração de um comando de execução do kernel em um buffer de comando, chamado mutable-dispatch, seja modificado. Isso permite que entradas e saídas para o kernel, bem como tamanhos e deslocamentos de itens de trabalho, sejam alterados sem ter que regravar toda a sequência de comandos em um novo buffer de comando.
O a documentação oficial do OpenCL 3.0.12 pode ser baixada do GitHub.