#include "brw_context.h"
#include "brw_screen.h"
-#include "brw_util.h"
#include "brw_wm.h"
#include "brw_state.h"
#include "brw_debug.h"
+#include "brw_resource.h"
#include "brw_pipe_rast.h"
case WM_FB_WRITE:
case WM_PINTERP:
return 3;
+ case TGSI_OPCODE_TEX:
+ case TGSI_OPCODE_TXP:
+ case TGSI_OPCODE_TXB:
+ case TGSI_OPCODE_TXD:
+ /* sampler arg is held as a field in the instruction, not in an
+ * actual register:
+ */
+ return tgsi_get_opcode_info(opcode)->num_src - 1;
+
default:
assert(opcode < MAX_OPCODE);
return tgsi_get_opcode_info(opcode)->num_src;
brw_init_compile(brw, &c->func);
- /* temporary sanity check assertion */
- assert(fp->has_flow_control == brw_wm_has_flow_control(c->fp));
-
/*
* Shader which use GLSL features such as flow control are handled
* differently from "simple" shaders.
/* XXX: GLSL support
*/
exit(1);
- //brw_wm_branching_shader_emit(brw, c);
+ /* brw_wm_branching_shader_emit(brw, c); */
}
else {
c->dispatch_width = 16;
line_aa = AA_NEVER;
break;
case PIPE_PRIM_LINES:
- line_aa = AA_ALWAYS;
+ line_aa = (brw->curr.rast->templ.line_smooth ?
+ AA_ALWAYS : AA_NEVER);
break;
default:
line_aa = brw->curr.rast->unfilled_aa_line;
/* PIPE_NEW_BOUND_TEXTURES */
- for (i = 0; i < brw->curr.num_textures; i++) {
- const struct brw_texture *tex = brw_texture(brw->curr.texture[i]);
+ for (i = 0; i < brw->curr.num_fragment_sampler_views; i++) {
+ const struct brw_texture *tex = brw_texture(brw->curr.fragment_sampler_views[i]->texture);
- if (tex->base.format == PIPE_FORMAT_YCBCR)
+ if (tex->b.b.format == PIPE_FORMAT_UYVY)
key->yuvtex_mask |= 1 << i;
- if (tex->base.format == PIPE_FORMAT_YCBCR_REV)
+ if (tex->b.b.format == PIPE_FORMAT_YUYV)
key->yuvtex_swap_mask |= 1 << i;
/* XXX: shadow texture
/* CACHE_NEW_VS_PROG */
key->vp_nr_outputs = brw->vs.prog_data->nr_outputs;
+ key->nr_cbufs = brw->curr.fb.nr_cbufs;
+
+ key->nr_inputs = brw->curr.fragment_shader->info.num_inputs;
+
/* The unique fragment program ID */
key->program_string_id = brw->curr.fragment_shader->id;
}
.mesa = (PIPE_NEW_FRAGMENT_SHADER |
PIPE_NEW_DEPTH_STENCIL_ALPHA |
PIPE_NEW_RAST |
+ PIPE_NEW_NR_CBUFS |
PIPE_NEW_BOUND_TEXTURES),
.brw = (BRW_NEW_WM_INPUT_DIMENSIONS |
BRW_NEW_REDUCED_PRIMITIVE),