ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Pavel S. Khmelinsky" <hmepas@altlinux.ru>
To: ALT Devel discussion list <devel@altlinux.ru>
Subject: [devel] fglrx: screen corrupt after switch from console [workaround]
Date: Thu, 08 Apr 2004 01:03:44 +0400
Message-ID: <40746CB0.9050405@altlinux.ru> (raw)

При использовании драйвера fglrx для карточек ATI Radeon на 
большинтсве конфигураций наблюдается следующий эффект: если 
переключится в консоль а потом обратно в иксы, портятся цвета и 
шрифты на экране. Лечится как правило запуском fgl_glxgears.

И что я заметил, если запустить fireglcontrol и во вкладке 
Adjustments поставить ползунки в крайнее левое положение 
(значение 0.10) то изображение гамму не изменит, зато при 
переключение в консоль и обратно оно не будет порится.

Поковырявшись в сорцах fglrx_panel и подсмотрев что происходит 
при изменении гаммы я написал простенькую программку.

hmepas@localhost BUILD/fglrx_glx-3.7.6/fglrx_panel $ cat 
gamma_corr.cpp
#include <qlabel.h>
#include <qtabdialog.h>
#include <qfile.h>
#include <stdio.h>

#include "FireGLControl.h"
#include "watermark.xpm"
#include "buttons.xpm"


#include "FGLRXExtensions.h"
extern "C" {
     bool ExtGetDriverData(FGLRXDriverDataPtr pDriverData);
     bool ExtSetGamma(FGLRXGammaSettingsPtr pGammaSettings);
}

QString InstallPath ;

int main ( )
{
         bool                RetC=FALSE ;
         FGLRXGammaSettingsRec GammaSettings;

         GammaSettings.Monitor = 0;
         GammaSettings.ulGamma = 10496010;
/*              (unsigned long) ((((unsigned long)(m_Gamma.red 
* 100)) << 20 ) |
                                  (((unsigned long)(m_Gamma.green 
* 100)) << 10 ) |
                                  (((unsigned long)(m_Gamma.blue 
* 100))));*/
         RetC = ExtSetGamma(&GammaSettings);
         //    printf("Second method\tGammaSettings.ulGamma: 
%X\n",GammaSettings.ulGamma);
         return 0;
}

Важно! Работает для Screen 0! Запускайте на первых иксах.

Для компиляции ее нужно положить в папку fglrx_panel, при сборке 
пакета fglrx_tools (после rpm -i fglrx_glx-3.7.6-alt1.src.rpm && 
rpm -bc  ~/RPM/SPECS/fglrx_glx.spec ).

Собирается строчками:
g++ -c -O2 -fno-strength-reduce -funsigned-char -Wall -W -Dlinux 
-DFGLRX_USE_XEXTENSIONS -DFGLRX_OGL_INFO -DQT_NO_STL 
-I/usr/lib/qt3//include -I. -I./include_dummy gamma_corr.cpp

g++ FGLRXExtensions.o ATITVOExtensions.o gamma_corr.o Sheet.o 
Page.o InfoPage.o DualScreenPage.o AdjustPage.o TVoutAdjustPage.o 
BoardInfo.o moc_Sheet.o moc_Page.o moc_InfoPage.o 
moc_DualScreenPage.o moc_AdjustPage.o moc_TVoutAdjustPage.o -o 
gamma_corr -L/usr/lib/qt3//lib -L/usr/X11R6/lib -lqt -lGLU -lGL 
-lXmu -lICE -lSM -ldl -lXext -lX11 -lm -lXinerama -lXrender 
-lfreetype -lXxf86vm -L/usr/X11R6/lib -lXft

Собирать естественно надо после запуска make all в этой папке.

Я эту програмку прописал на запуск вместе с иксами -- как 
следствие экран не портится. Хотя не факт что это решение будет 
работать у кого-то другого, но у меня работает.

Вот такие вот дела, за корявость написания/компиляции прошу не 
ругать, не ставил своей целью написать готовую обособленную 
утилиту. Это всего-лишь элюстрация решения, вмоем случае, 
проблемы с порчей экрана, которая, возможно, поможет кому-нибудь 
более опытному найти грамотное и более правильное решение этой 
проблемы.

Готовую программу можно скачать здесь
http://www.hmepas.yauza.ru/gamma_corr.gz (~124Kb)
Осторожно! Апач отдает ее как text/plain поэтому не качайте 
браузером, лучше
wget http://www.hmepas.yauza.ru/gamma_corr.gz



             reply	other threads:[~2004-04-07 21:03 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-07 21:03 Pavel S. Khmelinsky [this message]
2004-04-08  3:21 ` Alexey Morozov
2004-04-08  8:14   ` Pavel S. Khmelinsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=40746CB0.9050405@altlinux.ru \
    --to=hmepas@altlinux.ru \
    --cc=devel@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git