Skip to content
GitLab
Explore
Sign in
Register
Commits on Source (133)
bfb5bdaa
docs: add sha256 checksums for 18.3.4
Feb 18, 2019
41d78f9e
intel/fs: Bail in optimize_extract_to_float if we have modifiers
Mar 06, 2019
242ef8d2
radv: write the alpha channel of MRT0 when alpha coverage is enabled
Mar 06, 2019
d0f7e6f2
radv: fix writing the alpha channel of MRT0 when alpha coverage is enabled
Mar 06, 2019
0633c4ef
radv: bitcast 16-bit outputs to integers
Mar 06, 2019
c1fa0ec0
radv: ensure export arguments are always float
Mar 06, 2019
444d1ccc
radeonsi: add driconf option radeonsi_enable_nir
Mar 06, 2019
d46291c0
radeonsi: always enable NIR for Civilization 6 to fix corruption
Mar 06, 2019
c7aeed29
driconf: add Civ6Sub executable for Civilization 6
Mar 06, 2019
9b483d94
radv: Sync ETC2 whitelisted devices.
Mar 06, 2019
036b326e
wayland/egl: Ensure EGL surface is resized on DRI update_buffers()
Mar 06, 2019
20e369fa
i965: re-emit index buffer state on a reset option change.
Mar 06, 2019
910d7fe3
compiler/types: Add a contains_64bit helper
Mar 06, 2019
8bc0c75e
nir/xfb: Properly align 64-bit values
Mar 06, 2019
6fb3cec8
nir/xfb: Work in terms of components rather than slots
Mar 06, 2019
3481eafb
nir/xfb: Handle compact arrays in gather_xfb_info
Mar 06, 2019
d6a8802a
intel/fs: Implement extended strides greater than 4 for IR source regions.
Mar 06, 2019
bd00bd7c
intel: fix urb size for CFL GT1
Mar 06, 2019
e8d3c845
radv: Fix float16 interpolation set up.
Mar 06, 2019
d9d90ac6
radv: Allow interpolation on non-float types.
Mar 06, 2019
da4db48c
genxml: add missing field values for 3DSTATE_SF
Mar 06, 2019
e5bc47ca
anv: advertise 8 subpixel precision bits
Mar 06, 2019
483f947a
tgsi: don't set tgsi_info::uses_bindless_images for constbufs and hw atomics
Mar 06, 2019
09542cd0
swr/rast: bypass size limit for non-sampled textures
Mar 06, 2019
2f67fa56
meson: ensure that xmlpool_options.h is generated for gallium targets that need it
Mar 06, 2019
5ed1b332
dri: meson: do not prefix user provided dri-drivers-path
Mar 06, 2019
1f09d08a
d3d: meson: do not prefix user provided d3d-drivers-path
Mar 06, 2019
3c4cc070
radv: fix clearing attachments in secondary command buffers
Mar 06, 2019
b72e2f86
nir: initialize value in copy_prop_vars_block
Mar 06, 2019
0a261496
radv: fix out-of-bounds access when copying descriptors BO list
Mar 06, 2019
b79bac03
radv: don't copy buffer descriptors list for samplers
Mar 06, 2019
eb9912b5
meson: egl: correctly manage loader/xmlconfig
Mar 06, 2019
6765cee9
i965: fixed clamping in set_scissor_bits when the y is flipped
Mar 06, 2019
5a7cad3d
radv: Interpolate less aggressively.
Mar 06, 2019
24db6eec
i965: Fix allow_higher_compat_version workaround limited by OpenGL 3.0
Mar 06, 2019
8919ea06
glsl: fix shader cache for packed param list
Mar 06, 2019
7c3c0823
glx: fix shared memory leak in X11
Mar 06, 2019
5e81044f
libgl1-mesa-dri: Remove /etc/drirc which isn't installed anymore. (Closes: #920241)
Mar 12, 2019
0d0d6f43
glsl: TCS outputs can not be transform feedback candidates on GLES
Mar 14, 2019
7ea63096
glsl: fix recording of variables for XFB in TCS shaders
Mar 14, 2019
9814e187
android: anv: fix generated files depedencies (v2)
Mar 14, 2019
a61b6345
android: anv: fix libexpat shared dependency
Mar 14, 2019
b1ef1c7a
st/nine: Ignore window size if error
Mar 14, 2019
dd2554c8
st/nine: Ignore multisample quality level if no ms
Mar 14, 2019
85b165e9
anv: Count surfaces for non-YCbCr images in GetDescriptorSetLayoutSupport
Mar 14, 2019
8d21a1f8
spirv: OpImageQueryLod requires a sampler
Mar 14, 2019
c590c067
anv: retain the is_array state in create_plane_tex_instr_implicit
Mar 14, 2019
238c8c04
egl: fix libdrm-less builds
Mar 14, 2019
079c124b
radv: properly align the fence and EOP bug VA on GFX9
Mar 14, 2019
4b372644
spirv: Pull offset/stride from the pointer for OpArrayLength
Mar 14, 2019
89f35476
cherry-ignore: add 19.0 only anv/push buffer nominations
Mar 14, 2019
4f7c54ec
radeonsi: compile clear and copy buffer compute shaders on demand
Mar 14, 2019
8448ece4
intel/fs: nir_op_extract_i8 extracts a byte, not a word
Mar 14, 2019
b638eb5d
intel/fs: Fix extract_u8 of an odd byte from a 64-bit integer
Mar 14, 2019
5429dd00
cherry-ignore: add gitlab-ci fixup commit
Mar 14, 2019
81107c96
anv: destroy descriptor sets when pool gets destroyed
Mar 14, 2019
dfcae38d
cherry-ignore: ignore glsl_types memory cleanup patch
Mar 14, 2019
d8885782
anv: destroy descriptor sets when pool gets reset
Mar 14, 2019
ce57ea90
radv: fix pointSizeRange limits
Mar 14, 2019
dea94622
scons: Workaround failures with MSVC when using SCons 3.0.[2-4].
Mar 14, 2019
13b23099
scons: Compatibility with Scons development version string
Mar 14, 2019
b6cf9b73
cherry-ignore: add explicit 19.0 performance optimisations
Mar 14, 2019
612ddf21
glsl/list: Add a list variant of insert_after
Mar 14, 2019
92ad8814
glsl/lower_vector_derefs: Don't use a temporary for TCS outputs
Mar 14, 2019
a1c6be2a
intel/fs: Fix opt_peephole_csel to not throw away saturates.
Mar 14, 2019
4f30487a
glsl/linker: Fix unmatched TCS outputs being reduced to local variable
Mar 14, 2019
bdd5f24c
egl/dri: Avoid out of bounds array access
Mar 15, 2019
60fb5f4b
radv: always initialize HTILE when the src layout is UNDEFINED
Mar 15, 2019
2a1e743e
Update version to 18.3.5
Mar 18, 2019
022708cb
docs: add release notes for 18.3.5
Mar 18, 2019
ec770b43
docs: add sha256 checksums for 18.3.5
Mar 18, 2019
780051c5
gbp: Configure upstream version pattern
Mar 21, 2019
6f76ecff
anv/pass: Flag the need for a RT flush for resolve attachments
Mar 25, 2019
2c163bfe
i965: Disable ARB_fragment_shader_interlock for platforms prior to GEN9
Mar 25, 2019
f29b2296
mesa: properly report the length of truncated log messages
Mar 25, 2019
8e909034
vulkan/util: meson build - add wayland client include
Mar 25, 2019
f9160aa9
radv: Use correct image view comparison for fast clears.
Mar 25, 2019
db517e33
glsl: correctly validate component layout qualifier for dvec{3,4}
Mar 25, 2019
479b1104
glsl/linker: don't fail non static used inputs without matching outputs
Mar 25, 2019
208fd66d
glsl/linker: simplify xfb_offset vs xfb_stride overflow check
Mar 25, 2019
0f976b92
Revert "glsl: relax input->output validation for SSO programs"
Mar 25, 2019
96a01a5e
radv: fix binding transform feedback buffers
Mar 25, 2019
76719ecb
softpipe: fix texture view crashes
Mar 25, 2019
e9ff2b52
bin/install_megadrivers.py: Correctly handle DESTDIR=''
Mar 25, 2019
f3617aa9
mesa: Fix GL_NUM_DEVICE_UUIDS_EXT
Mar 25, 2019
eac9b871
glsl: Cross validate variable's invariance by explicit invariance only
Mar 25, 2019
643754ce
radv: Fix driverUUID
Mar 25, 2019
d29dca6d
st/glsl_to_nir: fix incorrect arrary access
Mar 25, 2019
7c271fd4
anv/radv: release memory allocated by glsl types during spirv_to_nir
Mar 26, 2019
cdd3eac6
ac/nir: Return frag_coord as integer.
Mar 26, 2019
600f314d
Revert "anv/radv: release memory allocated by glsl types during spirv_to_nir"
Apr 05, 2019
a5fc53b7
radeon/vcn: add H.264 constrained baseline support
Apr 05, 2019
9434f6b5
radv: do not always initialize HTILE in compressed state
Apr 05, 2019
14c82872
meson: strip rpath from megadrivers
Apr 05, 2019
319e0c17
radeon/vcn/vp9: search the render target from the whole list
Apr 05, 2019
12ab2d00
radeonsi: fix assertion failure by using the correct type
Apr 05, 2019
2b50357c
dri3: Return the current swap interval from glXGetSwapIntervalMESA().
Apr 05, 2019
11049bcf
Update version to 18.3.6
Apr 05, 2019
296e21ad
Merge tag 'mesa-18.3.6' into debian-unstable
Apr 06, 2019
c6f4a8ac
Bump version
Apr 06, 2019
Show whitespace changes
Inline
Side-by-side
VERSION
View file @
7b116821
19.0.
2
19.0.
3
bin/install_megadrivers.py
View file @
7b116821
...
...
@@ -70,7 +70,14 @@ def main():
name
,
ext
=
os
.
path
.
splitext
(
name
)
finally
:
os
.
chdir
(
ret
)
# Remove meson-created master .so and symlinks
os
.
unlink
(
master
)
name
,
ext
=
os
.
path
.
splitext
(
master
)
while
ext
!=
'
.so
'
:
if
os
.
path
.
lexists
(
name
):
os
.
unlink
(
name
)
name
,
ext
=
os
.
path
.
splitext
(
name
)
if
__name__
==
'
__main__
'
:
...
...
debian/changelog
View file @
7b116821
mesa (19.0.3-1) experimental; urgency=medium
* New upstream release.
* libgl1-mesa-dri.maintscript: Bump version so that drirc gets removed
for those who already upgraded to 19.0.
-- Timo Aaltonen <tjaalton@debian.org> Wed, 08 May 2019 13:46:47 +0300
mesa (19.0.2-1) experimental; urgency=medium
* New upstream release.
...
...
@@ -49,6 +57,20 @@ mesa (19.0.0~rc2-1) experimental; urgency=medium
-- Timo Aaltonen <tjaalton@debian.org> Fri, 08 Feb 2019 10:44:48 +0200
mesa (18.3.6-1) unstable; urgency=medium
[ Timo Aaltonen ]
* libgl1-mesa-dri: Remove /etc/drirc which isn't installed anymore.
(Closes: #920241)
[ Andreas Boll ]
* New upstream release.
- wayland/egl: Ensure EGL surface is resized on DRI
update_buffers(). Fixes a crash with xwayland (Closes: #922346).
* Rebase patches/fix-hurd-ftbfs.diff.
-- Andreas Boll <aboll@debian.org> Sat, 06 Apr 2019 20:58:43 +0200
mesa (18.3.4-2) unstable; urgency=medium
* Cherry-pick f6556ec7d12 (dri: meson: do not prefix user provided dri-
...
...
debian/gbp.conf
View file @
7b116821
[
DEFAULT
]
debian
-
branch
=
debian
-
unstable
upstream
-
branch
=
upstream
-
unstable
upstream
-
tag
=
mesa
-%(
version
)
s
debian/libgl1-mesa-dri.maintscript
0 → 100644
View file @
7b116821
rm_conffile /etc/drirc 19.0.3-1~
docs/relnotes/19.0.2.html
View file @
7b116821
...
...
@@ -31,7 +31,8 @@ Compatibility contexts may report a lower version depending on each driver.
<h2>
SHA256 checksums
</h2>
<pre>
TBD
SHA256: eb972fc11d4e1261d34ec0b91a701f158d4870c0428fb108353ae7eab64b1118 mesa-19.0.2.tar.gz
SHA256: 1a2edc3ce56906a676c91e6851298db45903df1f5cb9827395a922c1452db802 mesa-19.0.2.tar.xz
</pre>
...
...
docs/relnotes/19.0.3.html
0 → 100644
View file @
7b116821
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
lang=
"en"
>
<head>
<meta
http-equiv=
"content-type"
content=
"text/html; charset=utf-8"
>
<title>
Mesa Release Notes
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../mesa.css"
>
</head>
<body>
<div
class=
"header"
>
<h1>
The Mesa 3D Graphics Library
</h1>
</div>
<iframe
src=
"../contents.html"
></iframe>
<div
class=
"content"
>
<h1>
Mesa 19.0.3 Release Notes / April 24, 2019
</h1>
<p>
Mesa 19.0.3 is a bug fix release which fixes bugs found since the l9.0.2 release.
</p>
<p>
Mesa 19.0.3 implements the OpenGL 4.5 API, but the version reported by
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
Some drivers don't support all the features required in OpenGL 4.5. OpenGL
4.5 is
<strong>
only
</strong>
available if requested at context creation.
Compatibility contexts may report a lower version depending on each driver.
</p>
<h2>
SHA256 checksums
</h2>
<pre>
TBD
</pre>
<h2>
New features
</h2>
<p>
N/A
</p>
<h2>
Bug fixes
</h2>
<ul>
<li><a
href=
"https://bugs.freedesktop.org/show_bug.cgi?id=108879"
>
Bug 108879
</a>
- [CIK] [regression] All opencl apps hangs indefinitely in si_create_context
</li>
<li><a
href=
"https://bugs.freedesktop.org/show_bug.cgi?id=110201"
>
Bug 110201
</a>
- [ivb] mesa 19.0.0 breaks rendering in kitty
</li>
<li><a
href=
"https://bugs.freedesktop.org/show_bug.cgi?id=110356"
>
Bug 110356
</a>
- install_megadrivers.py creates new dangling symlink [bisected]
</li>
<li><a
href=
"https://bugs.freedesktop.org/show_bug.cgi?id=110441"
>
Bug 110441
</a>
- [llvmpipe] complex-loop-analysis-bug regression
</li>
</ul>
<h2>
Changes
</h2>
<p>
Andres Gomez (1):
</p>
<ul>
<li>
glsl/linker: location aliasing requires types to have the same width
</li>
</ul>
<p>
Bas Nieuwenhuizen (1):
</p>
<ul>
<li>
ac: Move has_local_buffers disable to radeonsi.
</li>
</ul>
<p>
Chia-I Wu (1):
</p>
<ul>
<li>
virgl: fix fence fd version check
</li>
</ul>
<p>
Danylo Piliaiev (1):
</p>
<ul>
<li>
intel/compiler: Do not reswizzle dst if instruction writes to flag register
</li>
</ul>
<p>
Dylan Baker (2):
</p>
<ul>
<li>
docs: Add sha256 sums for 19.0.2
</li>
<li>
Bump version for 19.0.3
</li>
</ul>
<p>
Eric Anholt (1):
</p>
<ul>
<li>
nir: Fix deref offset calculation for structs.
</li>
</ul>
<p>
Eric Engestrom (1):
</p>
<ul>
<li>
meson: remove meson-created megadrivers symlinks
</li>
</ul>
<p>
Jason Ekstrand (2):
</p>
<ul>
<li>
anv/pipeline: Fix MEDIA_VFE_STATE::PerThreadScratchSpace on gen7
</li>
<li>
anv: Add a #define for the max binding table size
</li>
</ul>
<p>
Juan A. Suarez Romero (1):
</p>
<ul>
<li>
meson: Add dependency on genxml to anvil genfiles
</li>
</ul>
<p>
Kenneth Graunke (2):
</p>
<ul>
<li>
glsl: Set location on structure-split sampler uniform variables
</li>
<li>
Revert "glsl: Set location on structure-split sampler uniform variables"
</li>
</ul>
<p>
Lionel Landwerlin (2):
</p>
<ul>
<li>
anv: fix uninitialized pthread cond clock domain
</li>
<li>
intel/devinfo: fix missing num_thread_per_eu on ICL
</li>
</ul>
<p>
Lubomir Rintel (2):
</p>
<ul>
<li>
gallivm: guess CPU features also on ARM
</li>
<li>
gallivm: disable NEON instructions if they are not supported
</li>
</ul>
<p>
Marek Olšák (1):
</p>
<ul>
<li>
radeonsi: use CP DMA for the null const buffer clear on CIK
</li>
</ul>
<p>
Rhys Perry (1):
</p>
<ul>
<li>
nir,ac/nir: fix cube_face_coord
</li>
</ul>
<p>
Roland Scheidegger (1):
</p>
<ul>
<li>
gallivm: fix bogus assert in get_indirect_index
</li>
</ul>
<p>
Samuel Pitoiset (2):
</p>
<ul>
<li>
ac/nir: only use the new raw/struct image atomic intrinsics with LLVM 9+
</li>
<li>
radv: do not load vertex attributes that are not provided by the pipeline
</li>
</ul>
</div>
</body>
</html>
src/amd/common/ac_gpu_info.c
View file @
7b116821
...
...
@@ -367,9 +367,7 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev,
info
->
has_syncobj_wait_for_submit
=
info
->
has_syncobj
&&
info
->
drm_minor
>=
20
;
info
->
has_fence_to_handle
=
info
->
has_syncobj
&&
info
->
drm_minor
>=
21
;
info
->
has_ctx_priority
=
info
->
drm_minor
>=
22
;
/* TODO: Enable this once the kernel handles it efficiently. */
info
->
has_local_buffers
=
info
->
drm_minor
>=
20
&&
!
info
->
has_dedicated_vram
;
info
->
has_local_buffers
=
info
->
drm_minor
>=
20
;
info
->
kernel_flushes_hdp_before_ib
=
true
;
info
->
htile_cmask_support_1d_tiling
=
true
;
info
->
si_TA_CS_BC_BASE_ADDR_allowed
=
true
;
...
...
src/amd/common/ac_nir_to_llvm.c
View file @
7b116821
...
...
@@ -1019,10 +1019,17 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
LLVMValueRef
in
[
3
];
for
(
unsigned
chan
=
0
;
chan
<
3
;
chan
++
)
in
[
chan
]
=
ac_llvm_extract_elem
(
&
ctx
->
ac
,
src
[
0
],
chan
);
results
[
0
]
=
ac_build_intrinsic
(
&
ctx
->
ac
,
"llvm.amdgcn.cube
t
c"
,
results
[
0
]
=
ac_build_intrinsic
(
&
ctx
->
ac
,
"llvm.amdgcn.cube
s
c"
,
ctx
->
ac
.
f32
,
in
,
3
,
AC_FUNC_ATTR_READNONE
);
results
[
1
]
=
ac_build_intrinsic
(
&
ctx
->
ac
,
"llvm.amdgcn.cube
s
c"
,
results
[
1
]
=
ac_build_intrinsic
(
&
ctx
->
ac
,
"llvm.amdgcn.cube
t
c"
,
ctx
->
ac
.
f32
,
in
,
3
,
AC_FUNC_ATTR_READNONE
);
LLVMValueRef
ma
=
ac_build_intrinsic
(
&
ctx
->
ac
,
"llvm.amdgcn.cubema"
,
ctx
->
ac
.
f32
,
in
,
3
,
AC_FUNC_ATTR_READNONE
);
results
[
0
]
=
ac_build_fdiv
(
&
ctx
->
ac
,
results
[
0
],
ma
);
results
[
1
]
=
ac_build_fdiv
(
&
ctx
->
ac
,
results
[
1
],
ma
);
LLVMValueRef
offset
=
LLVMConstReal
(
ctx
->
ac
.
f32
,
0
.
5
);
results
[
0
]
=
LLVMBuildFAdd
(
ctx
->
ac
.
builder
,
results
[
0
],
offset
,
""
);
results
[
1
]
=
LLVMBuildFAdd
(
ctx
->
ac
.
builder
,
results
[
1
],
offset
,
""
);
result
=
ac_build_gather_values
(
&
ctx
->
ac
,
results
,
2
);
break
;
}
...
...
@@ -2532,7 +2539,10 @@ static LLVMValueRef visit_image_atomic(struct ac_nir_context *ctx,
params
[
param_count
++
]
=
LLVMBuildExtractElement
(
ctx
->
ac
.
builder
,
get_src
(
ctx
,
instr
->
src
[
1
]),
ctx
->
ac
.
i32_0
,
""
);
/* vindex */
params
[
param_count
++
]
=
ctx
->
ac
.
i32_0
;
/* voffset */
if
(
HAVE_LLVM
>=
0x800
)
{
if
(
HAVE_LLVM
>=
0x900
)
{
/* XXX: The new raw/struct atomic intrinsics are buggy
* with LLVM 8, see r358579.
*/
params
[
param_count
++
]
=
ctx
->
ac
.
i32_0
;
/* soffset */
params
[
param_count
++
]
=
ctx
->
ac
.
i32_0
;
/* slc */
...
...
src/amd/vulkan/radv_nir_to_llvm.c
View file @
7b116821
...
...
@@ -2027,10 +2027,32 @@ handle_vs_input_decl(struct radv_shader_context *ctx,
t_list
=
ac_build_load_to_sgpr
(
&
ctx
->
ac
,
t_list_ptr
,
t_offset
);
if
(
ctx
->
options
->
key
.
vs
.
vertex_attribute_provided
&
(
1u
<<
attrib_index
))
{
input
=
ac_build_buffer_load_format
(
&
ctx
->
ac
,
t_list
,
buffer_index
,
ctx
->
ac
.
i32_0
,
num_channels
,
false
,
true
);
}
else
{
/* Per the Vulkan spec, it's invalid to consume vertex
* attributes that are not provided by the pipeline but
* some (invalid) apps appear to do that. Fill the
* input array with (eg. (0, 0, 0, 1)) to workaround
* the problem and to avoid possible GPU hangs.
*/
LLVMValueRef
chan
[
4
];
/* The input_usage mask might be 0 if input variables
* are not removed by the compiler.
*/
num_channels
=
CLAMP
(
num_channels
,
1
,
4
);
for
(
unsigned
i
=
0
;
i
<
num_channels
;
i
++
)
{
chan
[
i
]
=
i
==
3
?
ctx
->
ac
.
f32_1
:
ctx
->
ac
.
f32_0
;
chan
[
i
]
=
ac_to_float
(
&
ctx
->
ac
,
chan
[
i
]);
}
input
=
ac_build_gather_values
(
&
ctx
->
ac
,
chan
,
num_channels
);
}
input
=
ac_build_expand_to_vec4
(
&
ctx
->
ac
,
input
,
num_channels
);
...
...
src/amd/vulkan/radv_pipeline.c
View file @
7b116821
...
...
@@ -1922,6 +1922,8 @@ radv_generate_graphics_pipeline_key(struct radv_pipeline *pipeline,
}
key
.
vertex_alpha_adjust
|=
adjust
<<
(
2
*
location
);
}
key
.
vertex_attribute_provided
|=
1
<<
location
;
}
if
(
pCreateInfo
->
pTessellationState
)
...
...
@@ -1950,6 +1952,7 @@ radv_fill_shader_keys(struct radv_shader_variant_key *keys,
{
keys
[
MESA_SHADER_VERTEX
].
vs
.
instance_rate_inputs
=
key
->
instance_rate_inputs
;
keys
[
MESA_SHADER_VERTEX
].
vs
.
alpha_adjust
=
key
->
vertex_alpha_adjust
;
keys
[
MESA_SHADER_VERTEX
].
vs
.
vertex_attribute_provided
=
key
->
vertex_attribute_provided
;
for
(
unsigned
i
=
0
;
i
<
MAX_VERTEX_ATTRIBS
;
++
i
)
keys
[
MESA_SHADER_VERTEX
].
vs
.
instance_rate_divisors
[
i
]
=
key
->
instance_rate_divisors
[
i
];
...
...
src/amd/vulkan/radv_private.h
View file @
7b116821
...
...
@@ -365,6 +365,7 @@ struct radv_pipeline_cache {
struct
radv_pipeline_key
{
uint32_t
instance_rate_inputs
;
uint32_t
instance_rate_divisors
[
MAX_VERTEX_ATTRIBS
];
uint32_t
vertex_attribute_provided
;
uint64_t
vertex_alpha_adjust
;
unsigned
tess_input_vertices
;
uint32_t
col_format
;
...
...
src/amd/vulkan/radv_shader.h
View file @
7b116821
...
...
@@ -66,6 +66,9 @@ struct radv_vs_variant_key {
uint32_t
instance_rate_inputs
;
uint32_t
instance_rate_divisors
[
MAX_VERTEX_ATTRIBS
];
/* Mask of vertex attributes that are provided by the pipeline. */
uint32_t
vertex_attribute_provided
;
/* For 2_10_10_10 formats the alpha is handled as unsigned by pre-vega HW.
* so we may need to fix it up. */
uint64_t
alpha_adjust
;
...
...
src/compiler/glsl/gl_nir_lower_samplers_as_deref.c
View file @
7b116821
...
...
@@ -167,6 +167,14 @@ lower_deref(nir_builder *b, struct lower_samplers_as_deref_state *state,
}
else
{
var
=
nir_variable_create
(
state
->
shader
,
nir_var_uniform
,
type
,
name
);
var
->
data
.
binding
=
binding
;
/* Don't set var->data.location. The old structure location could be
* used to index into gl_uniform_storage, assuming the full structure
* was walked in order. With the new split variables, this invariant
* no longer holds and there's no meaningful way to start from a base
* location and access a particular array element. Just leave it 0.
*/
_mesa_hash_table_insert_pre_hashed
(
state
->
remap_table
,
hash
,
name
,
var
);
}
...
...
src/compiler/glsl/link_varyings.cpp
View file @
7b116821
...
...
@@ -424,28 +424,14 @@ compute_variable_location_slot(ir_variable *var, gl_shader_stage stage)
struct
explicit_location_info
{
ir_variable
*
var
;
unsigned
numerical_type
;
bool
base_type_is_integer
;
unsigned
base_type_bit_size
;
unsigned
interpolation
;
bool
centroid
;
bool
sample
;
bool
patch
;
};
static
inline
unsigned
get_numerical_type
(
const
glsl_type
*
type
)
{
/* From the OpenGL 4.6 spec, section 4.4.1 Input Layout Qualifiers, Page 68,
* (Location aliasing):
*
* "Further, when location aliasing, the aliases sharing the location
* must have the same underlying numerical type (floating-point or
* integer)
*/
if
(
type
->
is_float
()
||
type
->
is_double
())
return
GLSL_TYPE_FLOAT
;
return
GLSL_TYPE_INT
;
}
static
bool
check_location_aliasing
(
struct
explicit_location_info
explicit_locations
[][
4
],
ir_variable
*
var
,
...
...
@@ -461,14 +447,23 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
gl_shader_stage
stage
)
{
unsigned
last_comp
;
if
(
type
->
without_array
()
->
is_record
())
{
/* The component qualifier can't be used on structs so just treat
* all component slots as used.
unsigned
base_type_bit_size
;
const
glsl_type
*
type_without_array
=
type
->
without_array
();
const
bool
base_type_is_integer
=
glsl_base_type_is_integer
(
type_without_array
->
base_type
);
const
bool
is_struct
=
type_without_array
->
is_record
();
if
(
is_struct
)
{
/* structs don't have a defined underlying base type so just treat all
* component slots as used and set the bit size to 0. If there is
* location aliasing, we'll fail anyway later.
*/
last_comp
=
4
;
base_type_bit_size
=
0
;
}
else
{
unsigned
dmul
=
type
->
without_array
()
->
is_64bit
()
?
2
:
1
;
last_comp
=
component
+
type
->
without_array
()
->
vector_elements
*
dmul
;
unsigned
dmul
=
type_without_array
->
is_64bit
()
?
2
:
1
;
last_comp
=
component
+
type_without_array
->
vector_elements
*
dmul
;
base_type_bit_size
=
glsl_base_type_get_bit_size
(
type_without_array
->
base_type
);
}
while
(
location
<
location_limit
)
{
...
...
@@ -478,8 +473,22 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
&
explicit_locations
[
location
][
comp
];
if
(
info
->
var
)
{
/* Component aliasing is not alloed */
if
(
comp
>=
component
&&
comp
<
last_comp
)
{
if
(
info
->
var
->
type
->
without_array
()
->
is_record
()
||
is_struct
)
{
/* Structs cannot share location since they are incompatible
* with any other underlying numerical type.
*/
linker_error
(
prog
,
"%s shader has multiple %sputs sharing the "
"same location that don't have the same "
"underlying numerical type. Struct variable '%s', "
"location %u
\n
"
,
_mesa_shader_stage_to_string
(
stage
),
var
->
data
.
mode
==
ir_var_shader_in
?
"in"
:
"out"
,
is_struct
?
var
->
name
:
info
->
var
->
name
,
location
);
return
false
;
}
else
if
(
comp
>=
component
&&
comp
<
last_comp
)
{
/* Component aliasing is not allowed */
linker_error
(
prog
,
"%s shader has multiple %sputs explicitly "
"assigned to location %d and component %d
\n
"
,
...
...
@@ -488,27 +497,52 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
location
,
comp
);
return
false
;
}
else
{
/* For all other used components we need to have matching
* types, interpolation and auxiliary storage
/* From the OpenGL 4.60.5 spec, section 4.4.1 Input Layout
* Qualifiers, Page 67, (Location aliasing):
*
* " Further, when location aliasing, the aliases sharing the
* location must have the same underlying numerical type
* and bit width (floating-point or integer, 32-bit versus
* 64-bit, etc.) and the same auxiliary storage and
* interpolation qualification."
*/
/* If the underlying numerical type isn't integer, implicitly
* it will be float or else we would have failed by now.
*/
if
(
info
->
numerical_type
!=
get_numerical_type
(
type
->
without_array
()))
{
if
(
info
->
base_type_is_integer
!=
base_type_is_integer
)
{
linker_error
(
prog
,
"Varyings sharing the same location must "
"have the same underlying numerical type. "
"Location %u component %u
\n
"
,
location
,
comp
);
"%s shader has multiple %sputs sharing the "
"same location that don't have the same "
"underlying numerical type. Location %u "
"component %u.
\n
"
,
_mesa_shader_stage_to_string
(
stage
),
var
->
data
.
mode
==
ir_var_shader_in
?
"in"
:
"out"
,
location
,
comp
);
return
false
;
}
if
(
info
->
base_type_bit_size
!=
base_type_bit_size
)
{
linker_error
(
prog
,
"%s shader has multiple %sputs sharing the "
"same location that don't have the same "
"underlying numerical bit size. Location %u "
"component %u.
\n
"
,
_mesa_shader_stage_to_string
(
stage
),
var
->
data
.
mode
==
ir_var_shader_in
?
"in"
:
"out"
,
location
,
comp
);
return
false
;
}
if
(
info
->
interpolation
!=
interpolation
)
{
linker_error
(
prog
,
"%s shader has multiple %sputs at explicit "
"location %u with different interpolation "
"settings
\n
"
,
"%s shader has multiple %sputs sharing the "
"same location that don't have the same "
"interpolation qualification. Location %u "
"component %u.
\n
"
,
_mesa_shader_stage_to_string
(
stage
),
var
->
data
.
mode
==
ir_var_shader_in
?
"in"
:
"out"
,
location
);
"in"
:
"out"
,
location
,
comp
);
return
false
;
}
...
...
@@ -516,17 +550,20 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
info
->
sample
!=
sample
||
info
->
patch
!=
patch
)
{
linker_error
(
prog
,
"%s shader has multiple %sputs at explicit "
"location %u with different aux storage
\n
"
,
"%s shader has multiple %sputs sharing the "
"same location that don't have the same "
"auxiliary storage qualification. Location %u "
"component %u.
\n
"
,
_mesa_shader_stage_to_string
(
stage
),
var
->
data
.
mode
==
ir_var_shader_in
?
"in"
:
"out"
,
location
);
"in"
:
"out"
,
location
,
comp
);
return
false
;
}
}
}
else
if
(
comp
>=
component
&&
comp
<
last_comp
)
{
info
->
var
=
var
;
info
->
numerical_type
=
get_numerical_type
(
type
->
without_array
());
info
->
base_type_is_integer
=
base_type_is_integer
;
info
->
base_type_bit_size
=
base_type_bit_size
;
info
->
interpolation
=
interpolation
;
info
->
centroid
=
centroid
;
info
->
sample
=
sample
;
...
...
src/compiler/glsl_types.h
View file @
7b116821
...
...
@@ -31,6 +31,7 @@
#include
"shader_enums.h"
#include
"blob.h"
#include
"c11/threads.h"
#include
"util/macros.h"
#ifdef __cplusplus
#include
"main/config.h"
...
...
@@ -114,6 +115,42 @@ static inline bool glsl_base_type_is_integer(enum glsl_base_type type)
type
==
GLSL_TYPE_IMAGE
;
}
static
inline
unsigned
int
glsl_base_type_get_bit_size
(
const
enum
glsl_base_type
base_type
)
{
switch
(
base_type
)
{
case
GLSL_TYPE_BOOL
:
return
1
;
case
GLSL_TYPE_INT
:
case
GLSL_TYPE_UINT
:
case
GLSL_TYPE_FLOAT
:
/* TODO handle mediump */
case
GLSL_TYPE_SUBROUTINE
:
return
32
;
case
GLSL_TYPE_FLOAT16
:
case
GLSL_TYPE_UINT16
:
case
GLSL_TYPE_INT16
:
return
16
;
case
GLSL_TYPE_UINT8
:
case
GLSL_TYPE_INT8
:
return
8
;
case
GLSL_TYPE_DOUBLE
:
case
GLSL_TYPE_INT64
:
case
GLSL_TYPE_UINT64
:
case
GLSL_TYPE_IMAGE
:
case
GLSL_TYPE_SAMPLER
:
return
64
;
default:
unreachable
(
"unknown base type"
);
}
return
0
;
}
enum
glsl_sampler_dim
{
GLSL_SAMPLER_DIM_1D
=
0
,
GLSL_SAMPLER_DIM_2D
,
...
...
src/compiler/nir/nir_deref.c
View file @
7b116821
...
...
@@ -215,7 +215,7 @@ nir_build_deref_offset(nir_builder *b, nir_deref_instr *deref,
unsigned
field_offset
=
struct_type_get_field_offset
(
parent
->
type
,
size_align
,
(
*
p
)
->
strct
.
index
);
nir_iadd
(
b
,
offset
,
nir_imm_int
(
b
,
field_offset
));
offset
=
nir_iadd
(
b
,
offset
,
nir_imm_int
(
b
,
field_offset
));
}
else
{
unreachable
(
"Unsupported deref type"
);
}
...
...
src/compiler/nir/nir_opcodes.py
View file @
7b116821
...
...
@@ -404,12 +404,21 @@ dst.x = dst.y = 0.0;
float absX = fabs(src0.x);
float absY = fabs(src0.y);
float absZ = fabs(src0.z);
if (src0.x >= 0 && absX >= absY && absX >= absZ) { dst.x = -src0.y; dst.y = -src0.z; }
if (src0.x < 0 && absX >= absY && absX >= absZ) { dst.x = -src0.y; dst.y = src0.z; }
if (src0.y >= 0 && absY >= absX && absY >= absZ) { dst.x = src0.z; dst.y = src0.x; }
if (src0.y < 0 && absY >= absX && absY >= absZ) { dst.x = -src0.z; dst.y = src0.x; }
if (src0.z >= 0 && absZ >= absX && absZ >= absY) { dst.x = -src0.y; dst.y = src0.x; }
if (src0.z < 0 && absZ >= absX && absZ >= absY) { dst.x = -src0.y; dst.y = -src0.x; }
float ma = 0.0;
if (absX >= absY && absX >= absZ) { ma = 2 * src0.x; }
if (absY >= absX && absY >= absZ) { ma = 2 * src0.y; }
if (absZ >= absX && absZ >= absY) { ma = 2 * src0.z; }
if (src0.x >= 0 && absX >= absY && absX >= absZ) { dst.x = -src0.z; dst.y = -src0.y; }
if (src0.x < 0 && absX >= absY && absX >= absZ) { dst.x = src0.z; dst.y = -src0.y; }
if (src0.y >= 0 && absY >= absX && absY >= absZ) { dst.x = src0.x; dst.y = src0.z; }
if (src0.y < 0 && absY >= absX && absY >= absZ) { dst.x = src0.x; dst.y = -src0.z; }
if (src0.z >= 0 && absZ >= absX && absZ >= absY) { dst.x = src0.x; dst.y = -src0.y; }
if (src0.z < 0 && absZ >= absX && absZ >= absY) { dst.x = -src0.x; dst.y = -src0.y; }
dst.x = dst.x / ma + 0.5;
dst.y = dst.y / ma + 0.5;
"""
)
unop_horiz
(
"
cube_face_index
"
,
1
,
tfloat32
,
3
,
tfloat32
,
"""
...
...
src/compiler/nir_types.h
View file @
7b116821
...
...
@@ -97,37 +97,7 @@ unsigned glsl_atomic_size(const struct glsl_type *type);
static
inline
unsigned
glsl_get_bit_size
(
const
struct
glsl_type
*
type
)
{
switch
(
glsl_get_base_type
(
type
))
{
case
GLSL_TYPE_BOOL
:
return
1
;
case
GLSL_TYPE_INT
:
case
GLSL_TYPE_UINT
:
case
GLSL_TYPE_FLOAT
:
/* TODO handle mediump */
case
GLSL_TYPE_SUBROUTINE
:
return
32
;
case
GLSL_TYPE_FLOAT16
:
case
GLSL_TYPE_UINT16
:
case
GLSL_TYPE_INT16
:
return
16
;
case
GLSL_TYPE_UINT8
:
case
GLSL_TYPE_INT8
:
return
8
;
case
GLSL_TYPE_DOUBLE
:
case
GLSL_TYPE_INT64
:
case
GLSL_TYPE_UINT64
:
case
GLSL_TYPE_IMAGE
:
case
GLSL_TYPE_SAMPLER
:
return
64
;
default:
unreachable
(
"unknown base type"
);
}
return
0
;
return
glsl_base_type_get_bit_size
(
glsl_get_base_type
(
type
));
}
bool
glsl_type_is_16bit
(
const
struct
glsl_type
*
type
);
...
...
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
View file @
7b116821
...
...
@@ -556,11 +556,11 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
llvm
::
SmallVector
<
std
::
string
,
16
>
MAttrs
;
#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
#if HAVE_LLVM >= 0x0400
/*
llvm-3.7+
implements sys::getHostCPUFeatures for x86,
*
which allows us to enable/disable code generation ba
se
d
*
on the results of cpuid
.
#if
HAVE_LLVM >= 0x0400 && (
defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
|| defined(PIPE_ARCH_ARM))
/* llvm-3.3+ implements sys::getHostCPUFeatures for Arm
* and
llvm-3.7+
for x86, which allows us to enable/disable
*
code generation based on the results of cpuid on the
se
*
architectures
.
*/
llvm
::
StringMap
<
bool
>
features
;
llvm
::
sys
::
getHostCPUFeatures
(
features
);
...
...
@@ -570,7 +570,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
++
f
)
{
MAttrs
.
push_back
(((
*
f
).
second
?
"+"
:
"-"
)
+
(
*
f
).
first
().
str
());
}
#el
se
#el
if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
/*
* We need to unset attributes because sometimes LLVM mistakenly assumes
* certain features are present given the processor name.
...
...
@@ -625,6 +625,12 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
MAttrs
.
push_back
(
"-avx512vl"
);
#endif
#endif
#if defined(PIPE_ARCH_ARM)
if
(
!
util_cpu_caps
.
has_neon
)
{
MAttrs
.
push_back
(
"-neon"
);
MAttrs
.
push_back
(
"-crypto"
);
MAttrs
.
push_back
(
"-vfp2"
);
}
#endif
#if defined(PIPE_ARCH_PPC)
...
...
Prev
1
2
Next