X11에서 Buffer 주소 얻어오는 방법이 있을까요?

dingulx2의 이미지

현재 x86계열 보드에 그래픽 라이브러리를 포팅하는 중입니다.
그래픽코어로는 ATI 칩셋을 쓰고 있습니다.

문제는, 제가 사용할 수 있는 ATI Driver가 X Server만 지원한다고 합니다.
Driver의 API가 아마 X Server에서 돌아갈 수 있는 것만 있어서...라고 추측되는데, 정확히 모르겠습니다.
API 문서도 주지 않더라구요...

결국 X Server와 X Protocol 통신으로 그래픽 라이브러리를 만들어야 하는 상황입니다.

가장 중요한 문제가,
지금 이 그래픽 라이브러리에서 그림을 그릴 메모리 영역, 즉 Buffer를 얻어와서,
위쪽 레이어인 응용프로그램 쪽에 전달해야 한다는 것입니다.
현재 라이브러리와 응용프로그램이 다 이렇게 만들어져 있어서, 제가 포팅할 때도 그 API를 맞춰야 합니다.

그런데 X 의 디자인상(Server-Client) Server에서 관리하는 Buffer 주소를 Client쪽에서 얻지 못하지 않습니까?

이 문제를 어떻게 해결해야 할지, 고수형님들의 조언을 듣고 싶습니다. 부탁드립니다.

세줄 요약
1. X용 Driver밖에 제공받지 못해서, X Server와 통신하는 라이브러리를 만들어야 함
2. 그런데 그림 그릴 Buffer 주소를 꼭 얻어서 응용프로그램에 넘겨줘야 함
3. 이를 어떻게 해결해야 하나요?

--------사족들-----
ps 1.
X11위에서 totem등의 미디어 플레이어로 동영상 플레이를 할 경우에, 동영상이 플레이 되는 부분은 어떤 방법을 이용합니까? 현재 제 경우와 비슷할 것 같아서요. 이규명씨의 "Frame Buffer 이야기" 문서에 따르면 X-Server와 Frame Buffer는 동시에 사용 못하는 것으로 나오는데, 제가 잘못 이해했거나, 미디어 플레이어에서 다른 방법을 쓸거라고 생각됩니다. 둘 중에 어떤게 맞는지요?

ps 2.
리눅스용 Quake 같은 경우는 GLX로 OpenGL + X11 을 구현한다고 들었습니다. 이때 Device Driver가 OpenGL을 지원한다는 가정이겠지요? (OpenGL과 API를 맞춘 거겠지요?) 지금 제 상황에서 GLX를 써서 그래픽 라이브러리를 구현한다면, Driver가 OpenGL을 지원한다는 이야기일텐데, 그러면 차라리 X11이고 뭐고 OpenGL을 써서 구현하는게 옳은 방법이겠지요? (OpenGL을 지원하는지는 확인 못해봤습니다.)

질문이 좀 난잡한 것 같습니다.
계속 고민 중이었는데, 뾰족한 답이 안 나옵니다.
고수님들 무심코 던지신 한마디에 개구리가 우물밖으로 나올 수 있습니다. 굽신굽신

Hyun의 이미지

굳이 X를 쓸 이유가 없다면...
ATI 칩셋이라면 프레임버퍼를 사용하고 mmap를 해서 포인터를 가져오면 안되나요? 흔히 사용하는 ATI의 칩셋이라면 커널에 프레임버퍼 드라이버가 있을텐데...


dingulx2의 이미지


답변주셔서 감사합니다.

역시 FB를 바로 쓰는 방법을 쓸 수 있겠지요?
업체 측에 칩셋에 대한 DirectFB용 드라이버를 부탁했는데,
X-Server용만 제공한다고 하길래 혹시 Framebuffer가 사용 불가능할까 했습니다.
아마 단지 API 맞추는 것을 안해줬다는 뜻이겠지요? 조언 감사합니다.

근데 혹시 이 외에 X11에서 Buffer 주소를 바로 얻어올 수 있는 방법이 없을까요?
이건 개인적으로도 궁금해서요
GLX 쪽이 답일까요...
보통 미디어 플레이어쪽에서는 동영상 플레이를 어떻게 하나요?

---------------------------------
Dogbert
---------------------------------

---------------------------------
Dogbert
---------------------------------

lethean의 이미지

구글에서 XF86DGAGetVideoLL() 함수를 찾아보시기 바랍니다.

v4l 또는 xawtv 소스를 찾아보셔도 될겁니다. 비디오 카드 프레임버퍼 주소를 얻어 비디오 캡쳐 장치에 전달하기 위해 예전에 사용한 걸로 기억합니다만... 최근 X서버에서는 동작하지 않는 경우도 발견해서... XFree86 4.3 서버까지는 정상동작을 확인한 함수입니다.

Nevermind... :)

Nevermind... :)

dingulx2의 이미지


오오 감사합니다!

역시 이런 함수가 있었군요!

---------------------------------
Dogbert
---------------------------------

---------------------------------
Dogbert
---------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.