vc4: Fix viewport handling in the uniforms upload.
I had the right viewports in vc4_emit.c, but grabbed the wrong values in the uniform setup, so primitives would claim to be in the wrong parts of the screen. (The vc4_emit.c state looks like it just decides how big the clipping guardband is). This gets fbo-viewport closer to working (which still has the problem that the HW is always guard-band clipping), and fixes inverted FBO rendering in general.
This commit is contained in:
@@ -1474,12 +1474,10 @@ vc4_write_uniforms(struct vc4_context *vc4, struct vc4_compiled_shader *shader,
|
||||
gallium_uniforms[uinfo->data[i]]);
|
||||
break;
|
||||
case QUNIFORM_VIEWPORT_X_SCALE:
|
||||
cl_f(&vc4->uniforms,
|
||||
vc4->framebuffer.width * 16.0f / 2.0f);
|
||||
cl_f(&vc4->uniforms, vc4->viewport.scale[0] * 16.0f);
|
||||
break;
|
||||
case QUNIFORM_VIEWPORT_Y_SCALE:
|
||||
cl_f(&vc4->uniforms,
|
||||
vc4->framebuffer.height * -16.0f / 2.0f);
|
||||
cl_f(&vc4->uniforms, vc4->viewport.scale[1] * 16.0f);
|
||||
break;
|
||||
|
||||
case QUNIFORM_VIEWPORT_Z_OFFSET:
|
||||
|
||||
Reference in New Issue
Block a user