#include "main/mtypes.h"
#include "main/enums.h"
#include "main/fbobject.h"
+#include "main/state.h"
#include "intel_batchbuffer.h"
return;
/* _NEW_BUFFERS */
- bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+ bool flip_y = ctx->DrawBuffer->FlipY;
memset(&key, 0, sizeof(key));
if (key.do_point_sprite) {
key.point_sprite_coord_replace = ctx->Point.CoordReplace & 0xff;
}
- if (brw->fragment_program->info.inputs_read &
+ if (brw->programs[MESA_SHADER_FRAGMENT]->info.inputs_read &
BITFIELD64_BIT(VARYING_SLOT_PNTC)) {
key.do_point_coord = 1;
}
* Window coordinates in a FBO are inverted, which means point
* sprite origin must be inverted, too.
*/
- if ((ctx->Point.SpriteOrigin == GL_LOWER_LEFT) != render_to_fbo)
+ if ((ctx->Point.SpriteOrigin == GL_LOWER_LEFT) == flip_y)
key.sprite_origin_lower_left = true;
/* BRW_NEW_FS_PROG_DATA */
}
/* _NEW_LIGHT | _NEW_PROGRAM */
- key.do_twoside_color = ((ctx->Light.Enabled && ctx->Light.Model.TwoSide) ||
- ctx->VertexProgram._TwoSideEnabled);
+ key.do_twoside_color = _mesa_vertex_program_two_side_enabled(ctx);
/* _NEW_POLYGON */
if (key.do_twoside_color) {
* face orientation, just as we invert the viewport in
* sf_unit_create_from_key().
*/
- key.frontface_ccw = ctx->Polygon._FrontBit == render_to_fbo;
+ key.frontface_ccw = brw->polygon_front_bit != flip_y;
}
- if (!brw_search_cache(&brw->cache, BRW_CACHE_SF_PROG,
- &key, sizeof(key),
- &brw->sf.prog_offset, &brw->sf.prog_data)) {
+ if (!brw_search_cache(&brw->cache, BRW_CACHE_SF_PROG, &key, sizeof(key),
+ &brw->sf.prog_offset, &brw->sf.prog_data, true)) {
compile_sf_prog( brw, &key );
}
}