- else if (datatype == GL_UNSIGNED_INT_5_9_9_9_REV && comps == 3) {
- DECLARE_ROW_POINTERS0(GLuint);
-
- GLfloat res[3];
- GLfloat rowAj[3], rowBj[3], rowCj[3], rowDj[3];
- GLfloat rowAk[3], rowBk[3], rowCk[3], rowDk[3];
-
- for (i = j = 0, k = k0; i < (GLuint) dstWidth;
- i++, j += colStride, k += colStride) {
- rgb9e5_to_float3(rowA[j], rowAj);
- rgb9e5_to_float3(rowB[j], rowBj);
- rgb9e5_to_float3(rowC[j], rowCj);
- rgb9e5_to_float3(rowD[j], rowDj);
- rgb9e5_to_float3(rowA[k], rowAk);
- rgb9e5_to_float3(rowB[k], rowBk);
- rgb9e5_to_float3(rowC[k], rowCk);
- rgb9e5_to_float3(rowD[k], rowDk);
- res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0] +
- rowCj[0] + rowCk[0] + rowDj[0] + rowDk[0]) * 0.125F;
- res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1] +
- rowCj[1] + rowCk[1] + rowDj[1] + rowDk[1]) * 0.125F;
- res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2] +
- rowCj[2] + rowCk[2] + rowDj[2] + rowDk[2]) * 0.125F;
- dst[i] = float3_to_rgb9e5(res);
- }
- }
-
- else if (datatype == GL_UNSIGNED_INT_10F_11F_11F_REV && comps == 3) {
- DECLARE_ROW_POINTERS0(GLuint);
-
- GLfloat res[3];
- GLfloat rowAj[3], rowBj[3], rowCj[3], rowDj[3];
- GLfloat rowAk[3], rowBk[3], rowCk[3], rowDk[3];
-
- for (i = j = 0, k = k0; i < (GLuint) dstWidth;
- i++, j += colStride, k += colStride) {
- r11g11b10f_to_float3(rowA[j], rowAj);
- r11g11b10f_to_float3(rowB[j], rowBj);
- r11g11b10f_to_float3(rowC[j], rowCj);
- r11g11b10f_to_float3(rowD[j], rowDj);
- r11g11b10f_to_float3(rowA[k], rowAk);
- r11g11b10f_to_float3(rowB[k], rowBk);
- r11g11b10f_to_float3(rowC[k], rowCk);
- r11g11b10f_to_float3(rowD[k], rowDk);
- res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0] +
- rowCj[0] + rowCk[0] + rowDj[0] + rowDk[0]) * 0.125F;
- res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1] +
- rowCj[1] + rowCk[1] + rowDj[1] + rowDk[1]) * 0.125F;
- res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2] +
- rowCj[2] + rowCk[2] + rowDj[2] + rowDk[2]) * 0.125F;
- dst[i] = float3_to_r11g11b10f(res);
- }
- }
-