diff options
author | marha <marha@users.sourceforge.net> | 2011-08-01 09:13:47 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-08-01 09:13:47 +0200 |
commit | 6730a76afc49a80573b2e582085086c2956fe96d (patch) | |
tree | 1478eb4f497670caeb2af983eadc4aee20f48b68 /mesalib/src/glsl/ast_function.cpp | |
parent | a69cff9373daf6b7afc97fb975ceb4fc0d6864f7 (diff) | |
parent | f87ad0cdc41af88f134475ab50b0d604004d9cdc (diff) | |
download | vcxsrv-6730a76afc49a80573b2e582085086c2956fe96d.tar.gz vcxsrv-6730a76afc49a80573b2e582085086c2956fe96d.tar.bz2 vcxsrv-6730a76afc49a80573b2e582085086c2956fe96d.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
mesalib/src/glsl/ast_function.cpp
mesalib/src/glsl/glsl_types.cpp
mesalib/src/mesa/main/teximage.c
mesalib/src/mesa/main/texparam.c
xorg-server/config/udev.c
xorg-server/configure.ac
xorg-server/dix/main.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/src/kdrive.c
xorg-server/hw/xfree86/common/xf86Config.c
xorg-server/hw/xfree86/common/xf86Configure.c
xorg-server/hw/xfree86/common/xf86Helper.c
xorg-server/hw/xfree86/common/xf86Init.c
xorg-server/hw/xfree86/common/xf86Option.c
xorg-server/hw/xfree86/common/xf86Priv.h
xorg-server/hw/xfree86/common/xf86Xinput.c
xorg-server/hw/xnest/Init.c
xorg-server/hw/xquartz/darwin.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/xlaunch/config.cc
xorg-server/hw/xwin/xlaunch/config.h
xorg-server/hw/xwin/xlaunch/main.cc
xorg-server/hw/xwin/xlaunch/resources/dialog.rc
xorg-server/hw/xwin/xlaunch/resources/resources.h
xorg-server/hw/xwin/xlaunch/resources/resources.rc
xorg-server/hw/xwin/xlaunch/resources/strings.rc
xorg-server/hw/xwin/xlaunch/window/util.cc
xorg-server/hw/xwin/xlaunch/window/util.h
xorg-server/hw/xwin/xlaunch/window/wizard.h
xorg-server/include/os.h
xorg-server/os/log.c
xorg-server/xkeyboard-config/symbols/lv
Diffstat (limited to 'mesalib/src/glsl/ast_function.cpp')
-rw-r--r-- | mesalib/src/glsl/ast_function.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mesalib/src/glsl/ast_function.cpp b/mesalib/src/glsl/ast_function.cpp index fad069135..463db9499 100644 --- a/mesalib/src/glsl/ast_function.cpp +++ b/mesalib/src/glsl/ast_function.cpp @@ -442,13 +442,21 @@ process_array_constructor(exec_list *instructions, ir_rvalue *ir = (ir_rvalue *) n;
ir_rvalue *result = ir;
- /* Apply implicit conversions (not the scalar constructor rules!) */
+ /* Apply implicit conversions (not the scalar constructor rules!). See
+ * the spec quote above. */
if (constructor_type->element_type()->is_float()) {
const glsl_type *desired_type =
glsl_type::get_instance(GLSL_TYPE_FLOAT,
ir->type->vector_elements,
ir->type->matrix_columns);
- result = convert_component(ir, desired_type);
+ if (result->type->can_implicitly_convert_to(desired_type)) {
+ /* Even though convert_component() implements the constructor
+ * conversion rules (not the implicit conversion rules), its safe
+ * to use it here because we already checked that the implicit
+ * conversion is legal.
+ */
+ result = convert_component(ir, desired_type);
+ }
}
if (result->type != constructor_type->element_type()) {
|