Use of blending in vbo fallback

For code related discussions and questions
Post Reply
User avatar
karamel
Trained
Trained
Posts: 38
Joined: 27 Feb 2012, 21:02
Contact:

Use of blending in vbo fallback

Post by karamel »

Hello

I have an old graphic card which doesn't support VBO, mounted on an old PC which doesn't support graphic card upgrade anymore, thus Warzone 2.3 worked fine. Since beta 8 it should be compatible but crashed with segfault at the third frame of the game. Gdb told me that it crashed in lib/ivis_opengl/piestat.cpp, pie_ActivateFallback at glBlendColor (l394). I recompiled beta 9 commenting the 3 blending call and it works fine (see the function below).

My question is what do I miss with this part of code removed ? I played a game and didn't find anything weird. I searched for a better solution but after that line debugger falls into a #5 0x00000000 in ?? () No symbol table info available (maybe the fault of a non-free driver).

Note: I hesitated a lot between a forum post and a ticket but it looks like the bug is not related to the game code.

Code: Select all

void pie_ActivateFallback(SHADER_MODE, iIMDShape* shape, PIELIGHT teamcolour, PIELIGHT colour)
{
	if (shape->tcmaskpage == iV_TEX_INVALID)
	{
		return;
	}

	//Set the environment colour with tcmask
	GLfloat tc_env_colour[4];
	pal_PIELIGHTtoRGBA4f(&tc_env_colour[0], teamcolour);

	// TU0
	glActiveTexture(GL_TEXTURE0);
	pie_SetTexturePage(shape->texpage);
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,	GL_COMBINE);
	glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, tc_env_colour);

	// TU0 RGB
	glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB,		GL_ADD_SIGNED);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB,		GL_TEXTURE);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB,		GL_SRC_COLOR);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB,		GL_CONSTANT);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB,		GL_SRC_COLOR);

	// TU0 Alpha
	glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA,		GL_REPLACE);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA,		GL_TEXTURE);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA,	GL_SRC_ALPHA);

	// TU1
	glActiveTexture(GL_TEXTURE1);
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, _TEX_PAGE[shape->tcmaskpage].id);
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,	GL_COMBINE);

	// TU1 RGB
	glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB,		GL_INTERPOLATE);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB,		GL_PREVIOUS);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB,		GL_SRC_COLOR);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB,		GL_TEXTURE0);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB,		GL_SRC_COLOR);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB,		GL_TEXTURE);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB,		GL_SRC_ALPHA);

	// TU1 Alpha
	glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA,		GL_REPLACE);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA,		GL_PREVIOUS);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA,	GL_SRC_ALPHA);

//	glEnable(GL_BLEND);
//	glBlendFunc(GL_CONSTANT_COLOR, GL_ZERO);
//	glBlendColor(colour.byte.r / 255.0, colour.byte.g / 255.0,
//				colour.byte.b / 255.0, colour.byte.a / 255.0);

	glActiveTexture(GL_TEXTURE0);
}
User avatar
karamel
Trained
Trained
Posts: 38
Joined: 27 Feb 2012, 21:02
Contact:

Re: Use of blending in vbo fallback

Post by karamel »

After switching back to 2.3.9 to compare the team colors are darker and looks dirtier with blending disabled. Not worth buying a new computer 8)
Post Reply