* Now supports setting a framebuffer offset as overlay address instead of a physical
pointer (as needed by the G33 chipset). * Minor debug output improvements. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23739 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -15,9 +15,9 @@
|
|||||||
|
|
||||||
|
|
||||||
#undef TRACE
|
#undef TRACE
|
||||||
|
|
||||||
//#define TRACE_ENGINE
|
//#define TRACE_ENGINE
|
||||||
#ifdef TRACE_ENGINE
|
#ifdef TRACE_ENGINE
|
||||||
extern "C" void _sPrintf(const char *format, ...);
|
|
||||||
# define TRACE(x) _sPrintf x
|
# define TRACE(x) _sPrintf x
|
||||||
#else
|
#else
|
||||||
# define TRACE(x) ;
|
# define TRACE(x) ;
|
||||||
@@ -95,8 +95,15 @@ QueueCommands::PutOverlayFlip(uint32 mode, bool updateCoefficients)
|
|||||||
MakeSpace(2);
|
MakeSpace(2);
|
||||||
|
|
||||||
Write(COMMAND_OVERLAY_FLIP | mode);
|
Write(COMMAND_OVERLAY_FLIP | mode);
|
||||||
Write((uint32)gInfo->shared_info->physical_overlay_registers
|
|
||||||
| (updateCoefficients ? OVERLAY_UPDATE_COEFFICIENTS : 0));
|
uint32 registers;
|
||||||
|
if (gInfo->shared_info->overlay_offset != 0) {
|
||||||
|
// G33 does not need a physical address for the overlay registers
|
||||||
|
registers = gInfo->shared_info->overlay_offset;
|
||||||
|
} else
|
||||||
|
registers = (uint32)gInfo->shared_info->physical_overlay_registers;
|
||||||
|
|
||||||
|
Write(registers | (updateCoefficients ? OVERLAY_UPDATE_COEFFICIENTS : 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -104,6 +111,7 @@ void
|
|||||||
QueueCommands::MakeSpace(uint32 size)
|
QueueCommands::MakeSpace(uint32 size)
|
||||||
{
|
{
|
||||||
ASSERT((size & 1) == 0);
|
ASSERT((size & 1) == 0);
|
||||||
|
|
||||||
size *= sizeof(uint32);
|
size *= sizeof(uint32);
|
||||||
bigtime_t start = system_time();
|
bigtime_t start = system_time();
|
||||||
|
|
||||||
@@ -119,7 +127,7 @@ QueueCommands::MakeSpace(uint32 size)
|
|||||||
|
|
||||||
if (fRingBuffer.space_left < size) {
|
if (fRingBuffer.space_left < size) {
|
||||||
if (system_time() > start + 1000000LL) {
|
if (system_time() > start + 1000000LL) {
|
||||||
TRACE(("intel_extreme: engine stalled\n"));
|
TRACE(("intel_extreme: engine stalled, head %lx\n", head));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
spin(10);
|
spin(10);
|
||||||
@@ -246,7 +254,7 @@ intel_wait_engine_idle(void)
|
|||||||
|
|
||||||
if (system_time() > start + 1000000LL) {
|
if (system_time() > start + 1000000LL) {
|
||||||
// the engine seems to be locked up!
|
// the engine seems to be locked up!
|
||||||
TRACE(("intel_extreme: engine locked up!\n"));
|
TRACE(("intel_extreme: engine locked up, head %lx!\n", head));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user