SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: CodigoDavid en Lunes 27 de Junio de 2005, 15:53

Título: Programar La Gpu
Publicado por: CodigoDavid en Lunes 27 de Junio de 2005, 15:53
Mis dudas son unas "cuantas", y esque, estoy en estas:


(1)Quiero programar directamente el hardware, graficos, teclado, raton, sonido.

{
Estamos en que para hacer esto, de buen principio ni pensarlo de hacerlo bajo, por ejemplo WinXP por que simplemente protege la memoria asignandole una zona virtual de memoria a cada proceso y analizandola a su voluntad para que el proceso no acceda a zonas de memoria de otro proceso(problema numero 1), me direis muy bien, utiliza la API de windows y ya esta, pero yo digo, no esta!! por que no pienso utilizar esa API........no de momento, la solucion mas facil seria programar en entorno MS-DOS, pero tenemos el problema de la barrera de los 640 Kbytes, podria utilizar directamente el hardware y tal con las interrupciones, pero........... y si mi programa que haga ocupa mas de 640 Kbytes en memoria que?, ahy viene una duda/pregunta, aunque todos sabemos que MS-DOS tiene la barrera de los 640 Kbytes, y aun teniendo la memoria extendida su uso es muy limitado, como al fin y al cabo MS-DOS es un programa mas echo en ensamblador, hay alguna manera de poder utilizar toda la memoria disponible en el PC mediante algunas rutinas en ensamblador y tambien extender los 16 bits a 32 bits, superando asi las barreras, es decir, si yo tengo por ejemplo 512MB de memoria RAM fisica en el ordenador, pues poder utilizarlos todos y no 640KB solamente, igualmente el tema de la cantidad de bits, osea que aunque los programas de MS-DOS sean de 16 bits, de alguna manera yo puedo hacer programas corriendo en 32 bits aunque MS-DOS no lo sea mediante el apoyo de algunas rutinas de ensamblador? no pido que me digais como se hace, simplemente pido que alguien me diga si se puede hacer lo que yo he dicho o no, lo demas ya es trabajo mio.........,
}



(2)Programar graficos, pero nada de VGA ni SVGA, sino una GPU(si si, una aceleradora en el AGP)
{
aqui viene mi mayor duda, y es que por internet veo montones de tutoriales del modo 13h, que si VGA, que si SVGA, VESA 1.0 y 2.0, tenemos que:

VGA: 256 colores, caca de la vaca, no me sirve, no me conformo.........
SVGA: otro tanto de lo mismo.....
ESTANDAR VESA: 16 millones de colores y todo lo que tu quieras, pero tampoco me conformo por su lentitud

explicacion de por que no me sirve lo del vesa:

por la profundidad de color si me serviria, pero, imaginaros que tengo que hacer un sistema operativo como el windows, con 32 bits de color, esto es, 16 millones de colores, pero como imaginareis, ni de coña tendra la velocidad que tienen los graficos del windows, por que aunque alguien no lo sepa y aunque lo parezca, windows NO esta echo con vesa, ese sistema accede directamente al hardware, y en ordenadores modernos ya no estamos hablando de VGA ni SVGA si no de GPU o "Graphics Accelerated Unit", o lo que es lo mismo, targetas aceleradoras 3D de alto rendimiento, con procesador propio, algunas que llegan a tener 256MB de memoria de video GDDR3(la mia, una 6800GT........), y ahi viene el problema, veo un monton de paginas de los modos anteriores, pero todavia no he encontrado ninguna que hable de como acceder directamente a ese tipo de hardware, y mis preguntas son, ¿se accede directamente a la aceleradora 3D o tan solo al bus AGP?¿que interrupcion es la encargada del bus AGP o de la targeta aceleradora?¿cuales son las direcciones de memoria?¿que registros tiene el procesador(GPU) propio de la targeta aceleradora?¿alguien sabe el nombre de estos registros? pues eso, alguien sabe "algo" sobre el tema? por que, existir tiene que existir algo por c******, por que los sistemas operativos que existen como windows, no salen de la parrilla como por arte de magia..............................................e inevitablemente deben usar alguna "cosa" para realizar sus cometidos, "algo" que si ellos pueden utilizar programandolo en ensamblador y ese "algo" como por ejemplo una Nvidia GeForce 6800GT 256MB GDDR3 esta en mi ordenador, pues por c****** debo de poder programarlo yo de alguna manera utilizando ensamblador, ¿existe algun libro al respecto a poder ser en castellano?, recuerdo, que nada de APIS ni DirectX ni OpenGL ni nada por el estilo, empezando desde 0(programacion del hardware pura y dura.....)MUCHAS GRACIAS
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Lunes 27 de Junio de 2005, 20:13
Para la primera pregunta podes usar memoria extendida como decis (XMS) o pasar de modo real (16 bits, el modo en que arranca cualquier x86) a modo protegido (32 bits, el modo en que trabajan Windows o Linux).

El libro ensamblador para DOS, Linux y Windows tiene un capitulo sobre 32 bits bajo MS-DOS (el ultimo para ser mas exactos).
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Lunes 27 de Junio de 2005, 20:22
En cuanto a la segunda pregunta segun tengo entendido Windows no realiza el acceso directo a la AGP sino que los drivers, en este caso los de nvidia, son los encargados de este trabajo.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Lunes 27 de Junio de 2005, 20:54
Cita de: "Eternal Idol"
En cuanto a la segunda pregunta segun tengo entendido Windows no realiza el acceso directo a la AGP sino que los drivers, en este caso los de nvidia, son los encargados de este trabajo.
Si, pero, dejando de lado como lo haga windows, una aceleradora 3D es una maquina electronica mas como cualquier otra, y sabiendo esto, supongo que tambien tiene sus direcciones de memoria, IRQS etc etc etc ¿no?................por que, esos drivers, ¿como se programan a bajo nivel? no quiero dependencia de windows, quiero programar yo la targeta......... :comp: , y bueno, los que en su dia programaron el windows supongo que tendrian que hacerlo en ASM, logicamente, por lo que debe de haber alguna manera, o es que yo soy marciano y esos programadores venian con un cerebro de serie que ya sabia programar lo que digo? :alien: , logicamente no.................
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Lunes 27 de Junio de 2005, 22:04
En su amplia mayoria Windows (siempre hablo de NT) esta hecho en C, hay bastante rutinas de asm en la inicializacion y todo lo que sea dependiente de la motherboard en el HAL.

Intenta conseguir la documentacion de la placa si es que existe, intenta conseguir un driver para Linux si es que existe y siempre queda la opcion de hacer ingenieria reversa sobre el driver para Windows.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Lunes 27 de Junio de 2005, 23:34
Cita de: "Eternal Idol"
En su amplia mayoria Windows (siempre hablo de NT) esta hecho en C, hay bastante rutinas de asm en la inicializacion y todo lo que sea dependiente de la motherboard en el HAL.

Intenta conseguir la documentacion de la placa si es que existe, intenta conseguir un driver para Linux si es que existe y siempre queda la opcion de hacer ingenieria reversa sobre el driver para Windows.
bueno, ya se por donde van los tiros.............vamos, que o los de nvidia hacen un driver para mi(cosa que dudo......) o lo tengo mas bien jodido................(esto no lo dudo......) :lightsabre: , entonces, tendria que fliparme un poco menos e ir a por la VESA....., mi pregunta es entonces, hay mucha diferencia de rendimiento entre usar VESA/acceder directamente al hardware?  es posible con VESA hacer graficos en 3D(a partir de las primitivas 2D..........) con un buen rendimiento? me refiero a graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real.............., y otra pregunta es, existe tambien un estandar para el sonido?, ohy algo de vesa audio, pero no se........, y mi pregunta definitiva, en ASM, como utilizo un CD-ROM/DVD-ROM ? se utiliza como cualquier otra unidad? pero, por ejemplo, si pongo un video en DVD, como se lee? me imagino que el DVD, en si mismo, es un estandar, por lo que, ¿alguien sabe de alguna pagina con documentacion sobre la estructura de ficheros/informacion de los ficheros de un video DVD? gracias
Título: Re: Programar La Gpu
Publicado por: Amilius en Martes 28 de Junio de 2005, 00:14
Cita de: "CodigoDavid"
es posible con VESA hacer graficos en 3D(a partir de las primitivas 2D..........) con un buen rendimiento? me refiero a graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............
Ni en sueños,  ;)
VESA fue desarrollado antes que las tarjetas aceleradoras de gráficos 3d coparan el mercado, en esos tiempos del VESA poder ver en tu pantalla 1024x768 pixeles a 24 bits de color era mucha cosa, un sueño. Si quieres ver como funcionaría tu programa con vesa inicia el windows XP en modo a prueba de fallos y me cuentas como va la velocidad. Si quieres un estándar para 3d tienes al Opengl.  ;)

Si existe alguien en este planeta que sepa como hacer un juego 3d en asm son estos señores:

http://www.theprodukkt.com/ (http://www.theprodukkt.com/)

(http://kk.kema.at/files/gfx/snap5.jpg)

96KB  :blink: !!!, cuando me lo mostro un amigo juraba que era una broma.

Requerimientos MINIMOS:

    * A 1.5GHz pentium 3 / athlon or faster.
    * 512MB of RAM.
    * a GeForce4Ti (or higher) or ATI Radeon8500 (or higher) graphics card supporting pixel shaders 1.3, preferably with 128MB or more of VRAM.
    * some kind of sound hardware.
    * DirectX 9.0b.

Link al archivo:

http://kk.kema.at/files/kkrieger-beta.zip (http://kk.kema.at/files/kkrieger-beta.zip)
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Martes 28 de Junio de 2005, 00:26
Cita de: "Amilius"
Cita de: "CodigoDavid"
es posible con VESA hacer graficos en 3D(a partir de las primitivas 2D..........) con un buen rendimiento? me refiero a graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............
Ni en sueños,  ;)
VESA fue desarrollado antes que las tarjetas aceleradoras de gráficos 3d coparan el mercado, en esos tiempos del VESA poder ver en tu pantalla 1024x768 pixeles a 24 bits de color era mucha cosa, un sueño. Si quieres ver como funcionaría tu programa con vesa inicia el windows XP en modo a prueba de fallos y me cuentas como va la velocidad. Si quieres un estándar para 3d tienes al Opengl.  ;)
OpenGL? pero si se usa dentro de la API de Windows.........., y pregunto, entonces que utilidad tiene VESA? mejor dicho, entonces uno tiene que joderse? por que, yo es que a este tema de programar directamente el hardware le veo mucho secretismo por parte de las empresas si se me permite decirlo................................pero es que entonces ya estamos, los que programan este tipo de cosas¿donde lo aprenden?¿es que yo no puedo aprenderlo tambien? ¿o es que son semi-dioses? creo yo que son programadores humanos normales y corrientes, aver, si por ejemplo ahora a mi una empresa me pide que le haga un driver en ensamblador para su super-ultimo-chachi-guay modelo de targeta 3D, que conocimientos necesito, por que si existen estos trabajos digo yo que existe documentacion sobre el tema, por que si no estoy en otra dimension.........
Título: Re: Programar La Gpu
Publicado por: Amilius en Martes 28 de Junio de 2005, 01:14
Cita de: "CodigoDavid"
Cita de: Amilius,27/06/2005, 11:14 PM

OpenGL? pero si se usa dentro de la API de Windows.........., y pregunto, entonces que utilidad tiene VESA? mejor dicho, entonces uno tiene que joderse? por que, yo es que a este tema de programar directamente el hardware le veo mucho secretismo por parte de las empresas si se me permite decirlo................................pero es que entonces ya estamos, los que programan este tipo de cosas¿donde lo aprenden?¿es que yo no puedo aprenderlo tambien? ¿o es que son semi-dioses? creo yo que son programadores humanos normales y corrientes, aver, si por ejemplo ahora a mi una empresa me pide que le haga un driver en ensamblador para su super-ultimo-chachi-guay modelo de targeta 3D, que conocimientos necesito, por que si existen estos trabajos digo yo que existe documentacion sobre el tema, por que si no estoy en otra dimension.........
VESA esta igual que los modos "estándar" como el 640x480x4bits, o el 320x200x8bits o el "xlat"= soportados pero deprecados.

Claro que puedes hacer los drivers, y si los haces gratis para cualquiera de esas empresas seguro estarán felices. Seguramente te entregarían un manual gigante con todo lo que puedes hacer y lo que no debes hacer para manejar el modelo "y" de la tarjeta "x" en la empresa "z". Y no es que sea mucho secretismo, es que eso de programar el driver se supone que lo tienen que hacer ellos por que no es algo estándar, además el agp tiene sus días contados por que vienen nuevas tecnologías para reemplazarlo.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Martes 28 de Junio de 2005, 01:32
Cita de: "Amilius"
Cita de: CodigoDavid,27/06/2005, 10:26 PM
Cita de: Amilius,27/06/2005, 11:14 PM

OpenGL? pero si se usa dentro de la API de Windows.........., y pregunto, entonces que utilidad tiene VESA? mejor dicho, entonces uno tiene que joderse? por que, yo es que a este tema de programar directamente el hardware le veo mucho secretismo por parte de las empresas si se me permite decirlo................................pero es que entonces ya estamos, los que programan este tipo de cosas¿donde lo aprenden?¿es que yo no puedo aprenderlo tambien? ¿o es que son semi-dioses? creo yo que son programadores humanos normales y corrientes, aver, si por ejemplo ahora a mi una empresa me pide que le haga un driver en ensamblador para su super-ultimo-chachi-guay modelo de targeta 3D, que conocimientos necesito, por que si existen estos trabajos digo yo que existe documentacion sobre el tema, por que si no estoy en otra dimension.........
VESA esta igual que los modos "estándar" como el 640x480x4bits, o el 320x200x8bits o el "xlat"= soportados pero deprecados.

Claro que puedes hacer los drivers, y si los haces gratis para cualquiera de esas empresas seguro estarán felices. Seguramente te entregarían un manual gigante con todo lo que puedes hacer y lo que no debes hacer para manejar el modelo "y" de la tarjeta "x" en la empresa "z". Y no es que sea mucho secretismo, es que eso de programar el driver se supone que lo tienen que hacer ellos por que no es algo estándar, además el agp tiene sus días contados por que vienen nuevas tecnologías para reemplazarlo.
solo 4 o 8 bits? pero si tengo tutoriales de VESA en modo 1024x768 con 32 bits de profundidad de color(16 millones de colores), y una curiosidad que siempre he tenido, que es eso de "deprecado" o "deprecated"? :alien:  :alien:  :alien:
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Martes 28 de Junio de 2005, 01:42
Cita de: "Amilius"
Cita de: CodigoDavid,27/06/2005, 10:26 PM
Cita de: Amilius,27/06/2005, 11:14 PM

OpenGL? pero si se usa dentro de la API de Windows.........., y pregunto, entonces que utilidad tiene VESA? mejor dicho, entonces uno tiene que joderse? por que, yo es que a este tema de programar directamente el hardware le veo mucho secretismo por parte de las empresas si se me permite decirlo................................pero es que entonces ya estamos, los que programan este tipo de cosas¿donde lo aprenden?¿es que yo no puedo aprenderlo tambien? ¿o es que son semi-dioses? creo yo que son programadores humanos normales y corrientes, aver, si por ejemplo ahora a mi una empresa me pide que le haga un driver en ensamblador para su super-ultimo-chachi-guay modelo de targeta 3D, que conocimientos necesito, por que si existen estos trabajos digo yo que existe documentacion sobre el tema, por que si no estoy en otra dimension.........
VESA esta igual que los modos "estándar" como el 640x480x4bits, o el 320x200x8bits o el "xlat"= soportados pero deprecados.

Claro que puedes hacer los drivers, y si los haces gratis para cualquiera de esas empresas seguro estarán felices. Seguramente te entregarían un manual gigante con todo lo que puedes hacer y lo que no debes hacer para manejar el modelo "y" de la tarjeta "x" en la empresa "z". Y no es que sea mucho secretismo, es que eso de programar el driver se supone que lo tienen que hacer ellos por que no es algo estándar, además el agp tiene sus días contados por que vienen nuevas tecnologías para reemplazarlo.
en definitiva, que si quiero graficos como por ejemplo 1024x768x32bits con la misma velocidad de windows, la unica opcion es la API de Windows/opengl/direct3d no? pues vaya m***** por que abres una de esas cabeceras y uno no se entera de nada.................pero es que encima los que no sabemos ingles que?(por que yo no tengo ni #### idea)de la api de windows si hay libros en castellano pero.............................................y de directX? por que todavia no he visto ningun libro de DirectX en castellano, ademas de que es imposible cojer la cabezera de DirectX e ir probando funciones para cojer experiencia por que simplemente esas cabezeras son un lio(todas desordenadas, sin tabulaciones ni espacios, vamos que todo esta amontonado), por mi que los programadores de esas api no saben lo que es la legibilidad.............................
Título: Re: Programar La Gpu
Publicado por: Amilius en Martes 28 de Junio de 2005, 02:04
Eso era un ejemplo de modos VGA, no de los VESA.

"Deprecado": Cuando una funcionalidad o característica es reemplazada por una mejor o más potente. Como no puedes eliminar funciones o características de un procesador o de un sistema operativo sin comprometer su compatibilidad se recurre a deprecar en lugar de simplemente remover dichas funcionalidades o características. Así una función o una característica deprecada generalmente funciona más lento, a manera de ser "emulada" por las nuevas funciones. Eventualmente las funciones y características deprecadas ya no son soportadas por las nuevas versiones.

Por ejemplo en HTML.4 están deprecados en favor de las hojas de estilos:

     BASEFONT, CENTER, FONT, S, STRIKE, U

Recientemente me di cuenta que una función del bios que hacía una pausa en microsegundos en las 386 fue deprecada y removida (o el bios de mi máquina no lo soporta)... ya no existe seguridad que funcione siempre... ese el riesgo de usar cosas deprecadas.

Seguramente los modos VGA y VESA no serán removidos, pero son EXTREMADAMENTE LENTOS. En mi maquina hacer 600 multiplicaciones a 32 bits (además de unas 1200 operaciones lógicas y 600 accesos a memoria) es más rápido que poner un pixel en vga!!  :blink:  :blink:  :blink:
Título: Re: Programar La Gpu
Publicado por: Amilius en Martes 28 de Junio de 2005, 02:18
Cita de: "CodigoDavid"
en definitiva, que si quiero graficos como por ejemplo 1024x768x32bits con la misma velocidad de windows, la unica opcion es la API de Windows/opengl/direct3d no? pues vaya m***** por que abres una de esas cabeceras y uno no se entera de nada.................pero es que encima los que no sabemos ingles que?(por que yo no tengo ni #### idea)de la api de windows si hay libros en castellano pero.............................................y de directX? por que todavia no he visto ningun libro de DirectX en castellano, ademas de que es imposible cojer la cabezera de DirectX e ir probando funciones para cojer experiencia por que simplemente esas cabezeras son un lio(todas desordenadas, sin tabulaciones ni espacios, vamos que todo esta amontonado), por mi que los programadores de esas api no saben lo que es la legibilidad.............................
Es un lio gigantesco, especialmente d3d de directX por que lo primero que hay que hacer es revisar que cosas soporta y que cosas no soporta la tarjeta aceleradora, por eso que en los juegos aparece la leyenta "soporta las tarjetas de pepito, manuelito y joselito, no soporta las de juanito y no pensamos hacer que las soporte"  :D

Por eso mismo que existen los engines de juegos 3d, para no tener que hacer uno desde cero. Ni siquiera la industria de videojuegos se anima asi por asi a construir su propio engine 3d y muchas veces se ve que se prefiere pagar por utilizar uno ya existente y dedicar el dinero y tiempo al juego en sí.
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Martes 28 de Junio de 2005, 09:19
Cita de: "CodigoDavid"
bueno, ya se por donde van los tiros.............vamos, que o los de nvidia hacen un driver para mi(cosa que dudo......) o lo tengo mas bien jodido................(esto no lo dudo......) :lightsabre: ,

y otra pregunta es, existe tambien un estandar para el sonido?, ohy algo de vesa audio, pero no se........, y mi pregunta definitiva, en ASM, como utilizo un CD-ROM/DVD-ROM ? se utiliza como cualquier otra unidad? pero, por ejemplo, si pongo un video en DVD, como se lee? me imagino que el DVD, en si mismo, es un estandar, por lo que, ¿alguien sabe de alguna pagina con documentacion sobre la estructura de ficheros/informacion de los ficheros de un video DVD? gracias
A menos que tengas un Sistema Operativo con varios millones de usuarios dudo que Nvidia se toma la molestia de crear un driver para el mismo.

Sonido ... mmm, ni idea pero en la epoca de MS-DOS eran todos propietarios, Sound Blaster, ADLIB, Tandy y otros.

CD/DVD, segun recuerdo en MS-DOS se cargaban unas extensiones (mscdex). Siempre tenes la opcion de comunicarte mediante in's y out's pero habria que ver que estas tratando de hacer realmente ya que seria una tarea bastante titanica.

Te dejo una pagina donde buscar informacion sobre archivos:
http://www.wotsit.org/ (http://www.wotsit.org/)
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Martes 28 de Junio de 2005, 09:22
En cuanto a DirectX yo por lo menos conozco un libro en Español que es bastante simple, programacion de videojuegos o algo asi se llama pero realmente el Ingles en el mundo la programacion es imprescindible, no hace falta ser Shakespeare pero si entender el Ingles tecnico.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Martes 28 de Junio de 2005, 10:30
Cita de: "Eternal Idol"
En cuanto a DirectX yo por lo menos conozco un libro en Español que es bastante simple, programacion de videojuegos o algo asi se llama pero realmente el Ingles en el mundo la programacion es imprescindible, no hace falta ser Shakespeare pero si entender el Ingles tecnico.
No, si el ingles tecnico lo entiendo, lo entiendo, pero es que alomejor te encuentras en la api con una funcion que se llama "InitDC" o cosas por el estilo y dices, vale, Init significa Iniciar, pero, y que C****** significa "DC"? pues que no lo sabes si alguien no te lo explica(que DC en la jerga windows significa Dispositive Context o algo asi)
Título: Re: Programar La Gpu
Publicado por: JuanK en Martes 28 de Junio de 2005, 20:22
hola,
he leido lo que tu pides y claro que puedes hacerlo todo tu mismo independiente de windows o del DOS, pero para poder hacerlo necesitas tu mismo crear un conjunto de rutinas que vayan administrando la memoria y todos los dispositivos de entrada y salida... por supuesto tu mismo manejarias la comuinicacion con la tarjeta gráfica para lo cual deberias usar el DMA.. ets.

A este tipo de librerias se les suele llamar sistema operativo.
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Martes 28 de Junio de 2005, 20:44
Cita de: "JuanK"
hola,
he leido lo que tu pides y claro que puedes hacerlo todo tu mismo independiente de windows o del DOS, pero para poder hacerlo necesitas tu mismo crear un conjunto de rutinas que vayan administrando la memoria y todos los dispositivos de entrada y salida... por supuesto tu mismo manejarias la comuinicacion con la tarjeta gráfica para lo cual deberias usar el DMA.. ets.

A este tipo de librerias se les suele llamar sistema operativo.
Este tipo de librerias se suelen llamar drivers como ya ha sido dicho con anterioridad mientras que el Kernel del sistema operativo suele contener rutinas basicas para manejo de motherboard y otros dispositivos delegando la tarea del manejo de hardware especifico a sus correspondientes drivers.
Título: Re: Programar La Gpu
Publicado por: bob esponja en Miércoles 29 de Junio de 2005, 19:22
primero que todo buenas segundo que todo voy a pedir que te tranquilices ( voy a ser claro para que no te choques contra una pared )

unas preguntas:
1) en que lenguajes sabes programar?
2) a que nivel sabes programar?
3) ya programaste algo que valga la pena?

digo esto porque te noto muy exaltado y por algunas preguntas que haces denotas muy poco conocimiento. tranquilizate y acostumbrate a varias cosas:
1) todo lo importante esta en ingles ( ergo aprende ingles )
2) siempre se empieza de lo simple ( ergo aunque no te guste, vas a tener que empezar con el modo 320x200x256 )
3) las emprezas de tarjetas graficas no tienen ganas de liberar las espeificaciones a personas o grupos de personas que no le respondan con un incremento de sus ingresos de al menos varios millones asi que les dan los drivers a microsoft ( por los juegos ) y a contadas excepciones
4) se nota que todavia no leiste un datasheet ( especificacion de hardware ) porque hasta la mas simple de 4 hojas es muy dificil de entender y transformar en algo que ande
y un largo etc

otra cuestion: ya programaste algo en vesa para empezar a hablar de
"me refiero a graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............,"
hiciste un poligono en 3d?
porque yo estoy hace mucho en esto ( un poco dejado hace un tiempo ) y no es facil...

otra cosa en mi casa tengo un linux andando con el driver vesa framebuffer a 1024x768x24 bits de profundidas en un Kde totalmente sobrecargado y no tiene ningun problema de rendimiento como para que necesite configurar la placa

hay dos caminos:
1) si queres "graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............,"
aprende opengl o directx que ellos ya se rompieron haciendo lo que vos estas tratando de empezar
2) si queres aprender sobre graficos y modos de video empeza con 320x200x256 y segui con vesa dentro de mucho tiempo cuando lo domines volve a preguntar sobre placas de video etc

simple yo empece por lo bajito ( al reves que vos ) y ya he escrito simples juegos simples manejadores de vesa un simple sistema operativo y dos simples compiladores, por el camino que vas vos vas a estar años sin poder terminar de escribir algo que te haga sentir orgulloso.

empeza por lo simple y bienvenido a la programacion

enjoy...
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Miércoles 29 de Junio de 2005, 21:33
Cita de: "bob esponja"
primero que todo buenas segundo que todo voy a pedir que te tranquilices ( voy a ser claro para que no te choques contra una pared )

unas preguntas:
1) en que lenguajes sabes programar?
2) a que nivel sabes programar?
3) ya programaste algo que valga la pena?

digo esto porque te noto muy exaltado y por algunas preguntas que haces denotas muy poco conocimiento. tranquilizate y acostumbrate a varias cosas:
1) todo lo importante esta en ingles ( ergo aprende ingles )
2) siempre se empieza de lo simple ( ergo aunque no te guste, vas a tener que empezar con el modo 320x200x256 )
3) las emprezas de tarjetas graficas no tienen ganas de liberar las espeificaciones a personas o grupos de personas que no le respondan con un incremento de sus ingresos de al menos varios millones asi que les dan los drivers a microsoft ( por los juegos ) y a contadas excepciones
4) se nota que todavia no leiste un datasheet ( especificacion de hardware ) porque hasta la mas simple de 4 hojas es muy dificil de entender y transformar en algo que ande
y un largo etc

otra cuestion: ya programaste algo en vesa para empezar a hablar de
"me refiero a graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............,"
hiciste un poligono en 3d?
porque yo estoy hace mucho en esto ( un poco dejado hace un tiempo ) y no es facil...

otra cosa en mi casa tengo un linux andando con el driver vesa framebuffer a 1024x768x24 bits de profundidas en un Kde totalmente sobrecargado y no tiene ningun problema de rendimiento como para que necesite configurar la placa

hay dos caminos:
1) si queres "graficos 3D en modo como minimo 800x600 con 16 millones de colores y utilizando miles de poligonos y texturas, iluminacion en tiempo real..............,"
aprende opengl o directx que ellos ya se rompieron haciendo lo que vos estas tratando de empezar
2) si queres aprender sobre graficos y modos de video empeza con 320x200x256 y segui con vesa dentro de mucho tiempo cuando lo domines volve a preguntar sobre placas de video etc

simple yo empece por lo bajito ( al reves que vos ) y ya he escrito simples juegos simples manejadores de vesa un simple sistema operativo y dos simples compiladores, por el camino que vas vos vas a estar años sin poder terminar de escribir algo que te haga sentir orgulloso.

empeza por lo simple y bienvenido a la programacion

enjoy...
hmmhmhmhmhhhmmmm ¿bienvenido a la programacion? :alien:  empeze con el lenguaje C a los 14 años y tengo 18, llevo 4 años............................. :hola:
Título: Re: Programar La Gpu
Publicado por: JuanK en Miércoles 29 de Junio de 2005, 22:11
Citar
hmmhmhmhmhhhmmmm ¿bienvenido a la programacion? alien.gif empeze con el lenguaje C a los 14 años y tengo 18, llevo 4 años............................. hola.gif
mmm...

No lo tomes a mal pero con esas preguntas y pretenciones tan grandes parece que no has tocado mucho los temas fuertes de programacion en c... conocer bien un lenguaje no implica ya ser todo un conocedor de la programacion.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Miércoles 29 de Junio de 2005, 22:39
Cita de: "JuanK"
Citar
hmmhmhmhmhhhmmmm ¿bienvenido a la programacion? alien.gif empeze con el lenguaje C a los 14 años y tengo 18, llevo 4 años............................. hola.gif
mmm...

No lo tomes a mal pero con esas preguntas y pretenciones tan grandes parece que no has tocado mucho los temas fuertes de programacion en c... conocer bien un lenguaje no implica ya ser todo un conocedor de la programacion.
hombre, pues contando que con un lenguaje como C no viene con sistemas multimedia incluidos, como por ejemplo graficos, sonido etc etc etc, lo mas fuerte que hay del lenguaje C creo que es(y creo que no me equivoco), y supongo que es lo que pretendias decir, son las estructuras dinamicas de datos, las listas enlazadas, dobles, circulares, arboles binarios, arboles binarios perfectamente equilibrados, y por supuesto, los punteros...................que es realmente una parte potente del C, pero tengo que decir que ya no estoy con el C, he pasado al C++, ya se utilizar hasta la herencia, la herencia multiple, la herencia virtual y todo eso, pero es que, ¿he dicho yo, en algun momento, explicitamente, que quiera hacer lo que he dicho ahora mismo?, por que lo que preguntaba era para un futuro no para ahora precisamente, logicamente antes tendre que hacer cosas mas simples, como alguien ha dicho por ahy, pero, todo eso lo preguntaba por que realmente me da rabia este secretismo del hardware y no poder programarlo(excepto semi-dioses como Micr$s$ft), y lo preguntaba mas que nada por que ahora me tienen que llegar unos libros de programacion, entre ellos un tocho de libro sobre ensamblador y por eso lo preguntaba, se que el ensamblador es "chungo", pero yo me conozco, y pienso conseguir dominarlo..............aver, es que puede parezer que me hago el listo, pero es que seguramente hay una gran "diferencia" entre vosotros y yo, y es que probablemente vosotros trabajais, haceis otras cosas etc etc etc, pero yo, y aunque hos parezca un poco fuerte leerlo, haze 3 años que no salgo de casa(excepto contadas excepciones....), y todo este tiempo me he estado peleando con el lenguaje C, actualmente con el C++, tranquilamente, y como he echo aveces, me he estado 3 dias seguidos sin dormir para aprender sobre algun "rincon" mas sobre estos dos lenguajes, os podreis imaginar la cantidad de cafeina que tomo y la bonita coleccion de cajas de aspirinas que debo de tener :D , y si, hace 3 años que no veo a ningun colega/amigo, solo a familiares, reconozco que soy muy obsesivo con esto de la programacion, pero esto de la obsesion creo que es lo que al fin y al cabo me ha echo conseguir estudiar estos dos "bonitos" lenguajes de programacion, en fin.....................
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Miércoles 29 de Junio de 2005, 22:44
Por cierto, que nadie pregunte por que hace 3 años que no salgo a la calle, no lo dire, es muy personal, espero que a nadie le moleste que no lo diga............. :scream:
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Miércoles 29 de Junio de 2005, 23:19
A ese extremo no llego por suerte pero somos muchos los que nos dedicamos a esto desde hace años  :smartass:

Para la mayoria de las cosas que queres hacer se necesita saber bien ensamblador, no te preocupes que si tenes realmente voluntad vas a poder aprenderlo sin problemas.

Otra cosa, ese hardware no es tan conocido porque no hay mucha gente que quiera tomarse la molestia de escribir para el mismo. Es muy especifico y muchos lo consideran (me incluyo) una perdida de tiempo, excepto claro que trabajes para una de estas empresas, en mi caso solo he hecho drivers tipo filtro o un poco fuera de orbita pero no para hardware.

 :hola:
Título: Re: Programar La Gpu
Publicado por: Amilius en Jueves 30 de Junio de 2005, 00:26
Pues felicidades CodigoDavid y recordarte nuevamente que aunque no te guste el inglés es el lenguaje natural defacto del mundo del intercambio de información y si realmente quieres alcanzar tus metas NECESITAS poder leerlo por lo menos.
Título: Re: Programar La Gpu
Publicado por: bob esponja en Viernes 1 de Julio de 2005, 06:06
lo de bienvenido a la programacion no es poque seas nuevo sino porque tenes que tomar las cosas con calma y hacer avances chicos

obvio que a todos nos gustaria escribir todo lo que vos decis pero ni siquiera se me ocurre empezar a escribir una linea de eso porque se que si lo empiezo ahora no va a funcionar  

lo de las cosas "simples" que hice no es sarcasmo es en serio nunca logre programar algo totalmente completo sino que hice cosas incompletas con el fin de aprender en el proceso despues de varios fallos y con un proceso "iterativo e incremental" (paresco mis profesores) se puede lograr algo pero la regla general es que si apuntas a algo muy alto de entrada nunca lo terminas....

espero ver avances tuyos por aca

si ya hiciste algo estaria bueno que lo postees

no es de amargo es que me ha pasado de encarar un proyecto muy grande y no llegar a nada y te da bronca
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Viernes 1 de Julio de 2005, 23:55
Cita de: "bob esponja"
lo de bienvenido a la programacion no es poque seas nuevo sino porque tenes que tomar las cosas con calma y hacer avances chicos

obvio que a todos nos gustaria escribir todo lo que vos decis pero ni siquiera se me ocurre empezar a escribir una linea de eso porque se que si lo empiezo ahora no va a funcionar  

lo de las cosas "simples" que hice no es sarcasmo es en serio nunca logre programar algo totalmente completo sino que hice cosas incompletas con el fin de aprender en el proceso despues de varios fallos y con un proceso "iterativo e incremental" (paresco mis profesores) se puede lograr algo pero la regla general es que si apuntas a algo muy alto de entrada nunca lo terminas....

espero ver avances tuyos por aca

si ya hiciste algo estaria bueno que lo postees

no es de amargo es que me ha pasado de encarar un proyecto muy grande y no llegar a nada y te da bronca
por curiosidad, cual era ese proyecto que no pudiste terminar?(ya se lo que quieres decir con lo de que da bronca, me ha pasado alguna vez......), por cierto, y como he dicho, lo que pregunte en mi post es para el futuro........., ahora de momento estoy creando en C++ unas clases y funciones que tengan bastante "robustez"(esto es, bien diseñado)para poder despues hacer cosas de mas alto nivel de forma mucho mas facil, esta clase que estoy haciendo es del tema de la memoria, mas que nada se encarga de registrar, al momento de asignar memoria a un puntero, la direccion de este y tambien su tamaño en bytes, empeze a hacer esto por que un dia me encontre con un problema, el operador sizeof te dice el numero de elementos que tiene una matriz estatica pero no una dinamica, esto es, para los punteros siempre da el mismo valor, tenga la matriz 10 elementos o 300 o 50000 que siempre dara lo mismo(da siempre el tamaño de palabra del procesador), y entonces, si programas en c++ sabras que este no tiene algo similar a la funcion realloc como el C, y por lo que me han dicho, aun que pueda utilizar realloc en C++, se ve que es mejor no mezclar el tema de la memoria en como lo utiliza C con C++, y entonces, claro, vas todo contento y piensas, pues hago una funcion que internamente copie temporalmente el contenido del puntero al que se le tiene que agrandar la capacidad, libero la memoria de este, vuelvo a asignarle la memoria necesaria y le copio otra vez el contenido que tuviera, peroooooo............vuelves dos pasos anteriores y te fijas que...........!!!ostias, y como se el numero de elementos que tiene el puntero?!!!
si es con una cadena vale, por que tiene el delimitador del caracter \0 y a partir de ahy puedes saber el numero de elementos, pero no es posible con una matriz numerica, por que el 0 es tambien un valor "normal y corriente", entonces no puedes saber su longitud, y bueno, pues se me ocurrio hacer una funcion que asigna memoria y esta internamente registra la direccion de memoria del puntero pasado como parametro y la longitud asignada(tambien pasada como argumento), entonces, la funcion de reasignar memoria solo se tiene que consultar lo que registro la funcion de asignar memoria para saber el numero de elementos de ese puntero, y encima no puede haber problemas de direcciones de memoria por que de direccion de memoria solo hay una de cada, osea, de direcciones de memoria "34343" solo hay una, no existen dos direcciones de memoria "34343", y entonces ya.........................es solo cuestion de construir unas bases solidas, y creo que la memoria es uno de los temas principales, cuando tenga cosas echas ya las posteare :comp:  :hola:
Título: Re: Programar La Gpu
Publicado por: furiouslogic en Miércoles 6 de Julio de 2005, 01:25
Interesante charla y solo acotar algo sobre programacion de graficos bajo DOS. Me refiero a que no se debe confundir el programar graficos utilizando el driver VESA para DOS con programar graficos utilizando la especificacion VESA. En el primer caso requiere de un driver, un archivo aparte. En el segundo caso tenemos el uso de una interrupcion (metodo lento) o el acceso directo a direcciones de memoria que en modos VESA depende del fabricante.  Por este motivo programar un juego en modos VESA sin driver era un dolor de cabeza porque tenias que buscar mil especificaciones de fabricantes para determinar las direcciones para sus respectivos modelos de tarjeta y encima marcas.

  Algo mas, programar con acceso directo a memoria grafica no es para nada lento.  Por el contrario, es lo mas rapido que existe puesto que estamos escriiendo directamente en los chips de memoria de la tarjeta grafica ¿Existe algo mas rapido? Posiblemente si, la telepatia, pero hasta alli no ha llegado la programacion  :D


saludos y si que preguntas ah,


Furious Logic [aRC]
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Miércoles 6 de Julio de 2005, 23:05
Cita de: "furiouslogic"
Interesante charla y solo acotar algo sobre programacion de graficos bajo DOS. Me refiero a que no se debe confundir el programar graficos utilizando el driver VESA para DOS con programar graficos utilizando la especificacion VESA. En el primer caso requiere de un driver, un archivo aparte. En el segundo caso tenemos el uso de una interrupcion (metodo lento) o el acceso directo a direcciones de memoria que en modos VESA depende del fabricante.  Por este motivo programar un juego en modos VESA sin driver era un dolor de cabeza porque tenias que buscar mil especificaciones de fabricantes para determinar las direcciones para sus respectivos modelos de tarjeta y encima marcas.

  Algo mas, programar con acceso directo a memoria grafica no es para nada lento.  Por el contrario, es lo mas rapido que existe puesto que estamos escriiendo directamente en los chips de memoria de la tarjeta grafica ¿Existe algo mas rapido? Posiblemente si, la telepatia, pero hasta alli no ha llegado la programacion  :D


saludos y si que preguntas ah,


Furious Logic [aRC]
Pues claro que existe algo mas rapido, el agp y programar las operaciones graficas utilizando el PROPIO procesador de la targeta grafica..................que es lo que yo quiero hacer.........
Título: Re: Programar La Gpu
Publicado por: furiouslogic en Jueves 7 de Julio de 2005, 23:15
Parece que no leiste con detenimiento lo que indique. Lo resumiremos así:
¿Desde donde lee los datos el GPU? Desde la memoria que lleva en la tarjeta. No hablo de la ram hablo de los chips de memoria que vienen en toda tarjeta grafica.  Esa es la forma mas rapida de escribir graficos.

Cuando deseamos enviarle datos al GPU, en el DOS en lugar de utilizar interrupciones utilizabamos escritura directa en memoria. Leiste la parte en que escribi "solo acotar algo sobre programacion de graficos bajo DOS".

Ahora bien, el tema bajo Windows es distinto y mas facil en cierto modo. OpenGL es un standard tan bueno que aun sigue en la version 1.x en tanto que DirectX ya va por la 10 y requiere instalar como 30 MiB para tener la 9.0c que tengo entendido que es la ultima. Bueno, no quiero destapar el tema de OpenGL vs DirectX porque de hecho se arma la discusion. El punto es que sea que uses OpenGL o uses DirectX, estas accediendo directamente al hardware.  Esa es la idea de ambas librerias y de alli mi comentario sobre la dificultad de la programacion bajo DOS-especificacion VESA vs los distintos modelos-marcas de tarjetas.  Es decir, que bajo windows, se intento evitar todo ese lio de averiguar marcas, direcciones de memoria particulares y todo ese rollo, y se crearon OpenGL por un lado DirectX por otro lado. Ambas se encargar de determinar la mejor forma de acceso directo al hardware. De este modo ya no tienes que preocuparte por averigual la informacion no documentada sobre en que direccion de memoria escribir si es la tarjeta Perico 8000, Coquito ABC o Fulano "Budú".  Simplemente le dices a la API si es OpenGL o al objeto COM si es DirectX que escriba un pixel y listo, asunto arreglado ellos se encargan de averiguar que es mas rapido.
Los fabricantes de tarjetas envian esa informacion a Microsoft que para nosotros en DOS era rebuscada, no documentada o como sea.  De alli que es improbable que al menos 1 compáñia te vaya a dar gratis su informacion privada. (Microsoft paga por esa informacion y paga en serio, aunque nos cobra mucho mas de lo que paga)

Volviendo a tu tema grafico. Tienes 2 alternativas: la primera es crear un kernel que base su parte grafica en la informacion que las corporaciones graficas te hagan llegar a ti.
La segunda es que hagas un kernel que base su parte grafica en los drivers existentes de Windows o en los de Linux.

Es un tema bastante complicado para que empiezes a crear algo. Es admirable tu emocion por crear algo asi pero de alli a la realidad, pues te diria que le des una miradita al codigo de un kernel, el mas simple que exista y a ver como vamos.

suerte y empieza por algo mas a tu alcance,


saludos,


Furious Logic [aRC]
www.arc3000.com (http://www.arc3000.com)
(SITE CENSURADO)


PD: Te sugeriria que leas la enorme cantidad libros que tenemos en la web pero nos censuraron hace tan solo 2 semanas. Si tienes paciencia, en un tiempo migramos todo a un nuevo servidor y alli podras leer libros de programacion hasta que termines pensando en binario y hablando en hexadecimal  :D
Título: Re: Programar La Gpu
Publicado por: JuanK en Viernes 8 de Julio de 2005, 04:41
hola CodigoDavid

Solo ten presente que te han hablado con consejos muy practicos y queno han adquirido de la noche a la mañana...
muchos hemos sido los que hemos querido iniciar por la senda que pretendes ... para despues de un tiempo darnos cuenta que no ea la manera correcta de empezar...
sigue el consejo de los que ya han pasado por ahi...

cuando el rio suena...
piedras lleva.
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Sábado 9 de Julio de 2005, 02:59
Cita de: "JuanK"
hola CodigoDavid

Solo ten presente que te han hablado con consejos muy practicos y queno han adquirido de la noche a la mañana...
muchos hemos sido los que hemos querido iniciar por la senda que pretendes ... para despues de un tiempo darnos cuenta que no ea la manera correcta de empezar...
sigue el consejo de los que ya han pasado por ahi...

cuando el rio suena...
piedras lleva.
Ok, lo que pasa es que a mi esto de utilizar librerias ya "prefabricadas" supongo que tambien tienen sus limitaciones, y entonces, si hay algo que quieres hacer pero no esta implementado en la API pero tampoco lo puedes programar directamente en el hardware por que el sistema no te deja que haces? no creo que hayga muchas limitaciones hoy en dia con la cantidad de cosas que tienen las API pero siempre hay excepciones..........................y mi mayor dificultad es que no se por donde empezar, supongo que primero seria estudiar la api de windows, y luego DirectX o OpenGL, pero, y mi talon de aquiles es el mega-ultra-super-bajo nivel de ingles que tengo :unsure: y claro, cuanto tiempo cuesta aprender un ingles decente? 1 año? pffff...... y tambien me encuentro por internet algunos tutoriales que alomejor pone la descripcion por ejemplo de la estructura WNDCLASSEX asi:


"
cbSize
El tamaño de la estructura
style
El estilo de la clase (CS *), no confundirse con el estilo de la ventana (WS *). Generalmente este campo puede ser puesto en cero.
lpfnWndProc
Puntero al Window Procedure de esta clase.
cbClsExtra
Cantidad extra de asignación de memoria para datos de la clase. Generalmente cero.
cbWndExtra
Cantidad extra de asignación de memoria por ventana de este tipo. Generalmente cero.
hInstance
Handle a la instancia de la aplicación (la que obtenemos en el primer parámetro de WinMain( ) )
hIcon
Handle al ícono grande (32x32), mostrado cuando el usuario presiona Alt+Tab.
hCursor
Handle al cursor que será mostrado sobre la ventana.
hbrBackground
Pincel para fijar el color de fondo de nuestra ventana.
lpszMenuName
Nombre del recurso Menú para usar con las ventanas de esta clase.
lpszClassName
Nombre para identificar la clase.
hIconSm
Handle al ícono pequeño (16x16), usado en la barra de tareas y en la esquina superior izquierda de la ventana.
"

vale, ok, bien, pero para que sirve concretamente cbClsExtra? es que dice que es generalmente 0, vale, generalmente, pero por que no dice exactamente para que sirve? ami esta falta de informacion es lo que me "mata" en esto de la programacion................estos son en resumen con los problemas con los que me encuentro con el API de windows :alien:
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Sábado 9 de Julio de 2005, 08:56
Cita de: "CodigoDavid"
Ok, lo que pasa es que a mi esto de utilizar librerias ya "prefabricadas" supongo que tambien tienen sus limitaciones, y entonces, si hay algo que quieres hacer pero no esta implementado en la API pero tampoco lo puedes programar directamente en el hardware por que el sistema no te deja que haces? no creo que hayga muchas limitaciones hoy en dia con la cantidad de cosas que tienen las API pero siempre hay excepciones..........................y mi mayor dificultad es que no se por donde empezar, supongo que primero seria estudiar la api de windows, y luego DirectX o OpenGL, pero, y mi talon de aquiles es el mega-ultra-super-bajo nivel de ingles que tengo :unsure: y claro, cuanto tiempo cuesta aprender un ingles decente? 1 año? pffff...... y tambien me encuentro por internet algunos tutoriales que alomejor pone la descripcion por ejemplo de la estructura WNDCLASSEX asi:

vale, ok, bien, pero para que sirve concretamente cbClsExtra? es que dice que es generalmente 0, vale, generalmente, pero por que no dice exactamente para que sirve? ami esta falta de informacion es lo que me "mata" en esto de la programacion................estos son en resumen con los problemas con los que me encuentro con el API de windows :alien:

Cuando quieras hacer algo muy especifico pensa en hacer un driver que se ejecute en modo kernel, por lo menos si queres que sea usado por mas de cinco personas en el mundo.

En cuanto a lo de la API lo lamento mucho pero tengo que decir que es tu culpa. Ese campo en particular esta explicado al detalle en la MSDN:

cbClsExtra
Specifies the number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero.

¿Que significa esto? Este campo especifica el numero (cantidad) de bytes extra para reservar justo despues de la estructura de la Ventana. El sistema INICIALIZA los bytes a cero, eso quiere decir que la memoria esta toda puesta a cero, cada uno de sus bytes.
La ayuda que tenes dice que generalmente se inicializa a cero porque la gente o no necesita guardar variables de la ventana o utiliza otros metodos.

Realmente yo me saco el sombrero ante la MSDN y el DDK, si tuviera que programar en Linux con el man mi vida seria mucho mas complicada  :smartass:
Título: Re: Programar La Gpu
Publicado por: CodigoDavid en Sábado 9 de Julio de 2005, 19:02
Cita de: "Eternal Idol"
Cita de: "CodigoDavid"
Ok, lo que pasa es que a mi esto de utilizar librerias ya "prefabricadas" supongo que tambien tienen sus limitaciones, y entonces, si hay algo que quieres hacer pero no esta implementado en la API pero tampoco lo puedes programar directamente en el hardware por que el sistema no te deja que haces? no creo que hayga muchas limitaciones hoy en dia con la cantidad de cosas que tienen las API pero siempre hay excepciones..........................y mi mayor dificultad es que no se por donde empezar, supongo que primero seria estudiar la api de windows, y luego DirectX o OpenGL, pero, y mi talon de aquiles es el mega-ultra-super-bajo nivel de ingles que tengo :unsure: y claro, cuanto tiempo cuesta aprender un ingles decente? 1 año? pffff...... y tambien me encuentro por internet algunos tutoriales que alomejor pone la descripcion por ejemplo de la estructura WNDCLASSEX asi:

vale, ok, bien, pero para que sirve concretamente cbClsExtra? es que dice que es generalmente 0, vale, generalmente, pero por que no dice exactamente para que sirve? ami esta falta de informacion es lo que me "mata" en esto de la programacion................estos son en resumen con los problemas con los que me encuentro con el API de windows :alien:

Cuando quieras hacer algo muy especifico pensa en hacer un driver que se ejecute en modo kernel, por lo menos si queres que sea usado por mas de cinco personas en el mundo.

En cuanto a lo de la API lo lamento mucho pero tengo que decir que es tu culpa. Ese campo en particular esta explicado al detalle en la MSDN:

cbClsExtra
Specifies the number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero.

¿Que significa esto? Este campo especifica el numero (cantidad) de bytes extra para reservar justo despues de la estructura de la Ventana. El sistema INICIALIZA los bytes a cero, eso quiere decir que la memoria esta toda puesta a cero, cada uno de sus bytes.
La ayuda que tenes dice que generalmente se inicializa a cero porque la gente o no necesita guardar variables de la ventana o utiliza otros metodos.

Realmente yo me saco el sombrero ante la MSDN y el DDK, si tuviera que programar en Linux con el man mi vida seria mucho mas complicada  :smartass:
Sabes si la MSDN esta en español?

PD: Va ser que no.....
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Sábado 9 de Julio de 2005, 19:09
Que yo sepa no, por eso te comentaba en mensajes anteriores que es imprescindible entender Ingles tecnico ya que la mayoria de la documentacion esta en ese idioma y ni hablar de las cosas que van saliendo.

 :smartass:
Título: Re: Programar La Gpu
Publicado por: bob esponja en Lunes 11 de Julio de 2005, 05:39
no me gusta empezar otro flamewar pero tampoco me gustan las injusticias,
comparar MSDN con el man es como comparar el notepad con openoffice ( para que no surja otro flamewar agrego: office es mucho mejor que openoffice pero con openoffice me sobra ).

el man es una simple documentacion sobre PROGRAMAS explicando su funcionamiento y los parametros que se le pasan con una breve explicacion.

queres las APIS:

la que usa gnome (gtk): http://www.gtk.org/api/ (http://www.gtk.org/api/)
la que usa Kde (qt): http://doc.trolltech.com/3.3/ (http://doc.trolltech.com/3.3/)
la de c para linux: www.srsplus.com/en-def-d82f4a834d85/ (http://www.srsplus.com/en-def-d82f4a834d85/) en/srsplus/api_c_linux.pdf
la de python: docs.python.org/api/api.html
la del kernel: kernelnewbies.org/documents/ kdoc/kernel-api/linuxkernelapi.html

y asi puedo seguir,m no te preocupes que uno de los fuertes del opensource es que hay documentacion de sobra  para las aplicaciones y librerias extendidas lo que pasa es que no estan en una sola pagina ( o si... en google ), te recomiendo esto

www.google.com (http://www.google.com)
pone xxx API reference
www.google.com/linux (http://www.google.com/linux)
pone xxx API reference

y va a aparecer mucha documentacion.

la primera vez que lei la comparacion de MSDN  con el man la deje pasar, pero esta mal que a los que recien empiezan se los asuste con "el monstruo de linux"
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Lunes 11 de Julio de 2005, 07:41
Cita de: "bob esponja"
la primera vez que lei la comparacion de MSDN  con el man la deje pasar, pero esta mal que a los que recien empiezan se los asuste con "el monstruo de linux"
La utilizo muchas veces por la simple razon de que incluso compañeros de trabajo me han llegado a decir que man es mejor que la MSDN.

 :whistling:

Por cierto en el tema sobre Linux dejaste un mensaje bastante largo pero no te vi responder despues, te invito que lo hagas.
Título: Re: Programar La Gpu
Publicado por: bob esponja en Miércoles 13 de Julio de 2005, 07:09
que el man sea mejor que el MSDN es una gran mentira en eso concuerdo con vos
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Miércoles 13 de Julio de 2005, 07:38
Cita de: "bob esponja"
que el man sea mejor que el MSDN es una gran mentira en eso concuerdo con vos
 :ph34r: Menos mal jeje  :comp:
Título: Re: Programar La Gpu
Publicado por: micropais en Lunes 12 de Diciembre de 2005, 23:08
Cita de: "CodigoDavid"
Mis dudas son unas "cuantas", y esque, estoy en estas:


(1)Quiero programar directamente el hardware, graficos, teclado, raton, sonido.

{
Estamos en que para hacer esto, de buen principio ni pensarlo de hacerlo bajo, por ejemplo WinXP por que simplemente protege la memoria asignandole una zona virtual de memoria a cada proceso y analizandola a su voluntad para que el proceso no acceda a zonas de memoria de otro proceso(problema numero 1), me direis muy bien, utiliza la API de windows y ya esta, pero yo digo, no esta!! por que no pienso utilizar esa API........no de momento, la solucion mas facil seria programar en entorno MS-DOS, pero tenemos el problema de la barrera de los 640 Kbytes, podria utilizar directamente el hardware y tal con las interrupciones, pero........... y si mi programa que haga ocupa mas de 640 Kbytes en memoria que?, ahy viene una duda/pregunta, aunque todos sabemos que MS-DOS tiene la barrera de los 640 Kbytes, y aun teniendo la memoria extendida su uso es muy limitado, como al fin y al cabo MS-DOS es un programa mas echo en ensamblador, hay alguna manera de poder utilizar toda la memoria disponible en el PC mediante algunas rutinas en ensamblador y tambien extender los 16 bits a 32 bits, superando asi las barreras, es decir, si yo tengo por ejemplo 512MB de memoria RAM fisica en el ordenador, pues poder utilizarlos todos y no 640KB solamente, igualmente el tema de la cantidad de bits, osea que aunque los programas de MS-DOS sean de 16 bits, de alguna manera yo puedo hacer programas corriendo en 32 bits aunque MS-DOS no lo sea mediante el apoyo de algunas rutinas de ensamblador? no pido que me digais como se hace, simplemente pido que alguien me diga si se puede hacer lo que yo he dicho o no, lo demas ya es trabajo mio.........,
}



(2)Programar graficos, pero nada de VGA ni SVGA, sino una GPU(si si, una aceleradora en el AGP)
{
aqui viene mi mayor duda, y es que por internet veo montones de tutoriales del modo 13h, que si VGA, que si SVGA, VESA 1.0 y 2.0, tenemos que:

VGA: 256 colores, caca de la vaca, no me sirve, no me conformo.........
SVGA: otro tanto de lo mismo.....
ESTANDAR VESA: 16 millones de colores y todo lo que tu quieras, pero tampoco me conformo por su lentitud

explicacion de por que no me sirve lo del vesa:

por la profundidad de color si me serviria, pero, imaginaros que tengo que hacer un sistema operativo como el windows, con 32 bits de color, esto es, 16 millones de colores, pero como imaginareis, ni de coña tendra la velocidad que tienen los graficos del windows, por que aunque alguien no lo sepa y aunque lo parezca, windows NO esta echo con vesa, ese sistema accede directamente al hardware, y en ordenadores modernos ya no estamos hablando de VGA ni SVGA si no de GPU o "Graphics Accelerated Unit", o lo que es lo mismo, targetas aceleradoras 3D de alto rendimiento, con procesador propio, algunas que llegan a tener 256MB de memoria de video GDDR3(la mia, una 6800GT........), y ahi viene el problema, veo un monton de paginas de los modos anteriores, pero todavia no he encontrado ninguna que hable de como acceder directamente a ese tipo de hardware, y mis preguntas son, ¿se accede directamente a la aceleradora 3D o tan solo al bus AGP?¿que interrupcion es la encargada del bus AGP o de la targeta aceleradora?¿cuales son las direcciones de memoria?¿que registros tiene el procesador(GPU) propio de la targeta aceleradora?¿alguien sabe el nombre de estos registros? pues eso, alguien sabe "algo" sobre el tema? por que, existir tiene que existir algo por c******, por que los sistemas operativos que existen como windows, no salen de la parrilla como por arte de magia..............................................e inevitablemente deben usar alguna "cosa" para realizar sus cometidos, "algo" que si ellos pueden utilizar programandolo en ensamblador y ese "algo" como por ejemplo una Nvidia GeForce 6800GT 256MB GDDR3 esta en mi ordenador, pues por c****** debo de poder programarlo yo de alguna manera utilizando ensamblador, ¿existe algun libro al respecto a poder ser en castellano?, recuerdo, que nada de APIS ni DirectX ni OpenGL ni nada por el estilo, empezando desde 0(programacion del hardware pura y dura.....)MUCHAS GRACIAS
:comp:

me parece que hay un poco de confusion en el tema.

Si, si se puede programar la VGA y la SVGA, lo que falta es informacion sobre los registros . un driver propio en ASM no suele ocupar mas de de dos mil o tres mil lineas e incluso menos si solo queremos algunos modos graficos.

hay un libro bastante antiguo PC INTERNO 5 que muestra como crearnos nuestros driver graficos tanto en ASM ,C y PASCAL.
el código fuente no suele pasar de cien lineas en asembler para modos graficos en concreto. de todas maneras no profundizan mucho y lo que puedas obtener será de los codigos fuente,que por supuesto están en ingles.

Suelen partir de una idea tan basica como iniciar el modo primitivo mediante el bios , para que este haga el trabajo sucio por ejemplo 640x480 16 colores , y mediante manipulacion de registros propios de VGA pasarlo a 256 colores o mas.
hay quien se atreve desde cero pero para eso se necesita conocer donde se toca -

- Aviso de que te puedes quedar sin monitor al forzar la frecuencia del mismo.
de echo estube practicando bastante con los registros aleatoriamente y fue la primera vez que vi al monitor generar ruidos- curioso- ,no me lo cargé pero duro poco aquel monitor - casualidad?-.

de este mismo modo se crean los tan famosos modos  chain X hasta 320x400x256 colores , tener en cuenta que en el libro no mencionan las SVGA solo las VGA , estos registros tienen que ser compatibles hacia abajo osea que siempre estan ahí.

yo estube practicando con modos 640x400 y 800x600 y 1024x768 pero en estos últimos modos, habia problemas con la visualizacion del raton , al final lo dejé todo porque aunque sigas los ejemplos al pie de la letra hay cambios bastante decepcionates cuando cambiamos de tarjeta grafica, o dicho de otro modo lo que programaste para una ya no vale para otra salvo si vas probando con bastantes numeros para el mismo modo graficos. un ejemplo del libro para 800x600 es ir probando con llamadas bios con varios numeros supuestamente estandar , algo parecido a lo que hace el windows cuando cambia el modo grafico , y te pregunta si lo puedes ver correctamente.

creo que se puede programar los modos graficos partiendo del bios y usar drivers propios , estoy en ello , lo que pasa que en internet y en español no pasan del modo 13h.
parece que internet hay algo de TABU sobre la manipulacion de las SVGA ni el propio google se atreve - ¿SVGA? quizas quiso decir pasar del tema -

Para el resto de las preguntas usa dow4gw dos en modo protegido , el resto de tus dudas es facil de encontrar en internet .
crear un S.O desde cero creo que deberias ver algo de linux que muestran el codigo fuente .

Aun asi es una tarea bastante ardua para una sola persona , y el probema no es saber programar ni el tiempo que haga falta para ello , si no la falta de informacion.

ahi van un par de paginas para "empezar" eso si en ingles, no te pierdas por que hay de todo.
si consiges algo no dudes en comunicarlo .

http://textfiles.tqhosting.com/programming/ (http://textfiles.tqhosting.com/programming/)
http://geocities.yahoo.com.br/conexaopcpc/...os/Hardware.txt (http://geocities.yahoo.com.br/conexaopcpc/artigos/Hardware.txt)

saluDoS  :hola:
Título: Re: Programar La Gpu
Publicado por: micropais en Martes 13 de Diciembre de 2005, 00:49
Cita de: "Amilius"
Pues felicidades CodigoDavid y recordarte nuevamente que aunque no te guste el inglés es el lenguaje natural defacto del mundo del intercambio de información y si realmente quieres alcanzar tus metas NECESITAS poder leerlo por lo menos.
existen en la actualidad buenas herramientas de traduccion como
Word Magic interpreter profesional , que te ayudaran e incluso aun nivel muy bajo de tu ingles , este en concreto ,HABLA y todo, tanto en ingles como en castellano.
Y según el texto a traducir deberás ayudarle un poco o nada en la seleccion de palabras.

aprender ingles hoy dia es casi basico , si te puedes ayudar con buenas herramientas mejor que mejor.

_____________________________________________

traduccion a groso modo
______________________________________________
 
They exist at the present time.
Good tools.
of translation like Word Magic professional interpreter.
That they help to you and enclosure.
Even very low level of your English.
HE TALKS TO this in concrete and all.
So much in English I have a meal in Spanish.
And according to the text to make a translation.
You will have to help to him a little.
Or swim .
 In the selection of words.

Learning English nowadays.
It is approximately basic.
If you can help oneself.
With good tools.
All the better.


SALUDOS

 :P  :P  :P
Título: Re: Programar La Gpu
Publicado por: Eternal Idol en Martes 13 de Diciembre de 2005, 08:46
Cita de: "micropais"
:comp:

me parece que hay un poco de confusion en el tema.

Si, si se puede programar la VGA y la SVGA, lo que falta es informacion sobre los registros . un driver propio en ASM no suele ocupar mas de de dos mil o tres mil lineas e incluso menos si solo queremos algunos modos graficos.
¿Que confusion? Solo para empezar estas respondiendo a una pregunta de hace seis meses y dos pagina atras ...

VGA, SVGA, VESA ya fueron programados por varios de los que participamos en este hilo. Un driver para Windows no se suele hacerse en assembly, es mas, Microsoft jamas lo certificaria.
Título: Re:Programar La Gpu
Publicado por: mruize85 en Jueves 9 de Mayo de 2013, 03:30
El hecho de que una misma tarjeta gráfica realice la tarea de mostrar las imágenes por pantalla y la de procesar la información 3D no significa que sean cosas relacionadas. Me explico:

Una tarjeta gráfica en si misma está compuesta por un conversor digital a analógico, memoria (framebuffer) y algo de lógica. Su única función es la de dibujar en pantalla el contenido de esa memoria, es decir, la imagen.

Una GPU no es una tarjeta gráfica, sino que es una pieza de hardware diseñada para convertir de forma rápida y eficiente vectores y texturas en un array de píxeles que puede ser mostrado por pantalla o no. De hecho, la GPU de una tarjeta gráfica moderna puede ser usada sin interferir en lo mostrado por pantalla, pues son dos cosas muy distintas.

Es perfectamente posible diseñar dos tarjetas independientes que realicen ambas funciones por separado: una que se encargue de "refrescar" la pantalla y otra que se encargue de convertir esos vectores y texturas en mapas de bits.

Lo que debe quedar claro es que la visualización por pantalla y el dibujado 3D son cosas distintas. Es perfectamente posible implementar la funcionalidad de una GPU en el propio procesador (la CPU); claro que a expensas de una seria reducción del rendimiento. Como curiosidad mencionar que existen "tarjetas gráficas" que no disponen de un conversor analógico digital ni de un conector VGA o DVI cuya única finalidad es la de ofrecer esa "aceleración por hardware", es decir, la GPU para cómputos de propósito general y no solo el rasterizado de imágenes vectoriales en 3D.

Si tu misión es implementar una librería 3D como OpenGL para un sistema operativo que no soporte el fabricante de tu tarjeta, olvídate de acceder directamente al hardware, pues hay muy pocas tarjetas cuyas especificaciones sean abiertas y muchas menos cuyas especificaciones sean completas. Asume que solo podrás acceder a las funciones de tarjeta de vídeo (framebuffer) mediante el estándar VESA y deberás implementar toda la funcionalidad de la librería 3D en el procesador (usando las extensiones SSE mejorarás bastante el rendimiento).

Saludos.