On Mon, 13 Oct 2025, Chad Jablonski wrote:
I'm not saying the 64MB alignment is not correct (I don't know what is
correct and assuming the Xorg driver was tested with real cards it's
possible this assumption holds) but maybe it comes from having a 64MB VRAM
BAR that contains twice the size of actual VRAM including the AGP window
which also satisfies the 32MB alignment for VRAM, so the commit message
may nees to be adjusted to say that instead of something not supported by
documentation. Do you have any PCI cards? There were PCI versions of
these. I wonder if they also have the same VRAM BAR. If not then no
problem, we can go with what works for known drivers.


Unfortunately I don't have a PCI Rage 128. They actually seem to be somewhat
rare compared to the AGP versions!

Testing results from two Rage 128 AGP cards:

Card                      VRAM    PCI BAR0   CONFIG_MEMSIZE  CONFIG_APER_SIZE  
AGP_APER_OFFSET
-----------------------   ----    --------   --------------  ----------------  
---------------
Rage 128 Pro Ultra TF     32MB    64MB       0x02000000      0x02000000        
0x02000000
Rage 128 RF/SG AGP        16MB    64MB       0x01000000      0x02000000        
0x02000000


* PCI BAR0 (Region 0) is fixed at 64MB for both cards, regardless of actual
 VRAM size.

* CONFIG_MEMSIZE correctly reports actual VRAM size (32MB and 16MB).

* CONFIG_APER_SIZE is fixed at 32MB (0x02000000) on both cards, regardless
 of:
  - Actual VRAM size
  - AGP enabled/disabled status
  - AGP_APER_SIZE configuration (tested with 8MB AGP enabled)

  This directly contradicts the Rage 128 Pro Register Reference Guide
  (pg. 3-202) which states: "Size of linear apertures (both 0 and 1).
  This includes both the frame buffer image and the AGP system memory
  image area."

* AGP_APER_OFFSET is also fixed at 32MB (0x02000000) on both cards. On the
 16MB card, this creates a 16MB gap between the end of framebuffer and the
 start of the AGP window.

This matches the docs in which a figure shows area after CONFIG_MEMSIZE as VRAM extension area so 32MB is reserved for VRAM even if there's less on the card and the AGP window starts after that.

So for Rage 128, CONFIG_APER_SIZE should be set to a fixed 32MB value, not
dynamically calculated from CONFIG_MEMSIZE + AGP space as the documentation
suggests and as was previously implemented by me 😬.

I'm less sure about the Radeon and your additional context around the Radeon
on PowerPC makes me very nervous to change it right now. Especially given I
have a single example of that card and it's for a PC. I think it makes more
sense to leave the behavior of CONFIG_APER_SIZE for that card unchanged.

Question is if Radeon has BAR0 matching VRAM size because in that case if Rage128 has fixed 64MB and Radeon has size of VRAM for BAR0 then CONFIG_APER_SIZE can be half of BAR0 which would work for both. But if Radeon also has a fixed size BAR0 larger than actual VRAM (mathching max supported VRAM instead then current calculation is needed using VRAM size for radeon according to the FCode ROM I've tested. Changing CONFIG_APER_SIZE only for Rage128 should not break anything as I did not see anything using that so that would also work if we can't find out what Radeon has.

Regards,
BALATON Zoltan

I will send a v2 patch that:
 * Sets Rage 128 CONFIG_APER_SIZE to 32MB
 * Updates the commit message to reflect that
 * Leaves Radeon unchanged (half of the vram_size)
 * Addresses the style issues

Reply via email to