iris: blorp URB
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user