Re: [Dri-devel] Mach64 developers

2001-09-25 Thread Manuel Teira

El Mar 25 Sep 2001 07:27, escribiste:
 On Sun, 23 Sep 2001, Manuel Teira wrote:
  Perhaps we should work with the latest DRI trunk. Do you think it worth
  the effort?

 It seems that most of the changes I noticed have been in the drivers for
 the newer cards, but I haven't really looked at it that closely at this
 point.  I'm certainly no authority on this, I'm still trying to comprehend
 everything. ;)

  A logical analysis: The reset engine code is ORing the BUS_CNTL
  with 0x00a0, right? But we are suspecting that the component
  0x0080 could be read only, and after looking at the code and the
  defines, it seems that this bit is redefined for the newer cards. Well,
  if the bit were read-only, the DRI_INFO for that register could learn us
  something. In my laptop, the BUS_CNTL before and after the DMA tests is
  always:
  BUS_CNTL = 0x7b3fa001
  As you can see, the 0x0080 is not set, and the 0x0020 is set.
  Perhaps this is meaning that this bit is read-only and, so,  the supposed
  obsoleted BUS_LAT16X ?
 
  What value is holding your  BUS_CNTL ?

 I get 0x7b3fa101 before the test, which is the same except that bit 8
 (reserved) is set, and after the DMA test (with the new code that resets
 the engine) I get 0x7b3fa141 -- BUS_MASTER_DIS is set by the reset code.

Yes, excuse me. I'm getting 0x7b3fa041 after the test. Anyway, your results 
match my suposition that BUS_LAT16X is still present.



Regards.
-- M. Teira


___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-23 Thread Manuel Teira

El Dom 23 Sep 2001 04:50, escribiste:
 According to the register ref. (p.4-26), GB means BGA package, AGP:
 both 1x and 2x).  I have an LT Pro, which has LB in the device ID.
 This is in the CFG_CHIP_TYPE in CONFIG_CHIP_ID.  There's also a class,
 foundry ID, and major/minor numbers in CONFIG_CHIP_ID.

 At any rate, I just looked at the dri trunk and it looks like there was a
 change here. The 'else' (mentioned in my previous mail) is now:

 else if (Chip  ATI_CHIP_264VT4)

 I checked, and all other references to these regs in the code work the
 same way, so if the code is correct it seems that:

 BUS_FIFO_ERR_INT_EN, BUS_FIFO_ERR_INT are used for chips  ATI_CHIP_264VTB
 BUS_HOST_ERR_INT_EN, BUS_HOST_ERR_INT are used for chips  ATI_CHIP_264VT4

Perhaps we should work with the latest DRI trunk. Do you think it worth the 
effort?

A logical analysis: The reset engine code is ORing the BUS_CNTL 
with 0x00a0, right? But we are suspecting that the component 0x0080 
could be read only, and after looking at the code and the defines, it seems 
that this bit is redefined for the newer cards. Well, if the bit were 
read-only, the DRI_INFO for that register could learn us something. In my 
laptop, the BUS_CNTL before and after the DMA tests is always:
BUS_CNTL = 0x7b3fa001
As you can see, the 0x0080 is not set, and the 0x0020 is set. Perhaps 
this is meaning that this bit is read-only and, so,  the supposed 
obsoleted BUS_LAT16X ?

What value is holding your  BUS_CNTL ?

--
M. Teira



___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Andreas Karrenbauer

Hi guys!

I've had lot of other things to do in the past weeks so I couldn't work 
on mach64. I've still problems to compile the trunk with Manuel's 
patches. I haven't had time to track this down, so I decided to post my 
changes of mach64_dma.c which I have made in my copy of the 
mach64-branch. There it compiles well. The GUI-master isn't performed 
though, but I rewrote the reset_engine function according to the 
programmer's guide and I call it if the idle test after the transfer 
failed. So hardware doesn't lock on my machine and I can start X where 
glxinfo tells me that I'm have hardware based DRI but gears locks my 
machine  so that I have to reboot vie ssh.

It is possible, that the mach64_dma.c doesn't compile because I couldn't 
test it. If something fails please report to me; there may be cut and 
paste errors.

--Andreas Karrenbauer



/* mach64_dma.c -- DMA support for mach64 (Rage Pro) driver -*- linux-c -*-
 * Created: Sun Dec 03 19:20:26 2000 by [EMAIL PROTECTED]
 *
 * Copyright 2000 Gareth Hughes
 * All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the Software),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the next
 * paragraph) shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * GARETH HUGHES BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * Authors:
 *   Gareth Hughes [EMAIL PROTECTED]
 */

#include mach64.h
#include drmP.h
#include mach64_drv.h

#include linux/interrupt.h/* For task queue support */
#include linux/delay.h


static unsigned long mach64_alloc_page( void )
{
unsigned long address;

address = __get_free_page( GFP_KERNEL );
if ( address == 0UL ) {
return 0;
}
atomic_inc( virt_to_page(address)-count );
set_bit( PG_reserved, virt_to_page(address)-flags );

return address;
}

static void mach64_free_page( unsigned long address )
{
if ( !address ) return;

atomic_dec( virt_to_page(address)-count );
clear_bit( PG_reserved, virt_to_page(address)-flags );
free_page( address );

return;
}



/* 
 * Engine control
 */

int mach64_do_wait_for_fifo( drm_mach64_private_t *dev_priv, int entries )
{
int slots = 0, i;

for ( i = 0 ; i  dev_priv-usec_timeout ; i++ ) {
slots = (MACH64_READ( MACH64_FIFO_STAT ) 
 MACH64_FIFO_SLOT_MASK);
if ( slots = (0x8000  entries) ) return 0;
udelay( 1 );
}

DRM_ERROR( failed! slots=%d entries=%d\n, slots, entries );
return -EBUSY;
}

int mach64_do_wait_for_idle( drm_mach64_private_t *dev_priv )
{
int i, ret;

ret = mach64_do_wait_for_fifo( dev_priv, 16 );
if ( ret  0 ) return ret;

for ( i = 0 ; i  dev_priv-usec_timeout ; i++ ) {
if ( !(MACH64_READ( MACH64_GUI_STAT )  MACH64_GUI_ACTIVE) ) {
return 0;
}
udelay( 1 );
}

DRM_ERROR( failed! GUI_STAT=0x%08x\n,
   MACH64_READ( MACH64_GUI_STAT ) );
return -EBUSY;
}

int mach64_do_engine_reset( drm_mach64_private_t *dev_priv )
{
u32 bus_cntl, gen_test_cntl;

/* Kill off any outstanding DMA transfers.
 */
bus_cntl = MACH64_READ( MACH64_BUS_CNTL );
MACH64_WRITE( MACH64_BUS_CNTL,
  bus_cntl | MACH64_BUS_MASTER_DIS );

/* Reset the GUI engine (high to low transition).
 */
gen_test_cntl = MACH64_READ( MACH64_GEN_TEST_CNTL );
MACH64_WRITE( MACH64_GEN_TEST_CNTL,
  gen_test_cntl  ~MACH64_GUI_ENGINE_ENABLE );
/* Enable the GUI engine
 */
gen_test_cntl = MACH64_READ( MACH64_GEN_TEST_CNTL );
MACH64_WRITE( MACH64_GEN_TEST_CNTL,
  gen_test_cntl | MACH64_GUI_ENGINE_ENABLE );

/* ensure engine is not locked up by clearing any FIFO or HOST errors
*/
bus_cntl = MACH64_READ( MACH64_BUS_CNTL );
MACH64_WRITE( MACH64_BUS_CNTL, bus_cntl | 0x00a0 );


Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Manuel Teira

El Sáb 22 Sep 2001 14:54, escribiste:
 Hi guys!

 I've had lot of other things to do in the past weeks so I couldn't work
 on mach64. I've still problems to compile the trunk with Manuel's
 patches. I haven't had time to track this down, so I decided to post my
 changes of mach64_dma.c which I have made in my copy of the
 mach64-branch. There it compiles well. The GUI-master isn't performed
 though, but I rewrote the reset_engine function according to the
 programmer's guide and I call it if the idle test after the transfer
 failed. So hardware doesn't lock on my machine and I can start X where
 glxinfo tells me that I'm have hardware based DRI but gears locks my
 machine  so that I have to reboot vie ssh.

It's nice to hear about you again. I'll test the changes you've made on my
machine ASAP. BTW, I've take a fast look about the way you are allocating the
memory for the test:

struct pci_pool *pool;
 void *cpu_addr_table, *cpu_addr_data;
void *cpu_addr_table, *cpu_addr_data;
pool = pci_pool_create( mach64, NULL, 0x4000, 0x4000, 0x4000, SLAB_ATOMIC );
cpu_addr_table = pci_pool_alloc( pool, SLAB_ATOMIC, table_addr );
cpu_addr_data = pci_pool_alloc( pool, SLAB_ATOMIC, data_addr );

What alignment are you getting on this way? Could we select a diferent
alignment using this kind of memory alloc?



 It is possible, that the mach64_dma.c doesn't compile because I couldn't
 test it. If something fails please report to me; there may be cut and
 paste errors.

I'll try soon.

--
M. Teira

___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Andreas Karrenbauer

Manuel Teira wrote:

 It's nice to hear about you again. I'll test the changes you've made on my 
 machine ASAP. BTW, I've take a fast look about the way you are allocating the 
 memory for the test:
 
 struct pci_pool *pool;
  void *cpu_addr_table, *cpu_addr_data;
 void *cpu_addr_table, *cpu_addr_data;
 pool = pci_pool_create( mach64, NULL, 0x4000, 0x4000, 0x4000, SLAB_ATOMIC );
 cpu_addr_table = pci_pool_alloc( pool, SLAB_ATOMIC, table_addr );
 cpu_addr_data = pci_pool_alloc( pool, SLAB_ATOMIC, data_addr );
 
 What alignment are you getting on this way? Could we select a diferent 
 alignment using this kind of memory alloc?

have a look at kernel-source-dir/Documentation/DMA-mapping.txt

there's the explaination about this API. I think we should use this if 
anybody hasn't any objections.
pci_pool_create is specified:
pool = pci_pool_create( name, dev, size, align, alloc, flags );
in this case a 16kB buffer aligned to 16kB boundry (16384 = 0x4000)

please tell me status of your Xserver after starting. does it start up? 
does the hardware lock? are you able to run gears without locking? what 
does glxinfo tell you?
I would like to compare to my status in order to have the same working 
ground.

Furthermore I suggest to drop the GUI master issue at the moment (it 
isn't used in the driver right now or am I wrong? and therefore it is 
just a performance issue)
If your gears locks too, then I would first track this down. Debuging 
this is very hard because I have to boot after every try.

--Andreas Karrenbauer


___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Manuel Teira

El Sáb 22 Sep 2001 17:03, escribiste:
 Manuel Teira wrote:


 have a look at kernel-source-dir/Documentation/DMA-mapping.txt

OK. Thanks for the help.

 there's the explaination about this API. I think we should use this if
 anybody hasn't any objections.
 pci_pool_create is specified:
 pool = pci_pool_create( name, dev, size, align, alloc, flags );
 in this case a 16kB buffer aligned to 16kB boundry (16384 = 0x4000)


I think it's fine.

 please tell me status of your Xserver after starting. does it start up?
 does the hardware lock? are you able to run gears without locking? what
 does glxinfo tell you?

To say you the truth, I haven't been trying to test the XServer with any 
client. I was just starting it, stopping it (using Ctrl+Alt+BackSpace) and 
looking at the /var/log/kern.log to see the DMA test status.

Now, I've started the X with this command:
xinit -- /usr/X11DRI/bin/XFree86 
that's the location of my testing XFree server.

After that, my WindowManager (KDE) started. I tried the glxinfo after setting 
the LD_LIBRARY_PATH to :
LD_LIBRARY_PATH=/usr/X11DRI/lib

and the result is:
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
client glx vendor string: SGI
client glx version string: 1.2
client glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context
OpenGL vendor string: Gareth Hughes
OpenGL renderer string: Mesa DRI Mach64 20001218 [Rage Pro] x86/SSE
OpenGL version string: 1.2 Mesa 3.4.2
OpenGL extensions:
GL_ARB_multitexture, GL_ARB_transpose_matrix, GL_EXT_abgr,
GL_EXT_blend_func_separate, GL_EXT_clip_volume_hint,
GL_EXT_compiled_vertex_array, GL_EXT_histogram, GL_EXT_packed_pixels,
GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_stencil_wrap,
GL_EXT_texture3D, GL_EXT_texture_object, GL_EXT_vertex_array,
GL_MESA_window_pos, GL_MESA_resize_buffers, GL_NV_texgen_reflection,
GL_PGI_misc_hints, GL_SGIS_pixel_texture, GL_SGIS_texture_edge_clamp
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
 
   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
--
0x23 16 tc  0 16  0 r  y  .  5  6  5  0  0 16  0  0  0  0  0  0 0 None
0x24 16 tc  0 16  0 r  y  .  5  6  5  0  0 16  8  0  0  0  0  0 0 Slow
0x25 16 tc  0 16  0 r  y  .  5  6  5  0  0 16  0 16 16 16  0  0 0 Slow
0x26 16 tc  0 16  0 r  y  .  5  6  5  0  0 16  8 16 16 16  0  0 0 Slow
0x27 16 dc  0 16  0 r  y  .  5  6  5  0  0 16  0  0  0  0  0  0 0 None
0x28 16 dc  0 16  0 r  y  .  5  6  5  0  0 16  8  0  0  0  0  0 0 Slow
0x29 16 dc  0 16  0 r  y  .  5  6  5  0  0 16  0 16 16 16  0  0 0 Slow
0x2a 16 dc  0 16  0 r  y  .  5  6  5  0  0 16  8 16 16 16  0  0 0 Slow

Then, I closed my eyes and fired 'gears'. Well, it didn't lock my machine, 
the gears window only contained garbage, but the program was running, and 
saying:
1786 frames in 5.002 seconds = 357.057 FPS
1736 frames in 5 seconds = 347.2 FPS

Well, I tried it several times, all the time with the same result. On other 
terminal (without the LD_LIBRARY_PATH variable set) I tried gears, and it 
runs normally (without 2D or 3D acceleration) and getting around 120 FPS.


 I would like to compare to my status in order to have the same working
 ground.

 Furthermore I suggest to drop the GUI master issue at the moment (it
 isn't used in the driver right now or am I wrong? and therefore it is
 just a performance issue)

I suppose it's not used, because it never worked, while Gareth code was 
usable (at least with one of my laptops).

 If your gears locks too, then I would first track this down. Debuging
 this is very hard because I have to boot after every try.

If you want any log from my computer, please tell me.

I'm sending you the mach64_dma.c I'm using (it's just a merge between yours 
and mine). Perhaps you have to add some extra define to mach64_drv.h to use 
it, could be:
#   define MACH64_BUS_APER_REG_DIS  (1  4)
or
#   define MACH64_BUS_EXT_REG_EN(1  27)



--
Manuel Teira



/* mach64_dma.c -- DMA support for mach64 (Rage Pro) driver -*- linux-c -*-
 * Created: Sun Dec 03 19:20:26 2000 by [EMAIL PROTECTED]
 *
 * Copyright 2000 Gareth Hughes
 * All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the Software),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 

Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Manuel Teira

El Sáb 22 Sep 2001 18:12, escribiste:
 Manuel Teira wrote:
  Then, I closed my eyes and fired 'gears'. Well, it didn't lock my
  machine, the gears window only contained garbage, but the program was
  running, and saying:
  1786 frames in 5.002 seconds = 357.057 FPS
  1736 frames in 5 seconds = 347.2 FPS
 
  Well, I tried it several times, all the time with the same result. On
  other terminal (without the LD_LIBRARY_PATH variable set) I tried gears,
  and it runs normally (without 2D or 3D acceleration) and getting around
  120 FPS.

 well that's fine I get about the same values. I achieved ca. 350 fps one
 time and cannot reproduce.

Well, I said that it's getting 347 FPS, but nothing is showing in the window,
just garbage (and garbage that didn't looks like three wheels).

 so you are a step further than me. what kind of source are you using?
 the trunk or the branch?

I'm using the XFree 4.1.0 trunk with my modifications, and the mach64_dma.c
file I sent you today.

 Perhaps if I can overcome this compiling errors
 I have hw accelerated X, too. It would be great if you could do some
 testing with programs using 3D *AND* 2D and report whether something is
 wrong (like texture or things like that) When we have a running Xserver
 perhaps anybody with special connections to ATI could contact we the
 developers there and ask about some help why the GUI master doesn't work
 despite it is done as described in the programmer's guide. This only
 makes sense if we can exclude every other source of errors.
The 2D acceleration is disabled in my Xserver (as in the Gareth's code
(mach64 branch) ). Perhaps this is what is making your computer hang.


  If you want any log from my computer, please tell me.

 First I try to compile the trunk with the changes:

 for example, it starts at the  creation of the Makefiles:
 at /lib/GL/mesa/src/drv/mach64 the created Makefile is corupt (missing
 seperator is reported and the Makefile itself is a mess)
 it's possible that it is easy to fix but I haven't had time to

Perhaps your Imakefile is wrong. What codebase are you starting from?


--
M. Teira

___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread David Bronaugh

Hi,

This is re Andreas Karrenbauer's prob.. perhaps it's a bit off topic, but
it might help...

Have you tried logging in via SSH and killing off and starting X via that?
I have had a fair degree of success restoring graphics mode that way
(though text mode stays hosed).

As I said, I don't know if it's relevant (or even safe, registers could
change and not be restored), but so far as I can see it could really help
with devel time.

David Bronaugh

___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Manuel Teira

El Sáb 22 Sep 2001 19:08, escribiste:
 Manuel Teira wrote:
  El Sáb 22 Sep 2001 18:30, escribiste:
   You can pass an argument to isosurf to tell it to render only 100
   triangles (isosurf -100) - another good option, and you can get it to
   render more by moving with the arrow keys.
 
  isosurf, where could I find it?

 Mesa demos directory, same place gears normally lives.  see www.mesa3d.org.

 Keith

I have had problems trying to compile the demos myself, so, I've extracted
them from a binary package I've found.

And now, the results:

1.-When the new bm_dma_test is called from the dma_init it fails as ever.
Then, if I try to run the 'gears' demo, it hangs the machine.
2.-When the bm_dma_test is called from the dma_cleanout, the gears demo runs,
showing only garbage on the screen. So, it seems that we should blame the DMA
test for the locks.
3.-Finally, and in the same environment than (2), I've tried to run the
isosurf demo. Against all the bets, it worked. Well, it's able to render the
figures as good as in software mode (with the software GL library), but with
some problems:
- There's garbage in the background of the window.
- The window is not cleaned for each frame, so, all the shapes are mixed on
the screen after some key strokes.

Now, we need somebody with knowledge about the internals to look for the
reason of this behaviour. Perhaps something related with buffer swapping?

--
M. Teira

___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Leif Delgass

On Sat, 22 Sep 2001, Manuel Teira wrote:

 El Sáb 22 Sep 2001 19:08, escribiste:
  Manuel Teira wrote:
   El Sáb 22 Sep 2001 18:30, escribiste:
You can pass an argument to isosurf to tell it to render only 100
triangles (isosurf -100) - another good option, and you can get it to
render more by moving with the arrow keys.
  
   isosurf, where could I find it?
 
  Mesa demos directory, same place gears normally lives.  see www.mesa3d.org.
 
  Keith

 I have had problems trying to compile the demos myself, so, I've extracted
 them from a binary package I've found.

 And now, the results:

 1.-When the new bm_dma_test is called from the dma_init it fails as ever.
 Then, if I try to run the 'gears' demo, it hangs the machine.
 2.-When the bm_dma_test is called from the dma_cleanout, the gears demo runs,
 showing only garbage on the screen. So, it seems that we should blame the DMA
 test for the locks.
 3.-Finally, and in the same environment than (2), I've tried to run the
 isosurf demo. Against all the bets, it worked. Well, it's able to render the
 figures as good as in software mode (with the software GL library), but with
 some problems:
   - There's garbage in the background of the window.
   - The window is not cleaned for each frame, so, all the shapes are mixed on
 the screen after some key strokes.


I've tried out the changes and I got the same results with glxheads.  The
garbage in the background for me is part of the KDE splash screen and part
of my desktop background.  Again, the shapes are drawn and rotated, but
the window is not cleared for each frame.

I'm a bit confused about something in the engine reset code.  The sample
engine reset code in the programmer's guide mentions setting
BUS_FIFO_ERR_ACK and BUS_HOST_ERR_ACK in BUS_CNTL (0x00a0), but the
register guide shows these bits as BUS_MSTR_RD_LINE and LAT16X
respectively, with LAT16X being read-only.  The 2D driver (atiregs.h) has
these defines:

#define BUS_FIFO_ERR_INT_EN 0x0010ul
#define BUS_MSTR_RD_MULT0x0010ul/* VTB/GTB/LT */
#define BUS_FIFO_ERR_INT0x0020ul
#define BUS_MSTR_RD_LINE0x0020ul/* VTB/GTB/LT */
#define BUS_HOST_ERR_INT_EN 0x0040ul
#define BUS_SUSPEND 0x0040ul/* GTPro */
#define BUS_HOST_ERR_INT0x0080ul
#define BUS_LAT16X  0x0080ul/* GTPro */

..and there is code like this in atiprobe.c:

/* Make sure any Mach64 is not in some weird state */
bus_cntl = inr(BUS_CNTL);
if (Chip  ATI_CHIP_264VTB)
outr(BUS_CNTL,
 (bus_cntl  ~(BUS_HOST_ERR_INT_EN | BUS_FIFO_ERR_INT_EN)) |
 (BUS_HOST_ERR_INT | BUS_FIFO_ERR_INT));
else
outr(BUS_CNTL, (bus_cntl  ~BUS_HOST_ERR_INT_EN) | BUS_HOST_ERR_INT);

Does anyone know what's going on here?

-- 
Leif Delgass


___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Mach64 developers

2001-09-22 Thread Carl Busjahn

Hi all,
I've looked at the documentation, and it's odd, it seems like nobody is 
mentioning the Mach64 GB.  It might be this is simply named wrong in my 
bios, and it seems to run the same as other cards.

Here's my PCI entry: pci bus 0x1 cardnum 0x00 function 0x: vendor 
0x1002 device 0x4742 ATI Mach64 GB

This is a All in Wonder model but this may all be irrelevant.

Carl Busjahn

Manuel Teira wrote:

El Dom 23 Sep 2001 00:28, escribiste:

On Sat, 22 Sep 2001, Manuel Teira wrote:

El Sáb 22 Sep 2001 19:08, escribiste:
And now, the results:

1.-When the new bm_dma_test is called from the dma_init it fails as ever.
Then, if I try to run the 'gears' demo, it hangs the machine.
2.-When the bm_dma_test is called from the dma_cleanout, the gears demo
runs, showing only garbage on the screen. So, it seems that we should
blame the DMA test for the locks.
3.-Finally, and in the same environment than (2), I've tried to run the
isosurf demo. Against all the bets, it worked. Well, it's able to render
the figures as good as in software mode (with the software GL library),
but with some problems:
 - There's garbage in the background of the window.
 - The window is not cleaned for each frame, so, all the shapes are mixed
on the screen after some key strokes.

I've tried out the changes and I got the same results with glxheads.  The
garbage in the background for me is part of the KDE splash screen and part
of my desktop background.  Again, the shapes are drawn and rotated, but
the window is not cleared for each frame.

Exactly the same I'm experimenting (part of the KDE splash screen).

I'm a bit confused about something in the engine reset code.  The sample
engine reset code in the programmer's guide mentions setting
BUS_FIFO_ERR_ACK and BUS_HOST_ERR_ACK in BUS_CNTL (0x00a0), but the
register guide shows these bits as BUS_MSTR_RD_LINE and LAT16X
respectively, with LAT16X being read-only.  The 2D driver (atiregs.h) has
these defines:

#define BUS_FIFO_ERR_INT_EN 0x0010ul
#define BUS_MSTR_RD_MULT0x0010ul/* VTB/GTB/LT */
#define BUS_FIFO_ERR_INT0x0020ul
#define BUS_MSTR_RD_LINE0x0020ul/* VTB/GTB/LT */
#define BUS_HOST_ERR_INT_EN 0x0040ul
#define BUS_SUSPEND 0x0040ul/* GTPro */
#define BUS_HOST_ERR_INT0x0080ul
#define BUS_LAT16X  0x0080ul/* GTPro */

Yes, it's really weird. Comparing the Programmers Guide and the Register's 
Reference guide, I see the following:
iow32(BUS_CNTL,(ior32(BUS_CNTL)|0x00a0))
and after reading the Register Reference Guide, 
0x00a0=BUS_MSTR_RD_LINE | BUS_LAT16X

while in the Programmers Guide, they are talking about setting:
BUS_FIFO_ERR_ACK@BUS_CNTL and BUS_HOST_ERR_ACK@BUS_CNTL.

It seems that the register bits have different meanings regarding the Card 
Model, as you can see in the define comments. Anyway, it's not clear for me:
- GTPro. I assume, they're talking about a GT Model (Rage I, RageII, II+, 
IIC, Rage PRO). If we trust the Mach64 Programmers Guide, these models have 
3D acceleration (3D RAGE)
- VTB/GTB/LT.  This is strange. Assuming they're talking about  VT and GT 
models (but the GT model is the same as the GTPro). And what about the LT? 
Perhaps a RAGE LT-Pro (actually a LB/GM model).


..and there is code like this in atiprobe.c:

/* Make sure any Mach64 is not in some weird state */
bus_cntl = inr(BUS_CNTL);
if (Chip  ATI_CHIP_264VTB)
outr(BUS_CNTL,
 (bus_cntl  ~(BUS_HOST_ERR_INT_EN | BUS_FIFO_ERR_INT_EN)) |
 (BUS_HOST_ERR_INT | BUS_FIFO_ERR_INT));
else
outr(BUS_CNTL, (bus_cntl  ~BUS_HOST_ERR_INT_EN) |
BUS_HOST_ERR_INT);


After reading this, I suppose that with GTPro they're talking about an older 
model than the VT, that is, a Mach64GX Family model (if Chip  
ATI_CHIP_264VTB) . 
And there's something wrong, assuming that the 'else' is for the GTPro cards, 
they are trying to set the BUS_LAT16X == BUS_HOST_ERR_INT, a read only bit in 
the BUS_CNTL register.


Perhaps the Register Reference is not updated or have some bugs. I don't 
know. Could be a good idea to take a look at the XFree 3.x version to see how 
is it setting up the card, allowing Utah-GLX to work.

Does anyone know what's going on here?


___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel




___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel