Teisei Nov 19, 2012 @ 1:41am
Solution to Black Screen in TF2
I just wanted to share my solution to the black screen problem in TF2. I'm using Xubuntu 12.10 64-bit with 310 series Nvidia drivers (GPU = GTX460M).

1) Open a terminal and type: sudo nano /usr/bin/steam
2) Add the following lines after "#! /bin/bash":
export LANG=C
export LC_NUMERIC=POSIX
3) Save (CTRL-O + Enter + CTRL-X)
4) Launch Steam

Just "export LANG=C" alone didn't help me, but for some it has done the trick. I got my idea from Limited Beta section, but since I'm not in the beta, I can't contribute there. I hope this workaround helps those who have this problem.
Showing 1-15 of 89 comments
< >
Yulike Nov 19, 2012 @ 1:58am 
Thanks for your contribution, however this doesn't work for Intel HD 2000. I gave it a shot anyway and though I would give my input. TF2 works fine on Windows with the HD 2000. Can someone explain how changing files to do with Steam will effect TF2?
Teisei Nov 19, 2012 @ 2:05am 
Hi! I'm not sure if HD 2000 is (yet) supported by Steam for Linux. But I sure hope it will, if it works on Windows.

EDIT: Also, if you launch TF2, does the in-game chat-overlay-thingy work?
Last edited by Teisei; Nov 19, 2012 @ 2:06am
Yulike Nov 19, 2012 @ 2:15am 
Yeah that's what I expected, yes the Steam-Overlay works, occasionally the Overlay will "overwrite" the textures, in games like World of Goo. This even happens after your "fix". Killing Floor works flawlessly though.
Teisei Nov 19, 2012 @ 2:17am 
That's strange. Maybe it's game specific after all ...
iamoverrated Nov 19, 2012 @ 2:46am 
Didn't help me :*(
I'm using a Radeon 5850
AnAkkk Nov 19, 2012 @ 2:50am 
It doesn't work for me either.
iamoverrated Nov 19, 2012 @ 2:52am 
/home/iamoverrated/Steam/SteamApps/iamoverrated/Team Fortress 2/hl2.sh: line 72: 3156 Segmentation fault (core dumped) ${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
Game removed: AppID 440 "Team Fortress 2", ProcID 3156
processpipe_posix.cpp (371) : Assertion Failed: CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe)
Assert( Assertion Failed: CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe) ):/home/buildbot/buildslave_steam/steam_rel_client_ubuntu12_linux/build/src/clientdll/../common/processpipe_posix.cpp:371

That's what its spitting out.
Yulike Nov 19, 2012 @ 3:04am 
I got this.
Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
centroid varying vec4 oT2;
varying vec4 oT4;
//SAMPLERMASK-83
//SAMPLERTYPES-ffff3ff0
//HIGHWATER-31

uniform vec4 pc[31];

uniform sampler2D sampler0;
uniform sampler2D sampler1;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 63
vec4 r0;
vec4 r1;
vec4 r2;
vec4 r3;
r2 = texture2D( sampler0, oT0.xy );
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler1, oT2.xy );
r0.w = -oT4.z + pc[10].z;
r1.w = 1.0 / r0.w;
r3.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;
r0.w = -oT4.z + pc[11].y;
r1.xyz = r3.xyz * gl_Color.xyz;
r0.w = r1.w * r0.w;
r0.w = clamp( r0.w, 0.0, 1.0 );
r0.xyz = r0.xyz * pc[12].xyz;
r0.w = r0.w * oT4.w;
r0.xyz = r1.xyz * r0.xyz;
r0.w = r0.w * pc[11].w;
r0.w = clamp( r0.w, 0.0, 1.0 );
r1.w = pc[30].x;
r1.xyz = r0.xyz * -r1.www + pc[29].xyz;
r1.w = r0.w;
r1.w = clamp( r1.w, 0.0, 1.0 );
r1.xyz = r1.xyz * r1.www;
r0.xyz = r0.xyz * pc[30].xxx + r1.xyz;
gl_FragData[0] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
centroid varying vec4 oT3;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-89
//SAMPLERTYPES-ffff3f3c
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler3;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 64
vec4 pd0 = vec4( -2.0, 3.0, 0.25, 0.699999988079 );
vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
vec4 r3;
r0.x = oT3.z;
r0.y = oT3.w;
r2 = texture2D( sampler3, r0.xy );
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r2.w = r2.x + r2.y;
r2.w = clamp( r2.w, 0.0, 1.0 );
r1.w = -r2.x + r2.y;
r1.w = clamp( r1.w, 0.0, 1.0 );
r2.w = r2.w + -r1.w;
r1.w = -r1.w + gl_SecondaryColor.x;
r2.w = 1.0 / r2.w;
r2.w = r1.w * r2.w;
r2.w = clamp( r2.w, 0.0, 1.0 );
r2.x = oT5.z;
r1.w = r2.w * pd0.x + pd0.y;
r2.y = oT6.z;
r2.w = r2.w * r2.w;
r2.z = oT7.z;
r1.w = r1.w * r2.w;
r3.x = dot( r2.xyz, pd1.xyz );
r2.xyz = r1.www * ( r1.xyz - r0.xyz ) + r0.xyz;
r2.w = r3.x * pd0.z + pd0.w;
r0.xyz = r2.xyz * gl_Color.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r2.www * r0.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-81
//SAMPLERTYPES-ffff3ffc
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 72
vec4 pd0 = vec4( 0.25, 0.699999988079, 0.0, 0.0 );
vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r2.x = oT5.z;
r2.y = oT6.z;
r2.z = oT7.z;
r2.x = dot( r2.xyz, pd1.xyz );
r2.w = r2.x * pd0.x + pd0.y;
r2.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r0.xyz ) + r0.xyz;
r0.xyz = r2.xyz * gl_Color.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r2.www * r0.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-81
//SAMPLERTYPES-ffff3ffc
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 76
vec4 pd0 = vec4( 0.25, 0.699999988079, 0.0, 0.0 );
vec4 pd1 = vec4( 0.43643578887, 0.87287157774, -0.218217894435, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r2.x = oT5.z;
r2.y = oT6.z;
r2.z = oT7.z;
r2.x = dot( r2.xyz, pd1.xyz );
r2.w = r2.x * pd0.x + pd0.y;
r2.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r0.xyz ) + r0.xyz;
r0.xyz = r2.xyz * gl_Color.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r2.www * r0.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
centroid varying vec4 oT3;
varying vec4 oT4;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-89
//SAMPLERTYPES-ffff3f3c
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler3;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 80
vec4 pd0 = vec4( 2.200000047684, -2.0, 3.0, 1.0 );
vec4 r0;
vec4 r1;
vec4 r2;
r0.x = oT3.z;
r0.y = oT3.w;
r2 = texture2D( sampler3, r0.xy );
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r2.w = r2.x + r2.y;
r2.w = clamp( r2.w, 0.0, 1.0 );
r1.w = -r2.x + r2.y;
r1.w = clamp( r1.w, 0.0, 1.0 );
r2.w = r2.w + -r1.w;
r0.x = log2( r0.x );
r1.w = -r1.w + gl_SecondaryColor.x;
r0.y = log2( r0.y );
r2.w = 1.0 / r2.w;
r0.z = log2( r0.z );
r2.w = r1.w * r2.w;
r2.w = clamp( r2.w, 0.0, 1.0 );
r0.xyz = r0.xyz * pd0.xxx;
r1.w = r2.w * pd0.y + pd0.z;
r2.x = exp2( r0.x );
r2.w = r2.w * r2.w;
r2.y = exp2( r0.y );
r1.w = r1.w * r2.w;
r2.z = exp2( r0.z );
r0.xyz = r1.www * ( r1.xyz - r2.xyz ) + r2.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r0.xyz * gl_Color.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;
r0.x = oT5.z;
r0.y = oT6.z;
r0.z = oT7.z;
gl_FragData[1] = r0;
r0.xyz = oT4.xyz;
gl_FragData[2] = r0;
r0.xyz = pd0.www;
gl_FragData[3] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
varying vec4 oT4;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-81
//SAMPLERTYPES-ffff3ffc
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 88
vec4 pd0 = vec4( 2.200000047684, 1.0, 0.0, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r0.x = log2( r0.x );
r0.y = log2( r0.y );
r0.z = log2( r0.z );
r0.xyz = r0.xyz * pd0.xxx;
r2.x = exp2( r0.x );
r2.y = exp2( r0.y );
r2.z = exp2( r0.z );
r0.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r0.xyz * gl_Color.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;
r0.x = oT5.z;
r0.y = oT6.z;
r0.z = oT7.z;
gl_FragData[1] = r0;
r0.xyz = oT4.xyz;
gl_FragData[2] = r0;
r0.xyz = pd0.yyy;
gl_FragData[3] = r0;

}


Compile of "lightmappedgeneric_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
varying vec4 oT4;
varying vec4 oT5;
varying vec4 oT6;
varying vec4 oT7;
//SAMPLERMASK-81
//SAMPLERTYPES-ffff3ffc
//HIGHWATER-13

uniform vec4 pc[13];

uniform sampler2D sampler0;
uniform sampler2D sampler7;



void main()
{
// trans#0 label:ps-file lightmappedgeneric_ps20b ps-index 2359488 ps-combo 92
vec4 pd0 = vec4( 2.200000047684, 1.0, 0.0, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
r1 = texture2D( sampler7, oT0.xy );
r0 = texture2D( sampler0, oT0.xy );
r0.x = log2( r0.x );
r0.y = log2( r0.y );
r0.z = log2( r0.z );
r0.xyz = r0.xyz * pd0.xxx;
r2.x = exp2( r0.x );
r2.y = exp2( r0.y );
r2.z = exp2( r0.z );
r0.xyz = gl_SecondaryColor.xxx * ( r1.xyz - r2.xyz ) + r2.xyz;
r1.w = gl_Color.w * pc[12].w;
r0.xyz = r0.xyz * gl_Color.xyz;
r0.w = r0.w * r1.w;
gl_FragData[0] = r0;
r0.x = oT5.z;
r0.y = oT6.z;
r0.z = oT7.z;
gl_FragData[1] = r0;
r0.xyz = oT4.xyz;
gl_FragData[2] = r0;
r0.xyz = pd0.yyy;
gl_FragData[3] = r0;

}


Compile of "Downsample_vs20" Failed:
//GLSLvp
#version 130
//ATTRIBMAP-00-50-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx
attribute vec4 v0; // 80000000 900f0000
attribute vec4 v1; // 80000005 900f0001
//SAMPLERMASK-0
//SAMPLERTYPES-ffffffff
//HIGHWATER-52
//HIGHWATERBONE-0

uniform vec4 vc[52];

uniform vec4 vcscreen;

varying vec4 oT0;
varying vec4 oT1;
varying vec4 oT2;
varying vec4 oT3;

void main()
{
// trans#0 label:vs-file Downsample_vs20 vs-index 0 vs-combo 0
vec4 vTempPos;
oT0.xy = v1.xy + vc[48].xy;
oT1.xy = v1.xy + vc[49].xy;
oT2.xy = v1.xy + vc[50].xy;
oT3.xy = v1.xy + vc[51].xy;
vTempPos = v0.xyzx * vc[0].yyyx + vc[0].xxxy;
gl_ClipVertex = vTempPos;
vTempPos.z = vTempPos.z * vc[0].z - vTempPos.w; // z' = (2*z)-w
vTempPos.y = -vTempPos.y; // y' = -y
vTempPos.xy += vcscreen.xy * vTempPos.w;
gl_Position = vTempPos;

}


Compile of "downsample_nohdr_ps20b" Failed:
//GLSLfp
#version 130
varying vec4 oT0;
varying vec4 oT1;
varying vec4 oT2;
varying vec4 oT3;
//SAMPLERMASK-1
//SAMPLERTYPES-fffffffc
//HIGHWATER-1

uniform vec4 pc[1];

uniform sampler2D sampler0;



void main()
{
// trans#0 label:ps-file downsample_nohdr_ps20b ps-index 0 ps-combo 0
vec4 pd1 = vec4( 0.25, 0.0, 0.0, 0.0 );
vec4 r0;
vec4 r1;
vec4 r2;
vec4 r3;
vec4 r4;
r0 = texture2D( sampler0, oT0.xy );
r3 = texture2D( sampler0, oT1.xy );
r2 = texture2D( sampler0, oT2.xy );
r1 = texture2D( sampler0, oT3.xy );
r4.x = log2( r0.x );
r4.y = log2( r0.y );
r4.z = log2( r0.z );
r4.xyz = r4.xyz * pc[0].www;
r4.x = exp2( r4.x );
r4.y = exp2( r4.y );
r4.z = exp2( r4.z );
r0.x = dot( r0.xyz, pc[0].xyz );
r0.xyz = r4.xyz * r0.xxx;
r4.x = log2( r3.x );
r4.y = log2( r3.y );
r4.z = log2( r3.z );
r4.xyz = r4.xyz * pc[0].www;
r4.x = exp2( r4.x );
r4.y = exp2( r4.y );
r4.z = exp2( r4.z );
r3.x = dot( r3.xyz, pc[0].xyz );
r3.xyz = r4.xyz * r3.xxx;
r0 = r0 + r3;
r3.x = log2( r2.x );
r3.y = log2( r2.y );
r3.z = log2( r2.z );
r3.xyz = r3.xyz * pc[0].www;
r3.x = exp2( r3.x );
r3.y = exp2( r3.y );
r3.z = exp2( r3.z );
r2.x = dot( r2.xyz, pc[0].xyz );
r2.xyz = r3.xyz * r2.xxx;
r0 = r2 + r0;
r2.x = log2( r1.x );
r2.y = log2( r1.y );
r2.z = log2( r1.z );
r2.xyz = r2.xyz * pc[0].www;
r2.x = exp2( r2.x );
r2.y = exp2( r2.y );
r2.z = exp2( r2.z );
r1.x = dot( r1.xyz, pc[0].xyz );
r1.xyz = r2.xyz * r1.xxx;
r0 = r1 + r0;
r0 = r0 * pd1.xxxx;
gl_FragData[0] = r0;

}


Loaded program cache file "glbaseshaders.cfg", total keyvalues: 266, total successfully linked: 266
Could not load program cache file glshaders.cfg
Could not find user GL shader cache file
Precache: Took 12768 ms, Vertex 928, Pixel 1367
Game.so loaded for "Team Fortress"
dakira Nov 19, 2012 @ 4:49am 
Okay everyone. This is a problem with locales obviously. I'd guess it has to do with different number-formats in different regions. Like the decimal point being a comma outside English speaking countries.

That said, you can set this behavior as the threadstarter said. You can also just run the game like this:

LC_NUMERIC=POSIX steam steam://rungameid/520

My question now: Where do we report bugs? Are the forums for reporting bugs or is there a bugtracker where we can report them?
AnAkkk Nov 19, 2012 @ 5:11am 
It's not only locale related. It could be that you are running the game on an unsupported intel video card.
[Linux] Schrödinger's cat Nov 19, 2012 @ 5:22am 
I tried to launch TF2 with radeon open source drivers, but all I get is black screen with playing music. In terminal I get this: radeon: The kernel rejected CS, see dmesg for more information. Any solution for this?
Vladradamus Nov 19, 2012 @ 6:56am 
Originally posted by dakira:
Okay everyone. This is a problem with locales obviously. I'd guess it has to do with different number-formats in different regions. Like the decimal point being a comma outside English speaking countries.

Yes. They call functions this way: doSomething(float x, float y, ...). Now you can probably see the problem, they read the decimal point from somewhere (probably to create correct output for messages like errors or documentation). If its point then the function call looks like doSomething(3.14, 2.7) which is correct. If its comma the call is doSomething(3,14, 2,7), as you can see now they call 4 parameters instead of 2 and that causes errors.

That's actually a pretty dumb bug. I've already seen something like this in a CAD lib...
Yulike Nov 19, 2012 @ 8:41am 
I take it if the HD 2000 is unsupported they're not even going to bother fixing this bug? Looks like I'll be keeping a Windows install after all. :/ Will this bug happen with every Source game? The HD 2000 is good enough to play TF2, CS:S, and GMod so I don't know why they don't fix it.
Magbed@Linux! Nov 19, 2012 @ 8:53am 
Having the same issue on a 680 GTX
LOLCAT Nov 19, 2012 @ 8:57am 
Originally posted by dakira:
My question now: Where do we report bugs? Are the forums for reporting bugs or is there a bugtracker where we can report them?

You can't. That's the point of the limited beta. Only those 1000 people can report bugs. Don't worry, they have found this one already.
Showing 1-15 of 89 comments
< >
Per page: 15 30 50
Date Posted: Nov 19, 2012 @ 1:41am
Posts: 89