add a linux specific grRenderBuffer to fix switching between FRONT and
BACK buffers.
This commit is contained in:
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.2 2000/11/14 14:11:19 alanh
|
||||
** merge in trunk updates, fixup pci code, and fix texus2 code pointers.
|
||||
**
|
||||
**
|
||||
** Revision 1.2 2000/10/27 07:54:51 alanh
|
||||
** fix readPtr0/1 -> depth0/1 check
|
||||
@@ -2272,7 +2275,7 @@ GR_ENTRY(grGlideSetState, void, (const void *state))
|
||||
** and the only drawbuffer modes supported by the fbzMode register are 0
|
||||
** (back) and 1 (front)
|
||||
*/
|
||||
|
||||
#ifndef __linux__
|
||||
GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
{
|
||||
#define FN_NAME "_grRenderBuffer"
|
||||
@@ -2288,17 +2291,9 @@ GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
? gc->frontBuffer
|
||||
: gc->backBuffer);
|
||||
if (oldBuffer != gc->curBuffer) {
|
||||
#ifdef __linux__
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers[gc->curBuffer]);
|
||||
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
|
||||
gc->state.shadow.colBufferStride);
|
||||
REG_GROUP_END();
|
||||
#else
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 1, 0x1);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers[gc->curBuffer]);
|
||||
REG_GROUP_END();
|
||||
#endif
|
||||
|
||||
gc->state.shadow.colBufferAddr = gc->buffers[gc->curBuffer];
|
||||
}
|
||||
@@ -2307,6 +2302,32 @@ GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
GR_END();
|
||||
#undef FN_NAME
|
||||
} /* grRenderBuffer */
|
||||
#else /* __linux__ */
|
||||
GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
{
|
||||
#define FN_NAME "_grRenderBuffer"
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 85);
|
||||
GDBG_INFO_MORE(gc->myLevel,"(%d)\n",buffer);
|
||||
GR_CHECK_F(myName, buffer >= GR_BUFFER_AUXBUFFER, "invalid buffer");
|
||||
|
||||
{
|
||||
gc->curBuffer = ((buffer == GR_BUFFER_FRONTBUFFER)
|
||||
? gc->frontBuffer
|
||||
: gc->backBuffer);
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers[gc->curBuffer]);
|
||||
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
|
||||
gc->state.shadow.colBufferStride);
|
||||
REG_GROUP_END();
|
||||
|
||||
gc->state.shadow.colBufferAddr = gc->buffers[gc->curBuffer];
|
||||
}
|
||||
|
||||
GR_END();
|
||||
#undef FN_NAME
|
||||
} /* grRenderBuffer */
|
||||
#else /* __linux__ */
|
||||
#endif
|
||||
|
||||
GR_ENTRY(grCheckForRoom, void, (FxI32 n))
|
||||
{
|
||||
|
||||
@@ -697,7 +697,7 @@ GR_STATE_ENTRY(grAlphaBlendFunction, void,
|
||||
alpha_sf = GR_BLEND_ONE;
|
||||
break;
|
||||
}
|
||||
switch (alpha_sf) {
|
||||
switch (alpha_df) {
|
||||
case GR_BLEND_ZERO:
|
||||
case GR_BLEND_SRC_ALPHA:
|
||||
case GR_BLEND_DST_ALPHA:
|
||||
@@ -4065,6 +4065,7 @@ GR_ENTRY(grGlideSetState, void, (const void *state))
|
||||
** and the only drawbuffer modes supported by the fbzMode register are 0
|
||||
** (back) and 1 (front)
|
||||
*/
|
||||
#ifndef __linux__
|
||||
GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
{
|
||||
#define FN_NAME "_grRenderBuffer"
|
||||
@@ -4084,17 +4085,9 @@ GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
? gc->frontBuffer
|
||||
: gc->backBuffer);
|
||||
if (oldBuffer != gc->curBuffer) {
|
||||
#ifdef __linux__
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers0[gc->curBuffer]);
|
||||
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
|
||||
gc->state.shadow.colBufferStride);
|
||||
REG_GROUP_END();
|
||||
#else /* defined(__linux__) */
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 1, 0x1);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers0[gc->curBuffer]);
|
||||
REG_GROUP_END();
|
||||
#endif /* defined(__linux__) */
|
||||
gc->state.shadow.colBufferAddr = gc->buffers0[gc->curBuffer];
|
||||
#ifdef FX_GLIDE_NAPALM
|
||||
if (IS_NAPALM(gc->bInfo->pciInfo.deviceID)) {
|
||||
@@ -4111,6 +4104,44 @@ GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
GR_END();
|
||||
#undef FN_NAME
|
||||
} /* grRenderBuffer */
|
||||
#else /* __linux__ */
|
||||
GR_STATE_ENTRY(grRenderBuffer, void, (GrBuffer_t buffer))
|
||||
{
|
||||
#define FN_NAME "_grRenderBuffer"
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 85);
|
||||
GDBG_INFO_MORE(gc->myLevel,"(%d)\n",buffer);
|
||||
/* tbext */
|
||||
GR_CHECK_F(myName, ((buffer != GR_BUFFER_TEXTUREBUFFER_EXT )
|
||||
&& (buffer != GR_BUFFER_FRONTBUFFER )
|
||||
&& (buffer != GR_BUFFER_BACKBUFFER )), "invalid buffer");
|
||||
{
|
||||
/* tbext */
|
||||
if ( !(buffer == GR_BUFFER_TEXTUREBUFFER_EXT ) ) {
|
||||
gc->curBuffer = ((buffer == GR_BUFFER_FRONTBUFFER)
|
||||
? gc->frontBuffer
|
||||
: gc->backBuffer);
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers0[gc->curBuffer]);
|
||||
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
|
||||
gc->state.shadow.colBufferStride);
|
||||
REG_GROUP_END();
|
||||
gc->state.shadow.colBufferAddr = gc->buffers0[gc->curBuffer];
|
||||
#ifdef FX_GLIDE_NAPALM
|
||||
if (IS_NAPALM(gc->bInfo->pciInfo.deviceID)) {
|
||||
if (gc->enableSecondaryBuffer) {
|
||||
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 1, 0x1);
|
||||
REG_GROUP_SET(hw, colBufferAddr, gc->buffers1[gc->curBuffer] | SST_BUFFER_BASE_SELECT);
|
||||
REG_GROUP_END();
|
||||
}
|
||||
}
|
||||
#endif /* FX_GLIDE_NAPALM */
|
||||
}/* endif ! buffer == GR_BUFFER_TEXTUREBUFFER_EXT */
|
||||
}
|
||||
GR_END();
|
||||
#undef FN_NAME
|
||||
} /* grRenderBuffer */
|
||||
#endif /* __linux__ */
|
||||
|
||||
|
||||
GR_ENTRY(grCheckForRoom, void, (FxI32 n))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user