diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 17 | ||||
-rwxr-xr-x | src/mesa/drivers/dri/intel/intel_extensions.c | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 2634b0862a0..12745f23102 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -445,11 +445,18 @@ fs_visitor::visit(ir_expression *ir) emit_math(SHADER_OPCODE_RSQ, this->result, op[0]); break; + case ir_unop_bitcast_i2f: + case ir_unop_bitcast_u2f: + op[0].type = BRW_REGISTER_TYPE_F; + this->result = op[0]; + break; case ir_unop_i2u: + case ir_unop_bitcast_f2u: op[0].type = BRW_REGISTER_TYPE_UD; this->result = op[0]; break; case ir_unop_u2i: + case ir_unop_bitcast_f2i: op[0].type = BRW_REGISTER_TYPE_D; this->result = op[0]; break; diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index cfffef44605..bde84202df5 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -1254,6 +1254,23 @@ vec4_visitor::visit(ir_expression *ir) case ir_unop_rsq: emit_math(SHADER_OPCODE_RSQ, result_dst, op[0]); break; + + case ir_unop_bitcast_i2f: + case ir_unop_bitcast_u2f: + this->result = op[0]; + this->result.type = BRW_REGISTER_TYPE_F; + break; + + case ir_unop_bitcast_f2i: + this->result = op[0]; + this->result.type = BRW_REGISTER_TYPE_D; + break; + + case ir_unop_bitcast_f2u: + this->result = op[0]; + this->result.type = BRW_REGISTER_TYPE_UD; + break; + case ir_unop_i2f: case ir_unop_i2u: case ir_unop_u2i: diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index 6c29aff6523..29da36ce7bb 100755 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -122,6 +122,7 @@ intelInitExtensions(struct gl_context *ctx) ctx->Extensions.ARB_occlusion_query = true; ctx->Extensions.ARB_point_sprite = true; ctx->Extensions.ARB_seamless_cube_map = true; + ctx->Extensions.ARB_shader_bit_encoding = true; ctx->Extensions.ARB_shader_texture_lod = true; #ifdef TEXTURE_FLOAT_ENABLED ctx->Extensions.ARB_texture_float = true; |