Changes between Version 12 and Version 13 of GcnInstrsMimg


Ignore:
Timestamp:
01/17/16 15:00:19 (8 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GcnInstrsMimg

    v12 v13  
    13761376    ((UINT*)VM)[i] = VDATA[i] ^ ((UINT*)VM)[i]
    13771377VDATA = (GLC) ? P : VDATA // atomic</code></p>
     1378<h4>IMAGE_GATHER4</h4>
     1379<p>Opcode: 64 (0x40)<br />
     1380Syntax: IMAGE_GATHER4 VDATA(4), VADDR(1:4), SRSRC(4,8), SSAMP(4)<br />
     1381Description: Get component's value from 4 neighboring pixels, that closest to choosen
     1382coordinates in VADDR. Choosen component is first one bit in DMASK. The left top pixel are
     1383choosen from FLOOR(X-0.5) for X coordinate, FLOOR(Y-0.5) for Y coordinate.
     1384Following VDATA registers stores:</p>
     1385<ul>
     1386<li>VDATA[0] - bottom left pixel's component (X,Y+1)</li>
     1387<li>VDATA[1] - bottom right pixel's component (X+1,Y+1)</li>
     1388<li>VDATA[0] - top right pixel's component (X+1,Y)</li>
     1389<li>VDATA[1] - top left  pixel's component (X,Y)</li>
     1390</ul>
     1391<p>Operation:<br />
     1392<code>INT X = FLOOR(ASFLOAT(VADDR[0])-0.5)
     1393INT Y = FLOOR(ASFLOAT(VADDR[1])-0.5)
     1394COMPTYPE* VMLT = VMIMG_SAMPLE(SRSRC, { X, Y, VADDR[2] }, SSAMP)
     1395COMPTYPE* VMRT = VMIMG_SAMPLE(SRSRC, { X+1 Y, VADDR[2] }, SSAMP)
     1396COMPTYPE* VMLB = VMIMG_SAMPLE(SRSRC, { X, Y+1, VADDR[2] }, SSAMP)
     1397COMPTYPE* VMRB = VMIMG_SAMPLE(SRSRC, { X+1, Y+1, VADDR[2] }, SSAMP)
     1398BYTE COMP = (DMASK&amp;1) ? 0 : (DMASK&amp;2) ? 1 : (DMASK&amp;4) ? 2 : 3;
     1399VDATA[0] = CONVERT_FROM_IMAGE(SRSRC, VMLB)[COMP]
     1400VDATA[1] = CONVERT_FROM_IMAGE(SRSRC, VMRB)[COMP]
     1401VDATA[2] = CONVERT_FROM_IMAGE(SRSRC, VMRT)[COMP]
     1402VDATA[3] = CONVERT_FROM_IMAGE(SRSRC, VMLT)[COMP]</code></p>
    13781403<h4>IMAGE_LOAD</h4>
    13791404<p>Opcode: 0 (0x0)<br />