Skip to main content
gamedev.net
🔒 Locked

Specific hardware issue

Started by Scarabus2 1 reply 1k views
Original Post
Scarabus2
Scarabus2
Hi. I'm working on a visual novel maker called Novelty (www.visualnovelty.com) and I've run into a very specific problem that I need some help with. Some of my users have experienced a bug where images (regular textured quads) won't render properly. The curious thing is that they are all running on the same graphics accelerator: VIA/S3G UniChrome Pro. This bug seems to only occur with this specific chipset. This is how the bug appears How it's supposed to look What puzzles me is that the initialization of DirectX hasn't failed in the first place. Some elements, such as the UI controls, are being rendered. Granted, they are all texture-less, but I somehow doubt the chip wouldn't support textures. The code for rendering the quads is as vanilla as can be and I can't imagine what would cause this. It's not like I'm trying to do anything fancy and it works perfectly on all other hardware. Does anyone have any experience with this particular piece of hardware or have any hint of what its issue could be? PS. While my users were googling that card they discovered it was on Blizzard's list of unsupported hardware for WoW. Need I make this the first on a similar list of my own? FVF:
typedef struct 
{
	float x;
	float y;
	float z;
	D3DCOLOR color;
	float u;
	float v;
	float maskU;
	float maskV;
} TLVERTEX2D;

const DWORD D3DFVF_TLVERTEX2D = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX2;





Render code:
void scGeometry::Draw()
{
	if (!m_pVertexBuffer || !m_pDevice || m_Vertices.size() < 3 || m_Mode == SC_GEO_UNKNOWN)
		return;

	m_pDevice->SetFVF(D3DFVF_TLVERTEX2D);
	m_pDevice->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(TLVERTEX2D));

	switch (m_Mode)
	{
	case SC_GEO_TRIFAN:
		m_pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, m_Vertices.size() - 2 );
		break;
	case SC_GEO_TRILIST:
		m_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, m_Vertices.size() / 3 );
		break;
	case SC_GEO_TRISTRIP:
		m_pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, m_Vertices.size() - 2 );
		break;
	}
}

visualnovelty.com - Novelty - Visual novel maker
MJP
MJP
If you only have issues with one specific GPU, then a driver bug is likely. Try running your app with the reference rasterizer and debug runtimes enabled...if everything works okay then it's the driver that's at fault. Then you can try and work around it (if you feel it's worth supporting that GPU).
Matias Goldberg
Matias Goldberg
Quote:
Original post by MJP
If you only have issues with one specific GPU, then a driver bug is likely. Try running your app with the reference rasterizer and debug runtimes enabled...if everything works okay then it's the driver that's at fault. Then you can try and work around it (if you feel it's worth supporting that GPU).

Do what MJP says FIRST.

Second, from my experience with missing polygons with old video cards, this usually happens because:

1) The texture format is not supported (i.e. ARGB8888 RGB565, BGRA8888, etc)
2) The texture resolution is not a power of 2 (i.e. 128, 256, 512) and the card doesn't support it
3) The texture resolution is not squared (i.e. 64x64 instead of 64x32) and the card doesn't support non-squared textures.
4) The texture resolution is too big. (i.e. it supports up to 1024x1024, and your image is 2048x2048)
5) You've ran out of video memory.

Note that some crappy drivers report they support more than they actually do (they "lie", like the SiS 620). I.e. They could be claiming to support non-power-of-2 textures, when they actually don't.

Cheers
Dark Sylinc

Edit: May be the card has problems with the D3DFVF_TEX2 field. Who knows...
Edit2: Ah! Forgot to mention:
Some cards (like the GeForce MX 4000) will report that they support non-squared and non-power-of-2 textures, and it's true.
However, some very strange (usually not even) resolutions still will fail. Very odd to encounter such strange resolution (even weirder a game developer using such resolution in the first place) but it may happen.
This is a known issue that affects many GPUs from that era. And we all had to deal with it.

[Edited by - Matias Goldberg on May 26, 2009 2:37:36 PM]

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.