iris: blorp URB

This commit is contained in:
Kenneth Graunke 2018-04-23 13:26:06 -07:00
parent 01fe6df0ed
commit 0e3870b9de

View file

@ -26,6 +26,7 @@
#include "iris_resource.h"
#include "iris_context.h"
#include "intel/common/gen_l3_config.h"
#include "blorp/blorp_genX_exec.h"
#include "util/u_upload_mgr.h"
@ -218,13 +219,28 @@ blorp_emit_urb_config(struct blorp_batch *blorp_batch,
unsigned vs_entry_size,
UNUSED unsigned sf_entry_size)
{
// XXX: URB...
#if 0
if (ice->urb.vsize >= vs_entry_size)
return;
struct iris_context *ice = blorp_batch->blorp->driver_ctx;
struct iris_batch *batch = blorp_batch->driver_batch;
const struct gen_device_info *devinfo = &batch->screen->devinfo;
gen7_upload_urb(ice, vs_entry_size, false, false);
#endif
// XXX: Track last URB config and avoid re-emitting it if it's good enough
const unsigned push_size_kB = 32;
unsigned entries[4];
unsigned start[4];
unsigned size[4] = { vs_entry_size, 1, 1, 1 };
gen_get_urb_config(devinfo, 1024 * push_size_kB,
1024 * ice->shaders.urb_size,
false, false, size, entries, start);
for (int i = MESA_SHADER_VERTEX; i <= MESA_SHADER_GEOMETRY; i++) {
blorp_emit(blorp_batch, GENX(3DSTATE_URB_VS), urb) {
urb._3DCommandSubOpcode += i;
urb.VSURBStartingAddress = start[i];
urb.VSURBEntryAllocationSize = size[i] - 1;
urb.VSNumberofURBEntries = entries[i];
}
}
}
static void