On Thu, Jul 17, 2025 at 02:08:13PM +1000, Jonathan Gray wrote: > On Thu, Jul 17, 2025 at 03:00:15PM +1200, Avon Robertson wrote: > > This machine was out of service for several weeks. When it re-entered > > service with 2 new spinning disks, OpenBSD was reinstalled from a > > slightly outdated install77.img. It was promptly <sysupgrade'd -s> and > > current- new packages were installed. Since then, 2 more > > 'sysupgrade -s' and 'pkg_add -Dsnap -uv' cycles have occurred. > > > > >From re-entry to service the machine will not enter the X Windows System. > > > > When the system is booted with /etc/rc.conf.local containing > > xenodm_flags="" > > [ ... ] > > > > and the correct login name and password are entered at the graphical > > login screen, the system briefly pauses then re-displays the login > > screen with empty login fields. > > > > The remainer of this mail concentrates only on 'startx'. > > > > When 'startx' is invoked on this machine from ttyC0 it consistently > > fails. > > > > File ~/.local/share/xorg/Xorg.0.log does not contain at least one > > statement when 'startx' is invoked from ttyC0 i.e.: > > > > Unsupported opcode: v1: :v[2] = v_lshlrev_b16 8, > > :v[2] > > > > that is displayed on ttyC0 as the invocation fails. See the recorded > > output from /usr/bin/script below. > > > > Script started on Thu Jul 17 10:54:29 2025 > > > > wrcr4:~ $ tty > > /dev/ttyp0 > > > > wrcr4:~ $ sysctl kern.version > > kern.version=OpenBSD 7.7-current (GENERIC.MP) #60: Mon Jul 14 23:15:46 MDT > > 2025 > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > > > wrcr4:~ $ startx > > > > X.Org X Server 1.21.1.18 > > X Protocol Version 11, Revision 0 > > Current Operating System: OpenBSD wrcr4.xan.priv 7.7 GENERIC.MP#60 amd64 > > > > Current version of pixman: 0.42.2 > > Before reporting problems, check http://wiki.x.org > > to make sure that you have the latest version. > > Markers: (--) probed, (**) from config file, (==) default setting, > > (++) from command line, (!!) notice, (II) informational, > > (WW) warning, (EE) error, (NI) not implemented, (??) unknown. > > (==) Log file: "/home/aer/.local/share/xorg/Xorg.0.log", Time: Thu Jul 17 > > 10:55:45 2025 > > (==) Using system config directory "/usr/X11R6/share/X11/xorg.conf.d" > > ACO ERROR: > > In file > > /usr/xenocara/lib/mesa/mk/libaco/../../src/amd/compiler/aco_assembler.cpp:1269 > > Unsupported opcode: v1: :v[2] = v_lshlrev_b16 8, > > :v[2] > > This is a radeondrm device? Can you show a dmesg? > > An attempt to fix this problem was made upstream > https://gitlab.freedesktop.org/mesa/mesa/-/issues/13072 > > It was realised at the end of the 25.0 branch it wasn't enough. > https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35150 > "Users who need the fix will need to update to 25.1+" > > -current has the last Mesa 25.0 release, 25.0.7.
Try rebuild xenocara with the following patch. reverts the 25.0 backport of: radeonsi: always lower alu bit sizes 2d525d5e3401555d97fe827f8db5bfed8887dc33 cherry picks: radv: don't use bit_sizes_int to skip nir_lower_bit_size f034aa9cd31ea4aa367f8ed58bd270026abf748e radeonsi: always lower alu bit sizes 33b5d8b2ec26904ec1c331dd64ee04e351fd8e0e Index: lib/mesa/src/amd/common/nir/ac_nir.c =================================================================== RCS file: /cvs/xenocara/lib/mesa/src/amd/common/nir/ac_nir.c,v diff -u -p -r1.1.1.1 ac_nir.c --- lib/mesa/src/amd/common/nir/ac_nir.c 5 Jun 2025 11:26:30 -0000 1.1.1.1 +++ lib/mesa/src/amd/common/nir/ac_nir.c 17 Jul 2025 05:41:07 -0000 @@ -340,11 +340,9 @@ ac_nir_optimize_uniform_atomics(nir_shad return progress; } -unsigned -ac_nir_lower_bit_size_callback(const nir_instr *instr, void *data) +static unsigned +lower_bit_size_callback(const nir_instr *instr, enum amd_gfx_level chip, bool divergence_known) { - enum amd_gfx_level chip = *(enum amd_gfx_level *)data; - if (instr->type != nir_instr_type_alu) return 0; nir_alu_instr *alu = nir_instr_as_alu(instr); @@ -374,10 +372,10 @@ ac_nir_lower_bit_size_callback(const nir case nir_op_isign: case nir_op_uadd_sat: case nir_op_usub_sat: - return (bit_size == 8 || !(chip >= GFX8 && alu->def.divergent)) ? 32 : 0; + return (!divergence_known || bit_size == 8 || !(chip >= GFX8 && alu->def.divergent)) ? 32 : 0; case nir_op_iadd_sat: case nir_op_isub_sat: - return bit_size == 8 || !alu->def.divergent ? 32 : 0; + return !divergence_known || bit_size == 8 || !alu->def.divergent ? 32 : 0; default: return 0; @@ -399,13 +397,35 @@ ac_nir_lower_bit_size_callback(const nir case nir_op_uge: case nir_op_bitz: case nir_op_bitnz: - return (bit_size == 8 || !(chip >= GFX8 && alu->def.divergent)) ? 32 : 0; + return (!divergence_known || bit_size == 8 || !(chip >= GFX8 && alu->def.divergent)) ? 32 : 0; default: return 0; } } return 0; +} + +unsigned +ac_nir_lower_bit_size_callback(const nir_instr *instr, void *data) +{ + enum amd_gfx_level chip = *(enum amd_gfx_level *)data; + return lower_bit_size_callback(instr, chip, true); +} + +bool +ac_nir_might_lower_bit_size(const nir_shader *shader) +{ + nir_foreach_function_impl(impl, shader) { + nir_foreach_block(block, impl) { + nir_foreach_instr(instr, block) { + if (lower_bit_size_callback(instr, CLASS_UNKNOWN, false)) + return true; + } + } + } + + return false; } static unsigned Index: lib/mesa/src/amd/common/nir/ac_nir.h =================================================================== RCS file: /cvs/xenocara/lib/mesa/src/amd/common/nir/ac_nir.h,v diff -u -p -r1.1.1.1 ac_nir.h --- lib/mesa/src/amd/common/nir/ac_nir.h 5 Jun 2025 11:26:30 -0000 1.1.1.1 +++ lib/mesa/src/amd/common/nir/ac_nir.h 17 Jul 2025 05:41:07 -0000 @@ -397,6 +397,9 @@ unsigned ac_nir_lower_bit_size_callback(const nir_instr *instr, void *data); bool +ac_nir_might_lower_bit_size(const nir_shader *shader); + +bool ac_nir_mem_vectorize_callback(unsigned align_mul, unsigned align_offset, unsigned bit_size, unsigned num_components, int64_t hole_size, nir_intrinsic_instr *low, nir_intrinsic_instr *high, void *data); Index: lib/mesa/src/amd/vulkan/radv_pipeline.c =================================================================== RCS file: /cvs/xenocara/lib/mesa/src/amd/vulkan/radv_pipeline.c,v diff -u -p -r1.22 radv_pipeline.c --- lib/mesa/src/amd/vulkan/radv_pipeline.c 5 Jun 2025 14:18:54 -0000 1.22 +++ lib/mesa/src/amd/vulkan/radv_pipeline.c 17 Jul 2025 05:41:07 -0000 @@ -352,9 +352,6 @@ radv_postprocess_nir(struct radv_device NIR_PASS(_, stage->nir, nir_opt_shrink_stores, !instance->drirc.disable_shrink_image_store); constant_fold_for_push_const = true; - - /* Gather info again, to update whether 8/16-bit are used. */ - nir_shader_gather_info(stage->nir, nir_shader_get_entrypoint(stage->nir)); } } @@ -533,7 +530,7 @@ radv_postprocess_nir(struct radv_device NIR_PASS(_, stage->nir, nir_lower_fp16_casts, nir_lower_fp16_split_fp64); - if (stage->nir->info.bit_sizes_int & (8 | 16)) { + if (ac_nir_might_lower_bit_size(stage->nir)) { if (gfx_level >= GFX8) nir_divergence_analysis(stage->nir); Index: lib/mesa/src/gallium/drivers/radeonsi/si_shader.c =================================================================== RCS file: /cvs/xenocara/lib/mesa/src/gallium/drivers/radeonsi/si_shader.c,v diff -u -p -r1.18 si_shader.c --- lib/mesa/src/gallium/drivers/radeonsi/si_shader.c 5 Jun 2025 14:19:19 -0000 1.18 +++ lib/mesa/src/gallium/drivers/radeonsi/si_shader.c 17 Jul 2025 05:41:07 -0000 @@ -2556,7 +2556,7 @@ static void run_late_optimization_and_lo if (nir->info.stage == MESA_SHADER_KERNEL) NIR_PASS(progress, nir, ac_nir_lower_global_access); - if (nir->info.bit_sizes_int & (8 | 16)) { + if (ac_nir_might_lower_bit_size(nir)) { if (sel->screen->info.gfx_level >= GFX8) nir_divergence_analysis(nir);