ソースを参照

mesa: fix bug in get_uniform_rows_cols(): sometimes returned too many rows

tags/mesa_20090313
Brian Paul 17年前
コミット
ea9568dfbe
1個のファイルの変更13行の追加6行の削除
  1. 13
    6
      src/mesa/shader/shader_api.c

+ 13
- 6
src/mesa/shader/shader_api.c ファイルの表示

@@ -1108,7 +1108,8 @@ get_matrix_dims(GLenum type, GLint *rows, GLint *cols)

/**
* Determine the number of rows and columns occupied by a uniform
* according to its datatype.
* according to its datatype. For non-matrix types (such as GL_FLOAT_VEC4),
* the number of rows = 1 and cols = number of elements in the vector.
*/
static void
get_uniform_rows_cols(const struct gl_program_parameter *p,
@@ -1117,11 +1118,17 @@ get_uniform_rows_cols(const struct gl_program_parameter *p,
get_matrix_dims(p->DataType, rows, cols);
if (*rows == 0 && *cols == 0) {
/* not a matrix type, probably a float or vector */
*rows = p->Size / 4 + 1;
if (p->Size % 4 == 0)
*cols = 4;
else
*cols = p->Size % 4;
if (p->Size <= 4) {
*rows = 1;
*cols = p->Size;
}
else {
*rows = p->Size / 4 + 1;
if (p->Size % 4 == 0)
*cols = 4;
else
*cols = p->Size % 4;
}
}
}


読み込み中…
キャンセル
保存