Hakan Bayındır
2025-03-12 11:20:01 UTC
Hi Stephan,
In first blush, I don’t think shaders should be considered firmware. They are not used to enable the hardware, but they’re just programs which work on pixels to perform some functions. These functions work like “suggested/recommended” packages which enable more functions with the hardware, but do not render it inoperable when they’re absent.
GPU firmwares used by AMD/NVIDIA are pushed to the card, or stay there indefinitely and enable the hardware, initialize it let it function as a graphics card. Similar to other firmware (printer, scanner, WiFi, Ethernet, etc.).
But shaders are not them, and they can be considered as software. Like CUDA or “compute” Kernels which run on the GPU directly (preferably after compilation) and consume input and generate output.
Of course this is my two cents,
Best regards,
H.
In first blush, I don’t think shaders should be considered firmware. They are not used to enable the hardware, but they’re just programs which work on pixels to perform some functions. These functions work like “suggested/recommended” packages which enable more functions with the hardware, but do not render it inoperable when they’re absent.
GPU firmwares used by AMD/NVIDIA are pushed to the card, or stay there indefinitely and enable the hardware, initialize it let it function as a graphics card. Similar to other firmware (printer, scanner, WiFi, Ethernet, etc.).
But shaders are not them, and they can be considered as software. Like CUDA or “compute” Kernels which run on the GPU directly (preferably after compilation) and consume input and generate output.
Of course this is my two cents,
Best regards,
H.
Hello everyone
The “drivers” for hardware video decoders on Intel GPUs have been split
into free and non-free packages.
https://packages.debian.org/en/sid/intel-media-va-driver
https://packages.debian.org/en/sid/intel-media-va-driver-non-free
The difference between the two is that the Intel source code contains
blobs (byte arrays in the C source) with pre-compiled GPU shaders.
The source code for the pre-complied shaders is not included and does
not appear to be available under a free license.
media_driver/agnostic/Xe_M/Xe_HPM/codec/kernel/XE_HPM_VC1_OLP.c
media_driver/agnostic/Xe_M/Xe_HPM/codec/kernel/Xe_Hpm_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM/codec/kernelisa/Xe_XPM_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM/codec/kernelisa/Xe_XPM_VC1_OLP.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/cmfcpatch/igvpkrn_xe_xpm_cmfcpatch.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/igvpkrn_isa_xe_xpm.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/igvpkrn_xe_xpm.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/codec/kernel/Xe_XPM_plus_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/vp/kernel/cmfcpatch/igvpkrn_xe_xpm_plus_cmfcpatch.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/vp/kernel/igvpkrn_xe_xpm_plus.c
media_driver/agnostic/gen11/codec/kernel/igcodeckrn_g11.c
media_driver/agnostic/gen11_icllp/codec/kernel/igcodeckrn_g11_icllp.c
media_driver/agnostic/gen11_icllp/vp/kernel/igvpkrn_g11_icllp.c
media_driver/agnostic/gen11_icllp/vp/kernel/igvpkrn_isa_g11_icllp.c
media_driver/agnostic/gen12/codec/kernel/igcodeckrn_g12.c
media_driver/agnostic/gen12/codec/kernelisa/*.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfc/igvpkrn_g12_tgllp_cmfc.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfccmlpch/igvpkrn_g12_tgllp_cmfccmlpch.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfcpatch/igvpkrn_g12_tgllp_cmfcpatch.c
media_driver/agnostic/gen12_tgllp/vp/kernel/igvpkrn_g12_tgllp.c
media_driver/agnostic/gen12_tgllp/vp/kernel/igvpkrn_isa_g12_tgllp.c
media_driver/agnostic/gen12_tgllp/vp/kernel/swsb/igvpkrn_g12_tgllp_swsb.c
media_driver/agnostic/gen8/codec/kernel/igcodeckrn_g8.c
media_driver/agnostic/gen8/vp/kernel/igvpkrn_g8.c
media_driver/agnostic/gen9/codec/kernel/igcodeckrn_g9.c
media_driver/agnostic/gen9/vp/kernel/igvpkrn_g9.c
media_driver/agnostic/gen9/vp/kernel/igvpkrn_isa_g9.c
media_driver/agnostic/gen9_bxt/codec/kernel/igcodeckrn_g9_bxt.c
media_driver/agnostic/gen9_cml/vp/kernel/igvpkrn_g9_cml.c
media_driver/agnostic/gen9_cml/vp/kernel/tgp/igvpkrn_g9_cml_tgp.c
media_driver/agnostic/gen9_cmpv/vp/kernel/igvpkrn_g9_cmpv.c
media_driver/agnostic/gen9_kbl/codec/kernel/igcodeckrn_g9_kbl.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/cmfcpatch/igvpkrn_xe_hpg_cmfcpatch.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/igvpkrn_isa_xe_hpg.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/igvpkrn_xe_hpg.c
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/cmfcpatch/igvpkrn_xe2_hpg_cmfcpatch.c
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_420PL3_input_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_444PL3_input_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_common_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_fp_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpkrn_xe2_hpg.c
Should they be considered non-free firmware rather than non-free
software?
1. The shaders are loaded into the GPU, very much like firmware.
2. They are not linked into any libraries or applications.
3. They are not loaded into the kernel (like kernel module or eBPF).
4. They are not running on the CPU, neither in kernel space, user
space or in a bytecode interpreter.
5. They are required by the operating system or applications to make
use of hardware capabilities.
1. The shaders are mixed up with library code which load them into
the GPU.
2. That library code is linked into libraries and applications and
running on the CPU. (How ever, there appears to be consensus that
the library code is free, only the shaders are not.)
3. GPU shaders can have various purposes and origins other than the
hardware vendor.
Regards
Stephan
The “drivers” for hardware video decoders on Intel GPUs have been split
into free and non-free packages.
https://packages.debian.org/en/sid/intel-media-va-driver
https://packages.debian.org/en/sid/intel-media-va-driver-non-free
The difference between the two is that the Intel source code contains
blobs (byte arrays in the C source) with pre-compiled GPU shaders.
The source code for the pre-complied shaders is not included and does
not appear to be available under a free license.
media_driver/agnostic/Xe_M/Xe_HPM/codec/kernel/XE_HPM_VC1_OLP.c
media_driver/agnostic/Xe_M/Xe_HPM/codec/kernel/Xe_Hpm_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM/codec/kernelisa/Xe_XPM_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM/codec/kernelisa/Xe_XPM_VC1_OLP.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/cmfcpatch/igvpkrn_xe_xpm_cmfcpatch.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/igvpkrn_isa_xe_xpm.c
media_driver/agnostic/Xe_M/Xe_XPM/vp/kernel/igvpkrn_xe_xpm.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/codec/kernel/Xe_XPM_plus_Film_Grain.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/vp/kernel/cmfcpatch/igvpkrn_xe_xpm_plus_cmfcpatch.c
media_driver/agnostic/Xe_M/Xe_XPM_plus/vp/kernel/igvpkrn_xe_xpm_plus.c
media_driver/agnostic/gen11/codec/kernel/igcodeckrn_g11.c
media_driver/agnostic/gen11_icllp/codec/kernel/igcodeckrn_g11_icllp.c
media_driver/agnostic/gen11_icllp/vp/kernel/igvpkrn_g11_icllp.c
media_driver/agnostic/gen11_icllp/vp/kernel/igvpkrn_isa_g11_icllp.c
media_driver/agnostic/gen12/codec/kernel/igcodeckrn_g12.c
media_driver/agnostic/gen12/codec/kernelisa/*.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfc/igvpkrn_g12_tgllp_cmfc.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfccmlpch/igvpkrn_g12_tgllp_cmfccmlpch.c
media_driver/agnostic/gen12_tgllp/vp/kernel/cmfcpatch/igvpkrn_g12_tgllp_cmfcpatch.c
media_driver/agnostic/gen12_tgllp/vp/kernel/igvpkrn_g12_tgllp.c
media_driver/agnostic/gen12_tgllp/vp/kernel/igvpkrn_isa_g12_tgllp.c
media_driver/agnostic/gen12_tgllp/vp/kernel/swsb/igvpkrn_g12_tgllp_swsb.c
media_driver/agnostic/gen8/codec/kernel/igcodeckrn_g8.c
media_driver/agnostic/gen8/vp/kernel/igvpkrn_g8.c
media_driver/agnostic/gen9/codec/kernel/igcodeckrn_g9.c
media_driver/agnostic/gen9/vp/kernel/igvpkrn_g9.c
media_driver/agnostic/gen9/vp/kernel/igvpkrn_isa_g9.c
media_driver/agnostic/gen9_bxt/codec/kernel/igcodeckrn_g9_bxt.c
media_driver/agnostic/gen9_cml/vp/kernel/igvpkrn_g9_cml.c
media_driver/agnostic/gen9_cml/vp/kernel/tgp/igvpkrn_g9_cml_tgp.c
media_driver/agnostic/gen9_cmpv/vp/kernel/igvpkrn_g9_cmpv.c
media_driver/agnostic/gen9_kbl/codec/kernel/igcodeckrn_g9_kbl.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/cmfcpatch/igvpkrn_xe_hpg_cmfcpatch.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/igvpkrn_isa_xe_hpg.c
media_softlet/agnostic/Xe_R/Xe_HPG_Base/vp/kernel/igvpkrn_xe_hpg.c
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/cmfcpatch/igvpkrn_xe2_hpg_cmfcpatch.c
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_420PL3_input_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_444PL3_input_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_common_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpfc_fp_xe2.cpp
media_softlet/agnostic/Xe_R/Xe2_HPG/vp/kernel/igvpkrn_xe2_hpg.c
Should they be considered non-free firmware rather than non-free
software?
1. The shaders are loaded into the GPU, very much like firmware.
2. They are not linked into any libraries or applications.
3. They are not loaded into the kernel (like kernel module or eBPF).
4. They are not running on the CPU, neither in kernel space, user
space or in a bytecode interpreter.
5. They are required by the operating system or applications to make
use of hardware capabilities.
1. The shaders are mixed up with library code which load them into
the GPU.
2. That library code is linked into libraries and applications and
running on the CPU. (How ever, there appears to be consensus that
the library code is free, only the shaders are not.)
3. GPU shaders can have various purposes and origins other than the
hardware vendor.
Regards
Stephan