On Thu, Jul 17, 2025 at 10:07:14PM +1200, Avon Robertson wrote:
> On Thu, Jul 17, 2025 at 03:58:36PM +1000, Jonathan Gray wrote:
> > 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.
> > > >
> [ snip ... ] 
> > 
> > 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);
> >  
> > 
> 
> Tomorrow I will apply your patch and rebuild xenocara.  I will post the
> results after the rebuild.
> 

-- 
aer

Hello Jonathan and misc@,

        -o Progress to date
- Updated my local CVS repo from rsync://anoncvs.au. ...
- sysupgrade('d) -s this machine
- updated the /usr/{xenocara,src,ports,www} trees on this machine
  from my local CVS repo.
- applied your patch.

Followed the directions given in '5.' of release(8) and invoked
as root:
# make bootstrap
# make obj
# make build (which failed with the errors shown next.)

        -o Tail end of make build ouput
wrcr4://usr/xenocara # make build
umask 007; exec make do-build
exec make bootstrap-root
exec make distrib-dirs
# running mtree
mtree -qdef /etc/mtree/BSD.x11.dist -p / -U
exec make install-mk
cd share/mk && exec make X11BASE=/usr/X11R6 install
install -c -o root -g bin -m 444 bsd.xconf.mk bsd.xorg.mk package_version.m4  
/usr/X11R6/share/mk
cd util/macros &&  exec su build -c 'exec make -f Makefile.bsd-wrapper'
make: getcwd: Permission denied
*** Error 2 in . (Makefile:35 'do-build')
*** Error 2 in /usr/xenocara (Makefile:26 'build')

The above 'make: getcwd: Permission denied' statement I have encountered 
before but I can not remember where, or what fixes it.

wrcr4://usr/xenocara # which getcwd
which: getcwd: Command not found.

        -o What now?

I will post this to misc@ only Jonathan because you may not appreciate
having my mail sent 'To:' you, or 'Cc:'d to you.  This post is to inform
you what I have done to date, and that I will check all permissions
again after I have sent this.

How should I proceed?

Thank you for your help Jonathan.

Regards,
Avon

Reply via email to