i965/fs: Handle !supports_pull_constants and push UBOs properly
authorJason Ekstrand <jason.ekstrand@intel.com>
Sun, 3 Dec 2017 06:34:47 +0000 (22:34 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 8 Dec 2017 23:43:25 +0000 (15:43 -0800)
In Vulkan, we don't support classic pull constants and everything the
client asks us to push, we push.  However, for pushed UBOs, we still
want to fall back to conventional pulls if we run out of space.

src/intel/compiler/brw_fs.cpp

index fd51cace752ae27a3167d7108bdc046374be5468..0e3ab381fa65d226b2614038760d5b195b730bad 100644 (file)
@@ -2155,7 +2155,7 @@ fs_visitor::assign_constant_locations()
 
       unsigned push_start_align = cplx_align_apply(align, num_push_constants);
       unsigned chunk_size = u - chunk_start + 1;
-      if (!compiler->supports_pull_constants ||
+      if ((!compiler->supports_pull_constants && u < UBO_START) ||
           (chunk_size < max_chunk_size &&
            push_start_align + chunk_size <= max_push_components)) {
          /* Align up the number of push constants */