mesa/st: Generates TGSI that always recognizes INSTANCEID/VERTEXID as integers.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 12 Jul 2012 19:44:02 +0000 (20:44 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 13 Jul 2012 12:01:52 +0000 (13:01 +0100)
commitb3ba0a7afa6311e12852fb1373452e480f89ea96
tree8ef4f3abfbe9ce4a8aca5d3c0a758c9be53679e7
parent6dddd184803da5f67f69e7c243dbb596b4dd4b9d
mesa/st: Generates TGSI that always recognizes INSTANCEID/VERTEXID as integers.

Tested by running piglit draw-instanced, and by forcing llvmpipe advertise no native
integer support, which now produces:

VERT
DCL IN[0]
DCL SV[0], INSTANCEID
DCL OUT[0], POSITION
DCL OUT[1], COLOR
DCL CONST[0..19]
DCL TEMP[0], LOCAL
DCL TEMP[1], LOCAL
DCL TEMP[2], LOCAL
DCL ADDR[0]
  0: U2F TEMP[0].x, SV[0]
  1: ARL ADDR[0].x, TEMP[0].xxxx
  2: MOV TEMP[1].xy, CONST[ADDR[0].x+8].xyxx
  3: ADD TEMP[2].x, IN[0].xxxx, TEMP[1].xxxx
  4: ADD TEMP[1].x, IN[0].yyyy, TEMP[1].yyyy
  5: MUL TEMP[2], CONST[16], TEMP[2].xxxx
  6: MAD TEMP[2], CONST[17], TEMP[1].xxxx, TEMP[2]
  7: MAD TEMP[2], CONST[18], IN[0].zzzz, TEMP[2]
  8: MAD TEMP[2], CONST[19], IN[0].wwww, TEMP[2]
  9: ARL ADDR[0].x, TEMP[0].xxxx
 10: MOV TEMP[1], CONST[ADDR[0].x]
 11: MOV OUT[0], TEMP[2]
 12: MOV OUT[1], TEMP[1]
 13: END
src/mesa/state_tracker/st_glsl_to_tgsi.cpp
src/mesa/state_tracker/st_mesa_to_tgsi.c