st/mesa: use enum types instead of int/unsigned (v3)
Use the proper enum types for various variables. Makes life in gdb a little nicer. Note that the size of enum bitfields must be one larger so the high bit is always zero (for MSVC). v2: also increase size of image_format bitfield, per Eric Engestrom. v3: use the new ASSERT_BITFIELD_SIZE() macro Reviewed-by: Charmaine Lee <charmainel@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
@@ -189,10 +189,10 @@ public:
|
|||||||
int num_address_regs;
|
int num_address_regs;
|
||||||
uint32_t samplers_used;
|
uint32_t samplers_used;
|
||||||
glsl_base_type sampler_types[PIPE_MAX_SAMPLERS];
|
glsl_base_type sampler_types[PIPE_MAX_SAMPLERS];
|
||||||
int sampler_targets[PIPE_MAX_SAMPLERS]; /**< One of TGSI_TEXTURE_* */
|
enum tgsi_texture_type sampler_targets[PIPE_MAX_SAMPLERS];
|
||||||
int images_used;
|
int images_used;
|
||||||
int image_targets[PIPE_MAX_SHADER_IMAGES];
|
int image_targets[PIPE_MAX_SHADER_IMAGES];
|
||||||
unsigned image_formats[PIPE_MAX_SHADER_IMAGES];
|
enum pipe_format image_formats[PIPE_MAX_SHADER_IMAGES];
|
||||||
bool indirect_addr_consts;
|
bool indirect_addr_consts;
|
||||||
int wpos_transform_const;
|
int wpos_transform_const;
|
||||||
|
|
||||||
@@ -6229,6 +6229,15 @@ st_translate_program(
|
|||||||
assert(numInputs <= ARRAY_SIZE(t->inputs));
|
assert(numInputs <= ARRAY_SIZE(t->inputs));
|
||||||
assert(numOutputs <= ARRAY_SIZE(t->outputs));
|
assert(numOutputs <= ARRAY_SIZE(t->outputs));
|
||||||
|
|
||||||
|
ASSERT_BITFIELD_SIZE(st_src_reg, type, GLSL_TYPE_ERROR);
|
||||||
|
ASSERT_BITFIELD_SIZE(st_dst_reg, type, GLSL_TYPE_ERROR);
|
||||||
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, image_format, PIPE_FORMAT_COUNT);
|
||||||
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, tex_target,
|
||||||
|
(gl_texture_index) (NUM_TEXTURE_TARGETS - 1));
|
||||||
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, image_format,
|
||||||
|
(enum pipe_format) (PIPE_FORMAT_COUNT - 1));
|
||||||
|
ASSERT_BITFIELD_SIZE(glsl_to_tgsi_instruction, op, TGSI_OPCODE_LAST - 1);
|
||||||
|
|
||||||
t = CALLOC_STRUCT(st_translate);
|
t = CALLOC_STRUCT(st_translate);
|
||||||
if (!t) {
|
if (!t) {
|
||||||
ret = PIPE_ERROR_OUT_OF_MEMORY;
|
ret = PIPE_ERROR_OUT_OF_MEMORY;
|
||||||
@@ -6549,7 +6558,8 @@ st_translate_program(
|
|||||||
/* texture samplers */
|
/* texture samplers */
|
||||||
for (i = 0; i < frag_const->MaxTextureImageUnits; i++) {
|
for (i = 0; i < frag_const->MaxTextureImageUnits; i++) {
|
||||||
if (program->samplers_used & (1u << i)) {
|
if (program->samplers_used & (1u << i)) {
|
||||||
unsigned type = st_translate_texture_type(program->sampler_types[i]);
|
enum tgsi_return_type type =
|
||||||
|
st_translate_texture_type(program->sampler_types[i]);
|
||||||
|
|
||||||
t->samplers[i] = ureg_DECL_sampler(ureg, i);
|
t->samplers[i] = ureg_DECL_sampler(ureg, i);
|
||||||
|
|
||||||
|
@@ -127,13 +127,13 @@ public:
|
|||||||
unsigned is_64bit_expanded:1;
|
unsigned is_64bit_expanded:1;
|
||||||
unsigned sampler_base:5;
|
unsigned sampler_base:5;
|
||||||
unsigned sampler_array_size:6; /**< 1-based size of sampler array, 1 if not array */
|
unsigned sampler_array_size:6; /**< 1-based size of sampler array, 1 if not array */
|
||||||
unsigned tex_target:4; /**< One of TEXTURE_*_INDEX */
|
gl_texture_index tex_target:5;
|
||||||
glsl_base_type tex_type:5;
|
glsl_base_type tex_type:5;
|
||||||
unsigned tex_shadow:1;
|
unsigned tex_shadow:1;
|
||||||
unsigned image_format:9;
|
enum pipe_format image_format:10;
|
||||||
unsigned tex_offset_num_offset:3;
|
unsigned tex_offset_num_offset:3;
|
||||||
unsigned dead_mask:4; /**< Used in dead code elimination */
|
unsigned dead_mask:4; /**< Used in dead code elimination */
|
||||||
unsigned buffer_access:3; /**< buffer access type */
|
unsigned buffer_access:3; /**< bitmask of TGSI_MEMORY_x bits */
|
||||||
|
|
||||||
const struct tgsi_opcode_info *info;
|
const struct tgsi_opcode_info *info;
|
||||||
};
|
};
|
||||||
|
@@ -164,8 +164,8 @@ src_register(struct st_translate *t,
|
|||||||
/**
|
/**
|
||||||
* Map mesa texture target to TGSI texture target.
|
* Map mesa texture target to TGSI texture target.
|
||||||
*/
|
*/
|
||||||
unsigned
|
enum tgsi_texture_type
|
||||||
st_translate_texture_target(GLuint textarget, GLboolean shadow)
|
st_translate_texture_target(gl_texture_index textarget, GLboolean shadow)
|
||||||
{
|
{
|
||||||
if (shadow) {
|
if (shadow) {
|
||||||
switch (textarget) {
|
switch (textarget) {
|
||||||
@@ -223,7 +223,7 @@ st_translate_texture_target(GLuint textarget, GLboolean shadow)
|
|||||||
/**
|
/**
|
||||||
* Map GLSL base type to TGSI return type.
|
* Map GLSL base type to TGSI return type.
|
||||||
*/
|
*/
|
||||||
unsigned
|
enum tgsi_return_type
|
||||||
st_translate_texture_type(enum glsl_base_type type)
|
st_translate_texture_type(enum glsl_base_type type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#define ST_MESA_TO_TGSI_H
|
#define ST_MESA_TO_TGSI_H
|
||||||
|
|
||||||
#include "main/glheader.h"
|
#include "main/glheader.h"
|
||||||
|
#include "main/mtypes.h"
|
||||||
|
|
||||||
#include "pipe/p_compiler.h"
|
#include "pipe/p_compiler.h"
|
||||||
#include "pipe/p_defines.h"
|
#include "pipe/p_defines.h"
|
||||||
@@ -62,10 +63,10 @@ st_translate_mesa_program(
|
|||||||
const ubyte outputSemanticName[],
|
const ubyte outputSemanticName[],
|
||||||
const ubyte outputSemanticIndex[]);
|
const ubyte outputSemanticIndex[]);
|
||||||
|
|
||||||
unsigned
|
enum tgsi_texture_type
|
||||||
st_translate_texture_target(GLuint textarget, GLboolean shadow);
|
st_translate_texture_target(gl_texture_index textarget, GLboolean shadow);
|
||||||
|
|
||||||
unsigned
|
enum tgsi_return_type
|
||||||
st_translate_texture_type(enum glsl_base_type type);
|
st_translate_texture_type(enum glsl_base_type type);
|
||||||
|
|
||||||
#if defined __cplusplus
|
#if defined __cplusplus
|
||||||
|
Reference in New Issue
Block a user