pixlib: i915 fragment shader

git-svn-id: svn://kolibrios.org@6334 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2016-03-13 06:12:11 +00:00
parent a316af7413
commit caa8658f76

View File

@ -362,7 +362,7 @@ static GLuint create_rgba_shader(struct shader *shader)
" tex_coord = v_texcoord0.xy;\n" " tex_coord = v_texcoord0.xy;\n"
"}\n"; "}\n";
const char *fs_rgba = const char *fs_i965 =
"uniform sampler2D tex_rgba;\n" "uniform sampler2D tex_rgba;\n"
"uniform sampler2D tex_mask;\n" "uniform sampler2D tex_mask;\n"
"varying vec2 tex_coord;\n" "varying vec2 tex_coord;\n"
@ -372,8 +372,20 @@ static GLuint create_rgba_shader(struct shader *shader)
" gl_FragColor = vec4(texture2D(tex_rgba, tex_coord).rgb, ca);\n" " gl_FragColor = vec4(texture2D(tex_rgba, tex_coord).rgb, ca);\n"
"}\n"; "}\n";
const char *fs_i915 =
"uniform sampler2D tex_rgba;\n"
"uniform sampler2D tex_mask;\n"
"varying vec2 tex_coord;\n"
"void main()\n"
"{\n"
" float ca = texture2D(tex_mask, tex_coord).a;\n"
" gl_FragColor = vec4(texture2D(tex_rgba, tex_coord).rgb, ca);\n"
"}\n";
GLuint prog; GLuint prog;
GLint vs_shader, fs_shader; GLint vs_shader, fs_shader;
const char *fs_src;
char *drv_name;
int ret; int ret;
prog = glCreateProgram(); prog = glCreateProgram();
@ -384,7 +396,16 @@ static GLuint create_rgba_shader(struct shader *shader)
if(vs_shader == 0) if(vs_shader == 0)
goto err; goto err;
fs_shader = create_shader(GL_FRAGMENT_SHADER, fs_rgba); drv_name = (char*)glGetString(0x1F04);
printf("Render: %s\n", drv_name);
if(strstr(drv_name, "i965"))
fs_src = fs_i965;
else if(strstr(drv_name, "i915"))
fs_src = fs_i915;
else fs_src = NULL;
fs_shader = create_shader(GL_FRAGMENT_SHADER, fs_src);
if(fs_shader == 0) if(fs_shader == 0)
goto err; goto err;