On Sat, 24 Nov 2018 at 23:44, Daniel Ansorregui mailszeros@gmail.com wrote:
- Tested under W10, when Fetch4 is enabled, projection is ignored
- Untested what happens when Fetch4 is used on unsupported textures. Disabling Fetch4 fttb.
- The swizzle fix has been checked against windows since it does not match with gather4
Could you submit those tests?
@@ -9865,6 +9865,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * case WINED3D_GL_RES_TYPE_TEX_1D: texture_function = "texture1D"; coord_mask = "x";
fetch4 = FALSE; break; case WINED3D_GL_RES_TYPE_TEX_2D: texture_function = "texture2D";
@@ -9873,6 +9874,7 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * case WINED3D_GL_RES_TYPE_TEX_3D: texture_function = "texture3D"; coord_mask = "xyz";
fetch4 = FALSE; break; case WINED3D_GL_RES_TYPE_TEX_CUBE: texture_function = "textureCube";
@@ -9881,17 +9883,28 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv * case WINED3D_GL_RES_TYPE_TEX_RECT: texture_function = "texture2DRect"; coord_mask = "xy";
if (fetch4)
FIXME("Unsupported Fetch4 and texture2DRect sampling");
fetch4 = FALSE; break; default: FIXME("Unhandled texture type %#x.\n", settings->op[stage].tex_type); texture_function = ""; coord_mask = "xyzw"; proj = FALSE;
fetch4 = FALSE; break;
It may be nicer to just not set "fetch4" in gen_ffp_frag_op() for those texture types.
if (!legacy_syntax) texture_function = "texture";
if (fetch4)
{
texture_function = "textureGather";
Does that work with a GL 3.2 context? Or without core contexts?
@@ -5938,6 +5939,9 @@ void gen_ffp_frag_op(const struct wined3d_context *context, const struct wined3d settings->op[i].aarg1 = aarg1; settings->op[i].aarg2 = aarg2; settings->op[i].tmp_dst = state->texture_states[i][WINED3D_TSS_RESULT_ARG] == WINED3DTA_TEMP;
settings->op[i].fetch4 = state->textures[i] &&
state->textures[i]->resource.format_flags & WINED3DFMT_FLAG_ALLOW_FETCH4 &&
state->sampler_states[i][WINED3D_SAMP_MIPMAP_LOD_BIAS] == MAKEFOURCC('G','E','T','4');
Formatting.