Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

questions over Open3D Radeon 7500 on OpenVMS

 
SOLVED
Go to solution
Alex Chupahin
Super Advisor

questions over Open3D Radeon 7500 on OpenVMS

Hello dear all,
I'm in futher porting Simple Media Layer for OpenGL support, and wish to ask (and speaking) about strange behavour of OpenVMS OpenGL driver.
Yes, I know about rare usage, poor testing, etc, etc. But...
I have:
DS10L, Radeon 7500
OpenVMS 8.3
X11 with 1024x768 24depth, 1280x1024 24depth.

famous glxgears shows me perfomance, looks like in Linux - good. But it seems it is one and only one demo without artefacts.
Please look next simple code:
#include
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
}

void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("3D Tech- GLUT Tutorial");
glutDisplayFunc(renderScene);
glutMainLoop();
}

And please look and compare a huge triangulum in OpenVMS.
23 REPLIES 23
Alex Chupahin
Super Advisor

Re: questions over Open3D Radeon 7500 on OpenVMS

And please see how it should be look in attachment.

information about compilation things:

$DEF GL SYS$COMMON:[DECW$INCLUDE.GL_1_2]
$TYPE OPENGL.OPT
sys$share:decw$openglushr.exe/share
sys$share:DECW$OPENGLUTSHR.EXE/share
sys$share:DECW$MESA3DSHR_RADEON/share
sys$share:decw$xlibshr/share

(case non sensitive)
Alex Chupahin
Super Advisor

Re: questions over Open3D Radeon 7500 on OpenVMS

Next,
please look to the screenshot of the corrupted moving bounce
provided by the code:

#include
#include
#include

#define COS(X) cos( (X) * 3.14159/180.0 )
#define SIN(X) sin( (X) * 3.14159/180.0 )

#define RED 1
#define WHITE 2
#define CYAN 3

GLuint Ball;
GLenum Mode;
GLfloat Zrot = 0.0, Zstep = 6.0;
GLfloat Xpos = 0.0, Ypos = 1.0;
GLfloat Xvel = 0.2, Yvel = 0.0;
GLfloat Xmin = -4.0, Xmax = 4.0;
GLfloat Ymin = -3.8, Ymax = 4.0;
GLfloat G = -0.1;

static GLuint
make_ball(void)
{
GLuint list;
GLfloat a, b;
GLfloat da = 18.0, db = 18.0;
GLfloat radius = 1.0;
GLuint color;
GLfloat x, y, z;

list = glGenLists(1);

glNewList(list, GL_COMPILE);

color = 0;
for (a = -90.0; a + da <= 90.0; a += da) {

glBegin(GL_QUAD_STRIP);
for (b = 0.0; b <= 360.0; b += db) {

if (color) {
glIndexi(RED);
} else {
glIndexi(WHITE);
}

x = COS(b) * COS(a);
y = SIN(b) * COS(a);
z = SIN(a);
glVertex3f(x, y, z);

x = radius * COS(b) * COS(a + da);
y = radius * SIN(b) * COS(a + da);
z = radius * SIN(a + da);
glVertex3f(x, y, z);

color = 1 - color;
}
glEnd();

}

glEndList();

return list;
}

static void
reshape(int width, int height)
{
glViewport(0, 0, (GLint) width, (GLint) height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-6.0, 6.0, -6.0, 6.0, -6.0, 6.0);
glMatrixMode(GL_MODELVIEW);
}

/* ARGSUSED1 */
static void
key(unsigned char k, int x, int y)
{
switch (k) {
case 27: /* Escape */
exit(0);
}
}

static void
draw(void)
{
GLint i;

glClear(GL_COLOR_BUFFER_BIT);

glIndexi(CYAN);
glBegin(GL_LINES);
for (i = -5; i <= 5; i++) {
glVertex2i(i, -5);
glVertex2i(i, 5);
}
for (i = -5; i <= 5; i++) {
glVertex2i(-5, i);
glVertex2i(5, i);
}
for (i = -5; i <= 5; i++) {
glVertex2i(i, -5);
glVertex2f(i * 1.15, -5.9);
}
glVertex2f(-5.3, -5.35);
glVertex2f(5.3, -5.35);
glVertex2f(-5.75, -5.9);
glVertex2f(5.75, -5.9);
glEnd();

glPushMatrix();
glTranslatef(Xpos, Ypos, 0.0);
glScalef(2.0, 2.0, 2.0);
glRotatef(8.0, 0.0, 0.0, 1.0);
glRotatef(90.0, 1.0, 0.0, 0.0);
glRotatef(Zrot, 0.0, 0.0, 1.0);

glCallList(Ball);

glPopMatrix();

glFlush();
glutSwapBuffers();
}

static void
idle(void)
{
static float vel0 = -100.0;

Zrot += Zstep;

Xpos += Xvel;
if (Xpos >= Xmax) {
Xpos = Xmax;
Xvel = -Xvel;
Zstep = -Zstep;
}
if (Xpos <= Xmin) {
Xpos = Xmin;
Xvel = -Xvel;
Zstep = -Zstep;
}
Ypos += Yvel;
Yvel += G;
if (Ypos < Ymin) {
Ypos = Ymin;
if (vel0 == -100.0)
vel0 = fabs(Yvel);
Yvel = vel0;
}
glutPostRedisplay();
}

void
visible(int vis)
{
if (vis == GLUT_VISIBLE)
glutIdleFunc(idle);
else
glutIdleFunc(NULL);
}

main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA|/*GLUT_INDEX|*/ GLUT_SINGLE);

glutCreateWindow("Bounce");
Ball = make_ball();
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glDisable(GL_DITHER);
glShadeModel(GL_FLAT);

glutDisplayFunc(draw);
glutReshapeFunc(reshape);
glutVisibilityFunc(visible);
glutKeyboardFunc(key);

glutSetColor(RED, 1.0, 0.0, 0.0);
glutSetColor(WHITE, 1.0, 1.0, 1.0);
glutSetColor(CYAN, 0.0, 1.0, 1.0);

glutMainLoop();
return 0; /* ANSI C requires main to return int. */
}
Alex Chupahin
Super Advisor

Re: questions over Open3D Radeon 7500 on OpenVMS

And this is a screenshot of the good bounce:

Alex Chupahin
Super Advisor

Re: questions over Open3D Radeon 7500 on OpenVMS

And for the end I attach GLDoom game screenshot I've ported to OpenVMS.
I do not understand this.


Please, any suggestions, ideas to help
are welcome.
Rick Retterer
Respected Contributor

Re: questions over Open3D Radeon 7500 on OpenVMS

Do you have the latest OpenVMS patches installed on your system, including the latest Graphics Display Driver patches, which includes several fixes to the GL libraries? The current version of the UPDATE patch kit includes the Decwindows Driver updates.

Also understand that Open3D in 3D mode, doesn't support backingstore and saveunders so you must account for that in your applications.

Have you tuned your Decwindows Display Server for optimal performance for usage with a GL graphics Intensive application?

Finally, if after doing some or all of these things, and you still have graphics corruption, I highly recommend that you log a software support case with the Support Center with the OpenVMS team. Provide them with the example programs that demonstrate the drawing corruption and see what they can do for you.

It would also be helpful if you provided them with the build procedure that you are using to compile/link your example programs.

Cheers,
Rick


- Rick Retterer



Steven Schweda
Honored Contributor

Re: questions over Open3D Radeon 7500 on OpenVMS

I know nothing about OpenGL, but I get better
(more like your example) results on my system
when I use CC /FLOAT = IEEE_FLOAT.


> sys$share:decw$openglushr.exe/share

%LINK-F-OPENIN, error opening SYS$COMMON:[SYSLIB]DECW$OPENGLUSHR.EXE; as input
-RMS-E-FNF, file not found

Apparently it's not needed. I removed it
from the linker options file, and everyone
was happy.

(I do seem to have DECW$OPENGLUSHR_V11.EXE,
but I assume that we wouldn't want to be
usiong that one.)

> I do not understand this.

Which "this" is this "this"?


> I have:
> [...]

Around here:

XP1000 (500MHz), ATI Radeon 7500 (PCI)
VMS V8.3

xdpyinfo says:
[...]
version number: 11.0
vendor string: DECWINDOWS Hewlett-Packard Development Company OpenVMS
[...]
screen #0:
dimensions: 1280x1024 pixels (325x260 millimeters)
resolution: 100x100 dots per inch
depths (1): 24
root window id: 0x2e
depth of root window: 24 planes
[...]

One advantage (property?) of IA64 is that
IEEE floating=point tends to be the default
there.
Steven Schweda
Honored Contributor
Solution

Re: questions over Open3D Radeon 7500 on OpenVMS

Xv window grab (1) attachment.
Steven Schweda
Honored Contributor

Re: questions over Open3D Radeon 7500 on OpenVMS

Xv window grab (2) attachment.
Alex Chupahin
Super Advisor

Re: questions over Open3D Radeon 7500 on OpenVMS

Thank you Steven,
/FLOAT=IEEE /IEEE=DENORM

it seems I totally forget this simple wisdom words when I work on alpha...
Demos now works fine, including ones from libSDL. And GLDOOM work nice also!

Ufff, now I should rewrite build procedures
for all libSDL library set and republic it. But this is another story :)